Merge branch 'master' into orangesurf/trademark0103

This commit is contained in:
nymkappa 2024-01-23 17:32:58 +01:00 committed by GitHub
commit 585732e438
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
49 changed files with 22732 additions and 9863 deletions

View File

@ -63,7 +63,96 @@ jobs:
run: npm run build run: npm run build
working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/backend working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/backend
cache:
name: "Cache assets for builds"
runs-on: "ubuntu-latest"
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: assets
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
registry-url: "https://registry.npmjs.org"
- name: Install (Prod dependencies only)
run: npm ci --omit=dev --omit=optional
working-directory: assets/frontend
- name: Restore cached mining pool assets
continue-on-error: true
id: cache-mining-pool-restore
uses: actions/cache/restore@v4
with:
path: |
mining-pool-assets.zip
key: mining-pool-assets-cache
- name: Restore promo video assets
continue-on-error: true
id: cache-promo-video-restore
uses: actions/cache/restore@v4
with:
path: |
promo-video-assets.zip
key: promo-video-assets-cache
- name: Unzip assets before building (src/resources)
continue-on-error: true
run: unzip -o mining-pool-assets.zip -d assets/frontend/src/resources/mining-pools
- name: Unzip assets before building (src/resources)
continue-on-error: true
run: unzip -o promo-video-assets.zip -d assets/frontend/src/resources/promo-video
# - name: Unzip assets before building (dist)
# continue-on-error: true
# run: unzip assets.zip -d assets/frontend/dist/mempool/browser/resources
- name: Sync-assets
run: npm run sync-assets-dev
working-directory: assets/frontend
- name: Zip mining-pool assets
run: zip -jrq mining-pool-assets.zip assets/frontend/src/resources/mining-pools/*
- name: Zip promo-video assets
run: zip -jrq promo-video-assets.zip assets/frontend/src/resources/promo-video/*
- name: Upload mining pool assets as artifact
uses: actions/upload-artifact@v4
with:
name: mining-pool-assets
path: mining-pool-assets.zip
- name: Upload promo video assets as artifact
uses: actions/upload-artifact@v4
with:
name: promo-video-assets
path: promo-video-assets.zip
- name: Save mining pool assets cache
id: cache-mining-pool-save
uses: actions/cache/save@v4
with:
path: |
mining-pool-assets.zip
key: mining-pool-assets-cache
- name: Save promo video assets cache
id: cache-promo-video-save
uses: actions/cache/save@v4
with:
path: |
promo-video-assets.zip
key: promo-video-assets-cache
frontend: frontend:
needs: cache
if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')" if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')"
strategy: strategy:
matrix: matrix:
@ -103,9 +192,141 @@ jobs:
# - name: Test # - name: Test
# run: npm run test # run: npm run test
- name: Restore cached mining pool assets
continue-on-error: true
id: cache-mining-pool-restore
uses: actions/cache/restore@v4
with:
path: |
mining-pool-assets.zip
key: mining-pool-assets-cache
- name: Restore promo video assets
continue-on-error: true
id: cache-promo-video-restore
uses: actions/cache/restore@v4
with:
path: |
promo-video-assets.zip
key: promo-video-assets-cache
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: mining-pool-assets
- name: Unzip assets before building (src/resources)
run: unzip -o mining-pool-assets.zip -d ${{ matrix.node }}/${{ matrix.flavor }}/frontend/src/resources/mining-pools
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: promo-video-assets
- name: Unzip assets before building (src/resources)
run: unzip -o promo-video-assets.zip -d ${{ matrix.node }}/${{ matrix.flavor }}/frontend/src/resources/promo-video
# - name: Unzip assets before building (dist)
# run: unzip assets.zip -d ${{ matrix.node }}/${{ matrix.flavor }}/frontend/dist/mempool/browser/resources
- name: Display resulting source tree
run: ls -R
- name: Build - name: Build
run: npm run build run: npm run build
working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/frontend working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/frontend
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
e2e:
if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')"
runs-on: "ubuntu-latest"
needs: frontend
strategy:
fail-fast: false
matrix:
# module: ["mempool", "liquid", "bisq"] Disabling bisq support for now
module: ["mempool", "liquid"]
include:
- module: "mempool"
spec: |
cypress/e2e/mainnet/*.spec.ts
cypress/e2e/signet/*.spec.ts
cypress/e2e/testnet/*.spec.ts
- module: "liquid"
spec: |
cypress/e2e/liquid/liquid.spec.ts
cypress/e2e/liquidtestnet/liquidtestnet.spec.ts
# - module: "bisq"
# spec: |
# cypress/e2e/bisq/bisq.spec.ts
name: E2E tests for ${{ matrix.module }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: ${{ matrix.module }}
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 20
cache: "npm"
cache-dependency-path: ${{ matrix.module }}/frontend/package-lock.json
- name: Restore cached mining pool assets
continue-on-error: true
id: cache-mining-pool-restore
uses: actions/cache/restore@v4
with:
path: |
mining-pool-assets.zip
key: mining-pool-assets-cache
- name: Restore cached promo video assets
continue-on-error: true
id: cache-promo-video-restore
uses: actions/cache/restore@v4
with:
path: |
promo-video-assets.zip
key: promo-video-assets-cache
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: mining-pool-assets
- name: Unzip assets before building (src/resources)
run: unzip -o mining-pool-assets.zip -d ${{ matrix.module }}/frontend/src/resources/mining-pools
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: promo-video-assets
- name: Unzip assets before building (src/resources)
run: unzip -o promo-video-assets.zip -d ${{ matrix.module }}/frontend/src/resources/promo-video
- name: Chrome browser tests (${{ matrix.module }})
uses: cypress-io/github-action@v5
with:
tag: ${{ github.event_name }}
working-directory: ${{ matrix.module }}/frontend
build: npm run config:defaults:${{ matrix.module }}
start: npm run start:local-staging
wait-on: "http://localhost:4200"
wait-on-timeout: 120
record: true
parallel: true
spec: ${{ matrix.spec }}
group: Tests on Chrome (${{ matrix.module }})
browser: "chrome"
ci-build-id: "${{ github.sha }}-${{ github.workflow }}-${{ github.event_name }}"
env:
COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }}
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}

View File

@ -1,64 +0,0 @@
name: Cypress Tests
on:
push:
branches: [master]
pull_request:
types: [opened, synchronize]
jobs:
cypress:
if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')"
runs-on: "ubuntu-latest"
strategy:
fail-fast: false
matrix:
module: ["mempool", "liquid", "bisq"]
include:
- module: "mempool"
spec: |
cypress/e2e/mainnet/*.spec.ts
cypress/e2e/signet/*.spec.ts
cypress/e2e/testnet/*.spec.ts
- module: "liquid"
spec: |
cypress/e2e/liquid/liquid.spec.ts
cypress/e2e/liquidtestnet/liquidtestnet.spec.ts
- module: "bisq"
spec: |
cypress/e2e/bisq/bisq.spec.ts
name: E2E tests for ${{ matrix.module }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: ${{ matrix.module }}
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 20
cache: "npm"
cache-dependency-path: ${{ matrix.module }}/frontend/package-lock.json
- name: Chrome browser tests (${{ matrix.module }})
uses: cypress-io/github-action@v5
with:
tag: ${{ github.event_name }}
working-directory: ${{ matrix.module }}/frontend
build: npm run config:defaults:${{ matrix.module }}
start: npm run start:local-staging
wait-on: "http://localhost:4200"
wait-on-timeout: 120
record: true
parallel: true
spec: ${{ matrix.spec }}
group: Tests on Chrome (${{ matrix.module }})
browser: "chrome"
ci-build-id: "${{ github.sha }}-${{ github.workflow }}-${{ github.event_name }}"
env:
COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }}
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}

3
contributors/isghe.txt Normal file
View File

@ -0,0 +1,3 @@
I hereby accept the terms of the Contributor License Agreement in the CONTRIBUTING.md file of the mempool/mempool git repository as of January 18, 2024.
Signed: isghe

View File

@ -405,7 +405,7 @@
<div class="copyright"> <div class="copyright">
<div class="title"> <div class="title">
Copyright &copy; 2019-2023<br> Copyright &copy; 2019-2024<br>
Mempool Space K.K.<br> Mempool Space K.K.<br>
and other shadowy super-coders and other shadowy super-coders
</div> </div>

View File

@ -66,7 +66,7 @@ export class AccelerationFeesGraphComponent implements OnInit, OnDestroy {
} }
ngOnInit(): void { ngOnInit(): void {
this.seoService.setTitle($localize`:@@6c453b11fd7bd159ae30bc381f367bc736d86909:Acceleration Fees`); this.seoService.setTitle($localize`:@@bcf34abc2d9ed8f45a2f65dd464c46694e9a181e:Acceleration Fees`);
this.isLoading = true; this.isLoading = true;
if (this.widget) { if (this.widget) {
this.miningWindowPreference = '1m'; this.miningWindowPreference = '1m';

View File

@ -17,7 +17,7 @@
</div> </div>
</div> </div>
<div class="item"> <div class="item">
<h5 class="card-title" i18n="accelerator.success-rate">Success rate</h5> <h5 class="card-title" i18n="accelerator.success-rate">Success Rate</h5>
<div class="card-text"> <div class="card-text">
<div>{{ stats.successRate.toFixed(2) }} %</div> <div>{{ stats.successRate.toFixed(2) }} %</div>
<div class="symbol" i18n="accelerator.mined-next-block">mined</div> <div class="symbol" i18n="accelerator.mined-next-block">mined</div>
@ -43,7 +43,7 @@
</div> </div>
</div> </div>
<div class="item"> <div class="item">
<h5 class="card-title" i18n="accelerator.success-rate">Success rate</h5> <h5 class="card-title" i18n="accelerator.success-rate">Success Rate</h5>
<div class="card-text"> <div class="card-text">
<div class="skeleton-loader"></div> <div class="skeleton-loader"></div>
<div class="skeleton-loader"></div> <div class="skeleton-loader"></div>

View File

@ -7,7 +7,7 @@
<!-- pending stats --> <!-- pending stats -->
<div class="col"> <div class="col">
<div class="main-title"> <div class="main-title">
<span [attr.data-cy]="'pending-accelerations'" i18n="accelerator.pending-accelerations">Active accelerations</span> <span [attr.data-cy]="'pending-accelerations'" i18n="accelerator.pending-accelerations">Active Accelerations</span>
</div> </div>
<div class="card-wrapper"> <div class="card-wrapper">
<div class="card"> <div class="card">
@ -69,7 +69,7 @@
<div class="card list-card"> <div class="card list-card">
<div class="card-body"> <div class="card-body">
<div class="title-link"> <div class="title-link">
<h5 class="card-title d-inline" i18n="dashboard.recent-accelerations">Active Accelerations</h5> <h5 class="card-title d-inline" i18n="accelerator.pending-accelerations">Active Accelerations</h5>
</div> </div>
<app-accelerations-list [attr.data-cy]="'pending-accelerations'" [widget]=true [pending]="true" [accelerations$]="pendingAccelerations$"></app-accelerations-list> <app-accelerations-list [attr.data-cy]="'pending-accelerations'" [widget]=true [pending]="true" [accelerations$]="pendingAccelerations$"></app-accelerations-list>
</div> </div>

View File

@ -17,7 +17,7 @@
</div> </div>
</div> </div>
<div class="item"> <div class="item">
<h5 class="card-title" i18n="accelerator.total-vsize">Total vsize</h5> <h5 class="card-title" i18n="accelerator.total-vsize">Total Vsize</h5>
<div class="card-text"> <div class="card-text">
<div [innerHTML]="'&lrm;' + (stats.totalVsize * 4 | vbytes: 2)"></div> <div [innerHTML]="'&lrm;' + (stats.totalVsize * 4 | vbytes: 2)"></div>
<div class="symbol">{{ (stats.totalVsize / 1_000_000 * 100).toFixed(2) }}% <span i18n="accelerator.percent-of-next-block"> of next block</span></div> <div class="symbol">{{ (stats.totalVsize / 1_000_000 * 100).toFixed(2) }}% <span i18n="accelerator.percent-of-next-block"> of next block</span></div>
@ -43,7 +43,7 @@
</div> </div>
</div> </div>
<div class="item"> <div class="item">
<h5 class="card-title" i18n="accelerator.total-vsize">Total vsize</h5> <h5 class="card-title" i18n="accelerator.total-vsize">Total Vsize</h5>
<div class="card-text"> <div class="card-text">
<div class="skeleton-loader"></div> <div class="skeleton-loader"></div>
<div class="skeleton-loader"></div> <div class="skeleton-loader"></div>

View File

@ -53,7 +53,7 @@
<a class="nav-link" [routerLink]="['/' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'tachometer-alt']" [fixedWidth]="true" i18n-title="master-page.dashboard" title="Dashboard"></fa-icon></a> <a class="nav-link" [routerLink]="['/' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'tachometer-alt']" [fixedWidth]="true" i18n-title="master-page.dashboard" title="Dashboard"></fa-icon></a>
</li> </li>
<li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-home" *ngIf="stateService.env.ACCELERATOR"> <li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-home" *ngIf="stateService.env.ACCELERATOR">
<a class="nav-link" [routerLink]="['/acceleration' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'rocket']" [fixedWidth]="true" i18n-title="master-page.acceleration-dashboard" title="Acceleration Dashboard"></fa-icon></a> <a class="nav-link" [routerLink]="['/acceleration' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'rocket']" [fixedWidth]="true" i18n-title="master-page.accelerator-dashboard" title="Accelerator Dashboard"></fa-icon></a>
</li> </li>
<li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-pools" *ngIf="stateService.env.MINING_DASHBOARD"> <li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-pools" *ngIf="stateService.env.MINING_DASHBOARD">
<a class="nav-link" [routerLink]="['/mining' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'hammer']" [fixedWidth]="true" i18n-title="mining.mining-dashboard" title="Mining Dashboard"></fa-icon></a> <a class="nav-link" [routerLink]="['/mining' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'hammer']" [fixedWidth]="true" i18n-title="mining.mining-dashboard" title="Mining Dashboard"></fa-icon></a>

View File

@ -1,15 +1,11 @@
:host ::ng-deep { :host ::ng-deep {
.dropdown-item { .dropdown-item {
white-space: nowrap; white-space: nowrap;
width: calc(100% - 34px);
} }
.dropdown-menu { .dropdown-menu {
width: calc(100% - 34px); width: calc(100% - 34px);
} }
@media (min-width: 768px) { @media (min-width: 768px) {
.dropdown-item {
width: 410px;
}
.dropdown-menu { .dropdown-menu {
width: 410px; width: 410px;
} }

View File

@ -170,6 +170,7 @@ export class SearchFormComponent implements OnInit {
addresses: [], addresses: [],
nodes: [], nodes: [],
channels: [], channels: [],
liquidAsset: [],
}; };
} }
@ -187,6 +188,7 @@ export class SearchFormComponent implements OnInit {
const matchesBlockHash = this.regexBlockhash.test(searchText); const matchesBlockHash = this.regexBlockhash.test(searchText);
let matchesAddress = !matchesTxId && this.regexAddress.test(searchText); let matchesAddress = !matchesTxId && this.regexAddress.test(searchText);
const otherNetworks = findOtherNetworks(searchText, this.network as any || 'mainnet', this.env); const otherNetworks = findOtherNetworks(searchText, this.network as any || 'mainnet', this.env);
const liquidAsset = this.assets ? (this.assets[searchText] || []) : [];
// Add B prefix to addresses in Bisq network // Add B prefix to addresses in Bisq network
if (!matchesAddress && this.network === 'bisq' && getRegex('address', 'mainnet').test(searchText)) { if (!matchesAddress && this.network === 'bisq' && getRegex('address', 'mainnet').test(searchText)) {
@ -211,6 +213,7 @@ export class SearchFormComponent implements OnInit {
otherNetworks: otherNetworks, otherNetworks: otherNetworks,
nodes: lightningResults.nodes, nodes: lightningResults.nodes,
channels: lightningResults.channels, channels: lightningResults.channels,
liquidAsset: liquidAsset,
}; };
}) })
); );
@ -259,16 +262,16 @@ export class SearchFormComponent implements OnInit {
} else if (this.regexTransaction.test(searchText)) { } else if (this.regexTransaction.test(searchText)) {
const matches = this.regexTransaction.exec(searchText); const matches = this.regexTransaction.exec(searchText);
if (this.network === 'liquid' || this.network === 'liquidtestnet') { if (this.network === 'liquid' || this.network === 'liquidtestnet') {
if (this.assets[matches[1]]) { if (this.assets[matches[0]]) {
this.navigate('/assets/asset/', matches[1]); this.navigate('/assets/asset/', matches[0]);
} }
this.electrsApiService.getAsset$(matches[1]) this.electrsApiService.getAsset$(matches[0])
.subscribe( .subscribe(
() => { this.navigate('/assets/asset/', matches[1]); }, () => { this.navigate('/assets/asset/', matches[0]); },
() => { () => {
this.electrsApiService.getBlock$(matches[1]) this.electrsApiService.getBlock$(matches[0])
.subscribe( .subscribe(
(block) => { this.navigate('/block/', matches[1], { state: { data: { block } } }); }, (block) => { this.navigate('/block/', matches[0], { state: { data: { block } } }); },
() => { this.navigate('/tx/', matches[0]); }); () => { this.navigate('/tx/', matches[0]); });
} }
); );

View File

@ -1,6 +1,6 @@
<div class="dropdown-menu show" *ngIf="results" [hidden]="!results.hashQuickMatch && !results.otherNetworks.length && !results.addresses.length && !results.nodes.length && !results.channels.length"> <div class="dropdown-menu show" *ngIf="results" [hidden]="!results.hashQuickMatch && !results.otherNetworks.length && !results.addresses.length && !results.nodes.length && !results.channels.length && !results.liquidAsset.length">
<ng-template [ngIf]="results.blockHeight"> <ng-template [ngIf]="results.blockHeight">
<div class="card-title" i18n="search.bitcoin-block-height">Bitcoin Block Height</div> <div class="card-title" i18n="search.bitcoin-block-height">{{ networkName }} Block Height</div>
<button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item"> <button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item">
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText }"></ng-container> <ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText }"></ng-container>
</button> </button>
@ -17,20 +17,20 @@
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText }"></ng-container> <ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText }"></ng-container>
</button> </button>
</ng-template> </ng-template>
<ng-template [ngIf]="results.txId"> <ng-template [ngIf]="results.txId && !results.liquidAsset.length">
<div class="card-title" i18n="search.bitcoin-transaction">Bitcoin Transaction</div> <div class="card-title" i18n="search.bitcoin-transaction">{{ networkName }} Transaction</div>
<button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item"> <button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item">
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText | shortenString : 13 }"></ng-container> <ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText | shortenString : 13 }"></ng-container>
</button> </button>
</ng-template> </ng-template>
<ng-template [ngIf]="results.address"> <ng-template [ngIf]="results.address">
<div class="card-title" i18n="search.bitcoin-address">Bitcoin Address</div> <div class="card-title" i18n="search.bitcoin-address">{{ networkName }} Address</div>
<button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item"> <button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item">
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText | shortenString : isMobile ? 20 : 30 }"></ng-container> <ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText | shortenString : isMobile ? 17 : 30 }"></ng-container>
</button> </button>
</ng-template> </ng-template>
<ng-template [ngIf]="results.blockHash"> <ng-template [ngIf]="results.blockHash">
<div class="card-title" i18n="search.bitcoin-block">Bitcoin Block</div> <div class="card-title" i18n="search.bitcoin-block">{{ networkName }} Block</div>
<button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item"> <button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item">
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText | shortenString : 13 }"></ng-container> <ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText | shortenString : 13 }"></ng-container>
</button> </button>
@ -39,12 +39,12 @@
<div class="card-title danger" i18n="search.other-networks">Other Network Address</div> <div class="card-title danger" i18n="search.other-networks">Other Network Address</div>
<ng-template ngFor [ngForOf]="results.otherNetworks" let-otherNetwork let-i="index"> <ng-template ngFor [ngForOf]="results.otherNetworks" let-otherNetwork let-i="index">
<button (click)="clickItem(results.hashQuickMatch + i)" [class.active]="(results.hashQuickMatch + i) === activeIdx" [class.inactive]="!otherNetwork.isNetworkAvailable" type="button" role="option" class="dropdown-item"> <button (click)="clickItem(results.hashQuickMatch + i)" [class.active]="(results.hashQuickMatch + i) === activeIdx" [class.inactive]="!otherNetwork.isNetworkAvailable" type="button" role="option" class="dropdown-item">
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: otherNetwork.address| shortenString : isMobile ? 20 : 25 }"></ng-container>&nbsp;<b>({{ otherNetwork.network.charAt(0).toUpperCase() + otherNetwork.network.slice(1) }})</b> <ng-container *ngTemplateOutlet="goTo; context: { $implicit: otherNetwork.address| shortenString : isMobile ? 12 : 20 }"></ng-container>&nbsp;<b>({{ otherNetwork.network.charAt(0).toUpperCase() + otherNetwork.network.slice(1) }})</b>
</button> </button>
</ng-template> </ng-template>
</ng-template> </ng-template>
<ng-template [ngIf]="results.addresses.length"> <ng-template [ngIf]="results.addresses.length">
<div class="card-title" i18n="search.bitcoin-addresses">Bitcoin Addresses</div> <div class="card-title" i18n="search.bitcoin-addresses">{{ networkName }} Addresses</div>
<ng-template ngFor [ngForOf]="results.addresses" let-address let-i="index"> <ng-template ngFor [ngForOf]="results.addresses" let-address let-i="index">
<button (click)="clickItem(results.hashQuickMatch + results.otherNetworks.length + i)" [class.active]="(results.hashQuickMatch + results.otherNetworks.length + i) === activeIdx" type="button" role="option" class="dropdown-item"> <button (click)="clickItem(results.hashQuickMatch + results.otherNetworks.length + i)" [class.active]="(results.hashQuickMatch + results.otherNetworks.length + i) === activeIdx" type="button" role="option" class="dropdown-item">
<ngb-highlight [result]="address | shortenString : isMobile ? 25 : 36" [term]="results.searchText"></ngb-highlight> <ngb-highlight [result]="address | shortenString : isMobile ? 25 : 36" [term]="results.searchText"></ngb-highlight>
@ -67,6 +67,12 @@
</button> </button>
</ng-template> </ng-template>
</ng-template> </ng-template>
<ng-template [ngIf]="results.liquidAsset.length">
<div class="card-title" i18n="search.liquid-asset">Liquid Asset</div>
<button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item">
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText | shortenString : 11 }"></ng-container>&nbsp;<b>({{ results.liquidAsset[1] }})</b>
</button>
</ng-template>
</div> </div>
<ng-template #goTo let-x i18n="search.go-to">Go to "{{ x }}"</ng-template> <ng-template #goTo let-x i18n="search.go-to">Go to "{{ x }}"</ng-template>

View File

@ -10,15 +10,20 @@ export class SearchResultsComponent implements OnChanges {
@Input() results: any = {}; @Input() results: any = {};
@Output() selectedResult = new EventEmitter(); @Output() selectedResult = new EventEmitter();
isMobile = (window.innerWidth <= 767.98); isMobile = (window.innerWidth <= 1150);
resultsFlattened = []; resultsFlattened = [];
activeIdx = 0; activeIdx = 0;
focusFirst = true; focusFirst = true;
networkName = '';
constructor( constructor(
public stateService: StateService, public stateService: StateService,
) { } ) { }
ngOnInit() {
this.networkName = this.stateService.network.charAt(0).toUpperCase() + this.stateService.network.slice(1);
}
ngOnChanges() { ngOnChanges() {
this.activeIdx = 0; this.activeIdx = 0;
if (this.results) { if (this.results) {

View File

@ -299,7 +299,7 @@
<td [innerHTML]="'&lrm;' + (tx.weight / 4 | vbytes: 2)"></td> <td [innerHTML]="'&lrm;' + (tx.weight / 4 | vbytes: 2)"></td>
</tr> </tr>
<tr *ngIf="adjustedVsize != null"> <tr *ngIf="adjustedVsize != null">
<td i18n="transaction.adjusted-vsize|Transaction Adjusted VSize">Adjusted vsize <td><ng-template i18n="transaction.adjusted-vsize|Transaction Adjusted VSize">Adjusted vsize</ng-template>
<a class="info-link" [routerLink]="['/docs/faq/' | relativeUrl]" fragment="what-is-adjusted-vsize"> <a class="info-link" [routerLink]="['/docs/faq/' | relativeUrl]" fragment="what-is-adjusted-vsize">
<fa-icon [icon]="['fas', 'info-circle']" [fixedWidth]="true"></fa-icon> <fa-icon [icon]="['fas', 'info-circle']" [fixedWidth]="true"></fa-icon>
</a> </a>
@ -325,7 +325,7 @@
<td [innerHTML]="'&lrm;' + (tx.locktime | number)"></td> <td [innerHTML]="'&lrm;' + (tx.locktime | number)"></td>
</tr> </tr>
<tr *ngIf="sigops != null"> <tr *ngIf="sigops != null">
<td i18n="transaction.sigops|Transaction Sigops">Sigops <td><ng-template i18n="transaction.sigops|Transaction Sigops">Sigops</ng-template>
<a class="info-link" [routerLink]="['/docs/faq/' | relativeUrl]" fragment="what-are-sigops"> <a class="info-link" [routerLink]="['/docs/faq/' | relativeUrl]" fragment="what-are-sigops">
<fa-icon [icon]="['fas', 'info-circle']" [fixedWidth]="true"></fa-icon> <fa-icon [icon]="['fas', 'info-circle']" [fixedWidth]="true"></fa-icon>
</a> </a>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1661,6 +1661,10 @@
<context context-type="sourcefile">src/app/components/acceleration/acceleration-fees-graph/acceleration-fees-graph.component.html</context> <context context-type="sourcefile">src/app/components/acceleration/acceleration-fees-graph/acceleration-fees-graph.component.html</context>
<context context-type="linenumber">6</context> <context context-type="linenumber">6</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/acceleration/acceleration-fees-graph/acceleration-fees-graph.component.ts</context>
<context context-type="linenumber">69</context>
</context-group>
<note priority="1" from="description">accelerator.acceleration-fees</note> <note priority="1" from="description">accelerator.acceleration-fees</note>
</trans-unit> </trans-unit>
<trans-unit id="bdb8bbb38e4ca3c73e19dc4167fbe4aec316f818" datatype="html"> <trans-unit id="bdb8bbb38e4ca3c73e19dc4167fbe4aec316f818" datatype="html">
@ -1679,25 +1683,6 @@
</context-group> </context-group>
<note priority="1" from="description">acceleration.total-bid-boost</note> <note priority="1" from="description">acceleration.total-bid-boost</note>
</trans-unit> </trans-unit>
<trans-unit id="6c453b11fd7bd159ae30bc381f367bc736d86909" datatype="html">
<source>Acceleration Fees</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/acceleration/acceleration-fees-graph/acceleration-fees-graph.component.ts</context>
<context context-type="linenumber">69</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-fees-graph/block-fees-graph.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-fees-graph/block-fees-graph.component.ts</context>
<context context-type="linenumber">67</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">19</context>
</context-group>
</trans-unit>
<trans-unit id="4793828002882320882" datatype="html"> <trans-unit id="4793828002882320882" datatype="html">
<source>At block: <x id="PH" equiv-text="data[0].data[2]"/></source> <source>At block: <x id="PH" equiv-text="data[0].data[2]"/></source>
<context-group purpose="location"> <context-group purpose="location">
@ -1777,8 +1762,8 @@
<note priority="1" from="description">BTC</note> <note priority="1" from="description">BTC</note>
<note priority="1" from="meaning">shared.btc</note> <note priority="1" from="meaning">shared.btc</note>
</trans-unit> </trans-unit>
<trans-unit id="4e0fbac5ba55cf78f1accbaf9c871fb23b4b67d9" datatype="html"> <trans-unit id="599dec71fe5c264d05012c7f64080d6347c1dc49" datatype="html">
<source>Success rate</source> <source>Success Rate</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/acceleration/acceleration-stats/acceleration-stats.component.html</context> <context context-type="sourcefile">src/app/components/acceleration/acceleration-stats/acceleration-stats.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">20</context>
@ -1941,12 +1926,16 @@
</context-group> </context-group>
<note priority="1" from="description">accelerations.no-accelerations</note> <note priority="1" from="description">accelerations.no-accelerations</note>
</trans-unit> </trans-unit>
<trans-unit id="8adc22d4ccfd987ce3e2c1c86d0ccae17d281328" datatype="html"> <trans-unit id="e51c45c636401f8bb3bd8cfd1ed5a3c9810c5fa8" datatype="html">
<source>Active accelerations</source> <source>Active Accelerations</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/acceleration/accelerator-dashboard/accelerator-dashboard.component.html</context> <context context-type="sourcefile">src/app/components/acceleration/accelerator-dashboard/accelerator-dashboard.component.html</context>
<context context-type="linenumber">10</context> <context context-type="linenumber">10</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/acceleration/accelerator-dashboard/accelerator-dashboard.component.html</context>
<context context-type="linenumber">72</context>
</context-group>
<note priority="1" from="description">accelerator.pending-accelerations</note> <note priority="1" from="description">accelerator.pending-accelerations</note>
</trans-unit> </trans-unit>
<trans-unit id="41a9456b7e195dfc4df3d67b09940bda160882af" datatype="html"> <trans-unit id="41a9456b7e195dfc4df3d67b09940bda160882af" datatype="html">
@ -1965,14 +1954,6 @@
</context-group> </context-group>
<note priority="1" from="description">mining.144-blocks</note> <note priority="1" from="description">mining.144-blocks</note>
</trans-unit> </trans-unit>
<trans-unit id="e51c45c636401f8bb3bd8cfd1ed5a3c9810c5fa8" datatype="html">
<source>Active Accelerations</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/acceleration/accelerator-dashboard/accelerator-dashboard.component.html</context>
<context context-type="linenumber">72</context>
</context-group>
<note priority="1" from="description">dashboard.recent-accelerations</note>
</trans-unit>
<trans-unit id="f0ae1220633178276128371f3965fb53d63581d4" datatype="html"> <trans-unit id="f0ae1220633178276128371f3965fb53d63581d4" datatype="html">
<source>Recent Accelerations</source> <source>Recent Accelerations</source>
<context-group purpose="location"> <context-group purpose="location">
@ -2020,8 +2001,8 @@
</context-group> </context-group>
<note priority="1" from="description">accelerator.average-max-bid</note> <note priority="1" from="description">accelerator.average-max-bid</note>
</trans-unit> </trans-unit>
<trans-unit id="62be8da2e6a219a43d83a1887e55dc0ae1be155b" datatype="html"> <trans-unit id="16fedee43f919b6a0992f32aeec5d6938e8d6b76" datatype="html">
<source>Total vsize</source> <source>Total Vsize</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/acceleration/pending-stats/pending-stats.component.html</context> <context context-type="sourcefile">src/app/components/acceleration/pending-stats/pending-stats.component.html</context>
<context context-type="linenumber">20</context> <context context-type="linenumber">20</context>
@ -2563,6 +2544,22 @@
<context context-type="linenumber">73</context> <context context-type="linenumber">73</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6c453b11fd7bd159ae30bc381f367bc736d86909" datatype="html">
<source>Block Fees</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-fees-graph/block-fees-graph.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-fees-graph/block-fees-graph.component.ts</context>
<context context-type="linenumber">67</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">19</context>
</context-group>
<note priority="1" from="description">mining.block-fees</note>
</trans-unit>
<trans-unit id="meta.description.bitcoin.graphs.block-fees" datatype="html"> <trans-unit id="meta.description.bitcoin.graphs.block-fees" datatype="html">
<source>See the average mining fees earned per Bitcoin block visualized in BTC and USD over time.</source> <source>See the average mining fees earned per Bitcoin block visualized in BTC and USD over time.</source>
<context-group purpose="location"> <context-group purpose="location">
@ -4268,13 +4265,13 @@
</context-group> </context-group>
<note priority="1" from="description">master-page.graphs</note> <note priority="1" from="description">master-page.graphs</note>
</trans-unit> </trans-unit>
<trans-unit id="2efef6dfa1c2d2d8fa05b337eccf3e0006af1e94" datatype="html"> <trans-unit id="6b867dc61c6a92f3229f1950f9f2d414790cce95" datatype="html">
<source>Acceleration Dashboard</source> <source>Accelerator Dashboard</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/master-page/master-page.component.html</context> <context context-type="sourcefile">src/app/components/master-page/master-page.component.html</context>
<context context-type="linenumber">56</context> <context context-type="linenumber">56</context>
</context-group> </context-group>
<note priority="1" from="description">master-page.acceleration-dashboard</note> <note priority="1" from="description">master-page.accelerator-dashboard</note>
</trans-unit> </trans-unit>
<trans-unit id="142e923d3b04186ac6ba23387265d22a2fa404e0" datatype="html"> <trans-unit id="142e923d3b04186ac6ba23387265d22a2fa404e0" datatype="html">
<source>Lightning Explorer</source> <source>Lightning Explorer</source>
@ -5547,11 +5544,11 @@
</context-group> </context-group>
<note priority="1" from="description">show-diagram</note> <note priority="1" from="description">show-diagram</note>
</trans-unit> </trans-unit>
<trans-unit id="9ad256cfb48e88f5bc56243641c992d53461f482" datatype="html"> <trans-unit id="a8a4dd861f790141e19f773153cf42b5d0b0e6b6" datatype="html">
<source>Adjusted vsize <x id="START_LINK" ctype="x-a" equiv-text="&lt;a class=&quot;info-link&quot; [routerLink]=&quot;[&apos;/docs/faq/&apos; | relativeUrl]&quot; fragment=&quot;what-is-adjusted-vsize&quot;&gt;"/><x id="START_TAG_FA_ICON" ctype="x-fa_icon" equiv-text="&lt;fa-icon [icon]=&quot;[&apos;fas&apos;, &apos;info-circle&apos;]&quot; [fixedWidth]=&quot;true&quot;&gt;"/><x id="CLOSE_TAG_FA_ICON" ctype="x-fa_icon"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/></source> <source>Adjusted vsize</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context> <context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">302,306</context> <context context-type="linenumber">302</context>
</context-group> </context-group>
<note priority="1" from="description">Transaction Adjusted VSize</note> <note priority="1" from="description">Transaction Adjusted VSize</note>
<note priority="1" from="meaning">transaction.adjusted-vsize</note> <note priority="1" from="meaning">transaction.adjusted-vsize</note>
@ -5564,11 +5561,11 @@
</context-group> </context-group>
<note priority="1" from="description">transaction.locktime</note> <note priority="1" from="description">transaction.locktime</note>
</trans-unit> </trans-unit>
<trans-unit id="c93f5659ea1b4a8c59a8e4710cbcdb62b37206b0" datatype="html"> <trans-unit id="3dd65e8fa7035988a691aadcb583862c2a9e336a" datatype="html">
<source>Sigops <x id="START_LINK" ctype="x-a" equiv-text="&lt;a class=&quot;info-link&quot; [routerLink]=&quot;[&apos;/docs/faq/&apos; | relativeUrl]&quot; fragment=&quot;what-are-sigops&quot;&gt;"/><x id="START_TAG_FA_ICON" ctype="x-fa_icon" equiv-text="&lt;fa-icon [icon]=&quot;[&apos;fas&apos;, &apos;info-circle&apos;]&quot; [fixedWidth]=&quot;true&quot;&gt;"/><x id="CLOSE_TAG_FA_ICON" ctype="x-fa_icon"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/></source> <source>Sigops</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context> <context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">328,332</context> <context context-type="linenumber">328</context>
</context-group> </context-group>
<note priority="1" from="description">Transaction Sigops</note> <note priority="1" from="description">Transaction Sigops</note>
<note priority="1" from="meaning">transaction.sigops</note> <note priority="1" from="meaning">transaction.sigops</note>

File diff suppressed because it is too large Load Diff

View File

@ -22,7 +22,7 @@ var PATH;
if (process.argv[2]) { if (process.argv[2]) {
PATH = process.argv[2]; PATH = process.argv[2];
PATH += PATH.endsWith("/") ? "" : "/" PATH += PATH.endsWith("/") ? "" : "/"
PATH = path.normalize(PATH); PATH = path.resolve(path.normalize(PATH));
console.log(`[sync-assets] using PATH ${PATH}`); console.log(`[sync-assets] using PATH ${PATH}`);
if (!fs.existsSync(PATH)){ if (!fs.existsSync(PATH)){
console.log(`${LOG_TAG} ${PATH} does not exist, creating`); console.log(`${LOG_TAG} ${PATH} does not exist, creating`);
@ -110,7 +110,7 @@ function downloadMiningPoolLogos$() {
} }
let downloadedCount = 0; let downloadedCount = 0;
for (const poolLogo of poolLogos) { for (const poolLogo of poolLogos) {
const filePath = PATH + `mining-pools/${poolLogo.name}`; const filePath = `${PATH}/mining-pools/${poolLogo.name}`;
if (fs.existsSync(filePath)) { if (fs.existsSync(filePath)) {
const localHash = getLocalHash(filePath); const localHash = getLocalHash(filePath);
if (verbose) { if (verbose) {
@ -124,7 +124,7 @@ function downloadMiningPoolLogos$() {
} }
} else { } else {
console.log(`${LOG_TAG} ${poolLogo.name} is missing, downloading...`); console.log(`${LOG_TAG} ${poolLogo.name} is missing, downloading...`);
const miningPoolsDir = PATH + `mining-pools/`; const miningPoolsDir = `${PATH}/mining-pools/`;
if (!fs.existsSync(miningPoolsDir)){ if (!fs.existsSync(miningPoolsDir)){
fs.mkdirSync(miningPoolsDir, { recursive: true }); fs.mkdirSync(miningPoolsDir, { recursive: true });
} }
@ -179,7 +179,7 @@ function downloadPromoVideoSubtiles$() {
} }
let downloadedCount = 0; let downloadedCount = 0;
for (const language of videoLanguages) { for (const language of videoLanguages) {
const filePath = PATH + `promo-video/${language.name}`; const filePath = `${PATH}/promo-video/${language.name}`;
if (fs.existsSync(filePath)) { if (fs.existsSync(filePath)) {
if (verbose) { if (verbose) {
console.log(`${LOG_TAG} ${language.name} remote promo video hash ${language.sha}`); console.log(`${LOG_TAG} ${language.name} remote promo video hash ${language.sha}`);
@ -193,7 +193,7 @@ function downloadPromoVideoSubtiles$() {
} }
} else { } else {
console.log(`${LOG_TAG} ${language.name} is missing, downloading`); console.log(`${LOG_TAG} ${language.name} is missing, downloading`);
const promoVideosDir = PATH + `promo-video/`; const promoVideosDir = `${PATH}/promo-video/`;
if (!fs.existsSync(promoVideosDir)){ if (!fs.existsSync(promoVideosDir)){
fs.mkdirSync(promoVideosDir, { recursive: true }); fs.mkdirSync(promoVideosDir, { recursive: true });
} }
@ -250,7 +250,7 @@ function downloadPromoVideo$() {
if (item.name !== 'promo.mp4') { if (item.name !== 'promo.mp4') {
continue; continue;
} }
const filePath = PATH + `promo-video/mempool-promo.mp4`; const filePath = `${PATH}/promo-video/mempool-promo.mp4`;
if (fs.existsSync(filePath)) { if (fs.existsSync(filePath)) {
const localHash = getLocalHash(filePath); const localHash = getLocalHash(filePath);
@ -288,16 +288,16 @@ if (configContent.BASE_MODULE && configContent.BASE_MODULE === 'liquid') {
const testnetAssetsMinimalJsonUrl = 'https://raw.githubusercontent.com/Blockstream/asset_registry_testnet_db/master/index.minimal.json'; const testnetAssetsMinimalJsonUrl = 'https://raw.githubusercontent.com/Blockstream/asset_registry_testnet_db/master/index.minimal.json';
console.log(`${LOG_TAG} Downloading assets`); console.log(`${LOG_TAG} Downloading assets`);
download(PATH + 'assets.json', assetsJsonUrl); download(`${PATH}/assets.json`, assetsJsonUrl);
console.log(`${LOG_TAG} Downloading assets minimal`); console.log(`${LOG_TAG} Downloading assets minimal`);
download(PATH + 'assets.minimal.json', assetsMinimalJsonUrl); download(`${PATH}/assets.minimal.json`, assetsMinimalJsonUrl);
console.log(`${LOG_TAG} Downloading testnet assets`); console.log(`${LOG_TAG} Downloading testnet assets`);
download(PATH + 'assets-testnet.json', testnetAssetsJsonUrl); download(`${PATH}/assets-testnet.json`, testnetAssetsJsonUrl);
console.log(`${LOG_TAG} Downloading testnet assets minimal`); console.log(`${LOG_TAG} Downloading testnet assets minimal`);
download(PATH + 'assets-testnet.minimal.json', testnetAssetsMinimalJsonUrl); download(`${PATH}/assets-testnet.minimal.json`, testnetAssetsMinimalJsonUrl);
} else { } else {
if (verbose) { if (verbose) {
console.log(`${LOG_TAG} BASE_MODULE is not set to Liquid (${configContent.BASE_MODULE}), skipping downloading assets`); console.log(`${LOG_TAG} BASE_MODULE is not set to Liquid (${configContent.BASE_MODULE}), skipping downloading assets`);