Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build_testnet_mainnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ jobs:
uses: PaulHatch/semantic-version@v5.4.0
with:
tag_prefix: "v"
major_pattern: "(MAJOR)"
minor_pattern: "(feat|feature)"
major_pattern: "/MAJOR/"
minor_pattern: "/feat:/"
Comment on lines +27 to +28
version_format: "${major}.${minor}.${patch}"

build:
Expand Down
222 changes: 111 additions & 111 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,114 +7,114 @@ on:
# - main

jobs:
generate-version:
name: Generate Semantic Version
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
version_tag: ${{ steps.version.outputs.version_tag }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Generate Semantic Version
id: version
uses: PaulHatch/semantic-version@v5.4.0
with:
tag_prefix: 'v'
major_pattern: '(MAJOR)'
minor_pattern: '(feat|feature)'
version_format: '${major}.${minor}.${patch}'

install-dependencies:
name: Install Dependencies
runs-on: ubuntu-latest
needs: generate-version
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'npm'

- name: Install dependencies
run: npm install

- name: Cache node_modules
uses: actions/cache@v4
with:
path: node_modules
key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
restore-keys: npm-${{ runner.os }}-

build:
name: Build Next.js App
runs-on: ubuntu-latest
needs: [install-dependencies, generate-version]
strategy:
matrix:
network: [devnet, testnet, mainnet]
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Restore node_modules cache
uses: actions/cache@v4
with:
path: node_modules
key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
restore-keys: npm-${{ runner.os }}-

- name: Build Next.js App app for ${{ matrix.network }}
run: npm run build:${{ matrix.network }}
env:
NODE_ENV: production
MORALIS_API_KEY: ${{ secrets.MORALIS_API_KEY }}
ALCHEMY_API_KEY: ${{ secrets.ALCHEMY_API_KEY }}
NEXT_PUBLIC_APP_VERSION: ${{ needs.generate-version.outputs.version }}

- name: Copy required assets
run: |
cp -r .next/static .next/standalone/.next/static
cp -r public .next/standalone/public

- name: Archive standalone build
run: zip -r ratio1-explorer-${{ matrix.network }}.zip .next/standalone

- name: Upload Build as Artifact
uses: actions/upload-artifact@v4
with:
name: ratio1-explorer-${{ matrix.network }}
path: ratio1-explorer-${{ matrix.network }}.zip

release:
name: Create GitHub Release
runs-on: ubuntu-latest
needs: [build, generate-version]
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Download All Artifacts
uses: actions/download-artifact@v4
with:
path: builds

- name: List downloaded files
run: ls -R builds

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.generate-version.outputs.version_tag }}
name: v${{ needs.generate-version.outputs.version }}
draft: false
prerelease: false
files: builds/**/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
generate-version:
name: Generate Semantic Version
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
version_tag: ${{ steps.version.outputs.version_tag }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Generate Semantic Version
id: version
uses: PaulHatch/semantic-version@v5.4.0
with:
tag_prefix: "v"
major_pattern: "/MAJOR/"
minor_pattern: "/feat:/"
Comment on lines +27 to +28
version_format: "${major}.${minor}.${patch}"

install-dependencies:
name: Install Dependencies
runs-on: ubuntu-latest
needs: generate-version
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 18
cache: "npm"

- name: Install dependencies
run: npm install

- name: Cache node_modules
uses: actions/cache@v4
with:
path: node_modules
key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
restore-keys: npm-${{ runner.os }}-

build:
name: Build Next.js App
runs-on: ubuntu-latest
needs: [install-dependencies, generate-version]
strategy:
matrix:
network: [devnet, testnet, mainnet]
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Restore node_modules cache
uses: actions/cache@v4
with:
path: node_modules
key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
restore-keys: npm-${{ runner.os }}-

- name: Build Next.js App app for ${{ matrix.network }}
run: npm run build:${{ matrix.network }}
env:
NODE_ENV: production
MORALIS_API_KEY: ${{ secrets.MORALIS_API_KEY }}
ALCHEMY_API_KEY: ${{ secrets.ALCHEMY_API_KEY }}
NEXT_PUBLIC_APP_VERSION: ${{ needs.generate-version.outputs.version }}

- name: Copy required assets
run: |
cp -r .next/static .next/standalone/.next/static
cp -r public .next/standalone/public

- name: Archive standalone build
run: zip -r ratio1-explorer-${{ matrix.network }}.zip .next/standalone

- name: Upload Build as Artifact
uses: actions/upload-artifact@v4
with:
name: ratio1-explorer-${{ matrix.network }}
path: ratio1-explorer-${{ matrix.network }}.zip

release:
name: Create GitHub Release
runs-on: ubuntu-latest
needs: [build, generate-version]
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Download All Artifacts
uses: actions/download-artifact@v4
with:
path: builds

- name: List downloaded files
run: ls -R builds

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.generate-version.outputs.version_tag }}
name: v${{ needs.generate-version.outputs.version }}
draft: false
prerelease: false
files: builds/**/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4 changes: 4 additions & 0 deletions app/server-components/CPSs/CSPCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ export default async function CSPCard({ csp }: { csp: types.CSP }) {
<CardItem label="Escrow SC. Address" value={<CopyableAddress value={csp.escrowAddress} size={4} />} />
</div>

<div className="flex min-w-[80px]">
<CardItem label="CSP Level" value={csp.cspTier} />
</div>

<div className="flex min-w-[70px]">
<CardItem label="TVL" value={fBI(csp.tvl, 6)} />
</div>
Expand Down
1 change: 1 addition & 0 deletions app/server-components/CPSs/CSPsList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ export default async function CSPsList({ csps, currentPage }: { csps: readonly t
<ListHeader useFixedWidthSmall>
<div className="min-w-[280px]">Owner</div>
<div className="min-w-[130px]">Escrow Address</div>
<div className="min-w-[80px]">CSP Level</div>
<div className="min-w-[70px]">TVL ($USDC)</div>
<div className="min-w-[100px]">Active Jobs</div>
</ListHeader>
Expand Down
15 changes: 14 additions & 1 deletion app/server-components/SearchResultsList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export default function SearchResultsList({ results, variant, getSectionTitle, o
'rounded-xl border-2 border-slate-100 hover:border-slate-200 py-3': variant === 'search-page',
'-mx-4 py-2.5 hover:bg-slate-50': variant === 'modal',
});
const nodeAddressLabelClassName = 'w-14 text-xs font-semibold uppercase tracking-normal text-slate-400';

return (
<div className="col gap-4">
Expand Down Expand Up @@ -55,7 +56,19 @@ export default function SearchResultsList({ results, variant, getSectionTitle, o

<div className="col">
<div className="text-sm font-medium">{node.alias}</div>
<CopyableAddress value={node.nodeAddress} size={8} />
<div className="col gap-0.5">
<div className="row gap-2">
<div className={nodeAddressLabelClassName}>ETH</div>
<CopyableAddress value={node.nodeAddress} size={8} />
</div>

{!!node.internalAddress && (
<div className="row gap-2">
<div className={nodeAddressLabelClassName}>Internal</div>
<CopyableAddress value={node.internalAddress} size={8} />
</div>
)}
</div>
</div>
</div>
</Link>
Expand Down
4 changes: 3 additions & 1 deletion lib/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ export const search = async (
resultsArray.push({
type: 'node',
nodeAddress: nodeResponse.node_eth_address,
internalAddress: nodeResponse.node as types.R1Address,
alias: nodeResponse.node_alias,
isOnline: nodeResponse.node_is_online,
});
Comment on lines 87 to 93
Expand Down Expand Up @@ -148,10 +149,11 @@ export const search = async (
console.log('[Search] getActiveNodes', response);

if (response.result.nodes) {
Object.entries(response.result.nodes).forEach(([_ratio1Addr, node]) => {
Object.entries(response.result.nodes).forEach(([ratio1Addr, node]) => {
resultsArray.push({
type: 'node',
nodeAddress: node.eth_addr,
internalAddress: ratio1Addr as types.R1Address,
alias: node.alias,
isOnline: parseInt(node.last_seen_ago.split(':')[2]) < 60,
});
Expand Down
4 changes: 3 additions & 1 deletion lib/utils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,7 @@ export const clientSearch = async (
resultsArray.push({
type: 'node',
nodeAddress: nodeResponse.node_eth_address,
internalAddress: nodeResponse.node as types.R1Address,
alias: nodeResponse.node_alias,
isOnline: nodeResponse.node_is_online,
});
Comment on lines 256 to 262
Expand Down Expand Up @@ -317,10 +318,11 @@ export const clientSearch = async (
if (isLoggingEnabled) console.log('[Search] getActiveNodes', response);

if (response.result.nodes) {
Object.entries(response.result.nodes).forEach(([_ratio1Addr, node]) => {
Object.entries(response.result.nodes).forEach(([ratio1Addr, node]) => {
resultsArray.push({
type: 'node',
nodeAddress: node.eth_addr,
internalAddress: ratio1Addr as types.R1Address,
alias: node.alias,
isOnline: parseInt(node.last_seen_ago.split(':')[2]) < 60,
});
Expand Down
8 changes: 7 additions & 1 deletion typedefs/general.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,13 @@ type LicenseListItem = LicenseItem & {
};

type SearchResult =
| { type: 'node'; nodeAddress: types.EthAddress; alias: string; isOnline: boolean }
| {
type: 'node';
nodeAddress: types.EthAddress;
internalAddress?: types.R1Address;
alias: string;
isOnline: boolean;
}
| { type: 'license'; licenseId: number; licenseType: 'ND' | 'MND' | 'GND'; nodeAddress: types.EthAddress }
| { type: 'owner'; address: types.EthAddress; ensName?: string };

Expand Down
18 changes: 18 additions & 0 deletions typedefs/search-result-types.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import * as types from './blockchain';
import { SearchResult } from './general';

const ethAddress = '0x1111111111111111111111111111111111111111' as types.EthAddress;
const internalAddress = '0xai_11111111111111111111111111111111111111111111' as types.R1Address;

const nodeSearchResult: SearchResult = {
type: 'node',
nodeAddress: ethAddress,
internalAddress,
alias: 'smart0',
isOnline: true,
};

if (nodeSearchResult.type === 'node') {
const copiedAddress: types.R1Address | undefined = nodeSearchResult.internalAddress;
void copiedAddress;
}
Comment on lines +1 to +18
Loading