Merge branch 'master' into nymkappa/no-db-blocks-list
This commit is contained in:
commit
e6236d8cfd
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
@ -9,7 +9,7 @@ jobs:
|
|||||||
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:
|
||||||
node: ["16", "17", "18", "20"]
|
node: ["18", "20"]
|
||||||
flavor: ["dev", "prod"]
|
flavor: ["dev", "prod"]
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
@ -67,7 +67,7 @@ jobs:
|
|||||||
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:
|
||||||
node: ["16", "17", "18", "20"]
|
node: ["18", "20"]
|
||||||
flavor: ["dev", "prod"]
|
flavor: ["dev", "prod"]
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
runs-on: "ubuntu-latest"
|
runs-on: "ubuntu-latest"
|
||||||
|
2
.github/workflows/cypress.yml
vendored
2
.github/workflows/cypress.yml
vendored
@ -38,7 +38,7 @@ jobs:
|
|||||||
- name: Setup node
|
- name: Setup node
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
node-version: 20
|
||||||
cache: "npm"
|
cache: "npm"
|
||||||
cache-dependency-path: ${{ matrix.module }}/frontend/package-lock.json
|
cache-dependency-path: ${{ matrix.module }}/frontend/package-lock.json
|
||||||
|
|
||||||
|
19
.github/workflows/get_backend_hash.yml
vendored
Normal file
19
.github/workflows/get_backend_hash.yml
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
name: 'Print backend hashes'
|
||||||
|
|
||||||
|
on: [workflow_dispatch]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
print-backend-sha:
|
||||||
|
runs-on: 'ubuntu-latest'
|
||||||
|
name: Print backend hashes
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
path: repo
|
||||||
|
|
||||||
|
- name: Run script
|
||||||
|
working-directory: repo
|
||||||
|
run: |
|
||||||
|
chmod +x ./scripts/get_backend_hash.sh
|
||||||
|
sh ./scripts/get_backend_hash.sh
|
8
.github/workflows/on-tag.yml
vendored
8
.github/workflows/on-tag.yml
vendored
@ -68,17 +68,17 @@ jobs:
|
|||||||
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
|
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
|
||||||
|
|
||||||
- name: Checkout project
|
- name: Checkout project
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Init repo for Dockerization
|
- name: Init repo for Dockerization
|
||||||
run: docker/init.sh "$TAG"
|
run: docker/init.sh "$TAG"
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v2
|
uses: docker/setup-qemu-action@v3
|
||||||
id: qemu
|
id: qemu
|
||||||
|
|
||||||
- name: Setup Docker buildx action
|
- name: Setup Docker buildx action
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v3
|
||||||
id: buildx
|
id: buildx
|
||||||
|
|
||||||
- name: Available platforms
|
- name: Available platforms
|
||||||
@ -98,7 +98,7 @@ jobs:
|
|||||||
docker buildx build \
|
docker buildx build \
|
||||||
--cache-from "type=local,src=/tmp/.buildx-cache" \
|
--cache-from "type=local,src=/tmp/.buildx-cache" \
|
||||||
--cache-to "type=local,dest=/tmp/.buildx-cache" \
|
--cache-to "type=local,dest=/tmp/.buildx-cache" \
|
||||||
--platform linux/amd64,linux/arm64,linux/arm/v7 \
|
--platform linux/amd64,linux/arm64 \
|
||||||
--tag ${{ secrets.DOCKER_HUB_USER }}/${{ matrix.service }}:$TAG \
|
--tag ${{ secrets.DOCKER_HUB_USER }}/${{ matrix.service }}:$TAG \
|
||||||
--tag ${{ secrets.DOCKER_HUB_USER }}/${{ matrix.service }}:latest \
|
--tag ${{ secrets.DOCKER_HUB_USER }}/${{ matrix.service }}:latest \
|
||||||
--output "type=registry" ./${{ matrix.service }}/ \
|
--output "type=registry" ./${{ matrix.service }}/ \
|
||||||
|
47
GNUmakefile
47
GNUmakefile
@ -1,47 +0,0 @@
|
|||||||
# If you see pwd_unknown showing up check permissions
|
|
||||||
PWD ?= pwd_unknown
|
|
||||||
|
|
||||||
# DATABASE DEPLOY FOLDER CONFIG - default ./data
|
|
||||||
ifeq ($(data),)
|
|
||||||
DATA := data
|
|
||||||
export DATA
|
|
||||||
else
|
|
||||||
DATA := $(data)
|
|
||||||
export DATA
|
|
||||||
endif
|
|
||||||
|
|
||||||
.PHONY: help
|
|
||||||
help:
|
|
||||||
@echo ''
|
|
||||||
@echo ''
|
|
||||||
@echo ' Usage: make [COMMAND]'
|
|
||||||
@echo ''
|
|
||||||
@echo ' make all # build init mempool and electrs'
|
|
||||||
@echo ' make init # setup some useful configs'
|
|
||||||
@echo ' make mempool # build q dockerized mempool.space'
|
|
||||||
@echo ' make electrs # build a docker electrs image'
|
|
||||||
@echo ''
|
|
||||||
|
|
||||||
.PHONY: init
|
|
||||||
init:
|
|
||||||
@echo ''
|
|
||||||
mkdir -p $(DATA) $(DATA)/mysql $(DATA)/mysql/data
|
|
||||||
#REF: https://github.com/mempool/mempool/blob/master/docker/README.md
|
|
||||||
cat docker/docker-compose.yml > docker-compose.yml
|
|
||||||
cat backend/mempool-config.sample.json > backend/mempool-config.json
|
|
||||||
.PHONY: mempool
|
|
||||||
mempool: init
|
|
||||||
@echo ''
|
|
||||||
docker-compose up --force-recreate --always-recreate-deps
|
|
||||||
@echo ''
|
|
||||||
.PHONY: electrs
|
|
||||||
electrum:
|
|
||||||
#REF: https://hub.docker.com/r/beli/electrum
|
|
||||||
@echo ''
|
|
||||||
docker build -f docker/electrum/Dockerfile .
|
|
||||||
@echo ''
|
|
||||||
.PHONY: all
|
|
||||||
all: init
|
|
||||||
make mempool
|
|
||||||
#######################
|
|
||||||
-include Makefile
|
|
14
backend/package-lock.json
generated
14
backend/package-lock.json
generated
@ -12,7 +12,7 @@
|
|||||||
"@babel/core": "^7.21.3",
|
"@babel/core": "^7.21.3",
|
||||||
"@mempool/electrum-client": "1.1.9",
|
"@mempool/electrum-client": "1.1.9",
|
||||||
"@types/node": "^18.15.3",
|
"@types/node": "^18.15.3",
|
||||||
"axios": "~1.4.0",
|
"axios": "~1.5.0",
|
||||||
"bitcoinjs-lib": "~6.1.3",
|
"bitcoinjs-lib": "~6.1.3",
|
||||||
"crypto-js": "~4.1.1",
|
"crypto-js": "~4.1.1",
|
||||||
"express": "~4.18.2",
|
"express": "~4.18.2",
|
||||||
@ -2321,9 +2321,9 @@
|
|||||||
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
|
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
|
||||||
},
|
},
|
||||||
"node_modules/axios": {
|
"node_modules/axios": {
|
||||||
"version": "1.4.0",
|
"version": "1.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz",
|
||||||
"integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
|
"integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"follow-redirects": "^1.15.0",
|
"follow-redirects": "^1.15.0",
|
||||||
"form-data": "^4.0.0",
|
"form-data": "^4.0.0",
|
||||||
@ -9397,9 +9397,9 @@
|
|||||||
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
|
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
|
||||||
},
|
},
|
||||||
"axios": {
|
"axios": {
|
||||||
"version": "1.4.0",
|
"version": "1.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz",
|
||||||
"integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
|
"integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"follow-redirects": "^1.15.0",
|
"follow-redirects": "^1.15.0",
|
||||||
"form-data": "^4.0.0",
|
"form-data": "^4.0.0",
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
"@babel/core": "^7.21.3",
|
"@babel/core": "^7.21.3",
|
||||||
"@mempool/electrum-client": "1.1.9",
|
"@mempool/electrum-client": "1.1.9",
|
||||||
"@types/node": "^18.15.3",
|
"@types/node": "^18.15.3",
|
||||||
"axios": "~1.4.0",
|
"axios": "~1.5.0",
|
||||||
"bitcoinjs-lib": "~6.1.3",
|
"bitcoinjs-lib": "~6.1.3",
|
||||||
"crypto-js": "~4.1.1",
|
"crypto-js": "~4.1.1",
|
||||||
"express": "~4.18.2",
|
"express": "~4.18.2",
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
FROM node:16.16.0-buster-slim AS builder
|
FROM node:20.8.0-buster-slim AS builder
|
||||||
|
|
||||||
ARG commitHash
|
ARG commitHash
|
||||||
ENV MEMPOOL_COMMIT_HASH=${commitHash}
|
ENV MEMPOOL_COMMIT_HASH=${commitHash}
|
||||||
@ -17,7 +17,7 @@ ENV PATH="/root/.cargo/bin:$PATH"
|
|||||||
RUN npm install --omit=dev --omit=optional
|
RUN npm install --omit=dev --omit=optional
|
||||||
RUN npm run package
|
RUN npm run package
|
||||||
|
|
||||||
FROM node:16.16.0-buster-slim
|
FROM node:20.8.0-buster-slim
|
||||||
|
|
||||||
WORKDIR /backend
|
WORKDIR /backend
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ __MEMPOOL_SERVICES_API__=${MEMPOOL_SERVICES_API:=""}
|
|||||||
__MEMPOOL_SERVICES_ACCELERATIONS__=${MEMPOOL_SERVICES_ACCELERATIONS:=false}
|
__MEMPOOL_SERVICES_ACCELERATIONS__=${MEMPOOL_SERVICES_ACCELERATIONS:=false}
|
||||||
|
|
||||||
# REDIS
|
# REDIS
|
||||||
__REDIS_ENABLED__=${REDIS_ENABLED:=true}
|
__REDIS_ENABLED__=${REDIS_ENABLED:=false}
|
||||||
__REDIS_UNIX_SOCKET_PATH__=${REDIS_UNIX_SOCKET_PATH:=true}
|
__REDIS_UNIX_SOCKET_PATH__=${REDIS_UNIX_SOCKET_PATH:=true}
|
||||||
|
|
||||||
mkdir -p "${__MEMPOOL_CACHE_DIR__}"
|
mkdir -p "${__MEMPOOL_CACHE_DIR__}"
|
||||||
|
@ -38,7 +38,7 @@ services:
|
|||||||
MYSQL_USER: "mempool"
|
MYSQL_USER: "mempool"
|
||||||
MYSQL_PASSWORD: "mempool"
|
MYSQL_PASSWORD: "mempool"
|
||||||
MYSQL_ROOT_PASSWORD: "admin"
|
MYSQL_ROOT_PASSWORD: "admin"
|
||||||
image: mariadb:10.5.8
|
image: mariadb:10.5.21
|
||||||
user: "1000:1000"
|
user: "1000:1000"
|
||||||
restart: on-failure
|
restart: on-failure
|
||||||
stop_grace_period: 1m
|
stop_grace_period: 1m
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
FROM ubuntu:18.04
|
|
||||||
MAINTAINER mempool.space developers
|
|
||||||
EXPOSE 50002
|
|
||||||
|
|
||||||
# runs as UID 1000 GID 1000 inside the container
|
|
||||||
|
|
||||||
ENV VERSION 4.0.9
|
|
||||||
RUN set -x \
|
|
||||||
&& apt-get update \
|
|
||||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends gpg gpg-agent dirmngr \
|
|
||||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends wget xpra python3-pyqt5 python3-wheel python3-pip python3-setuptools libsecp256k1-0 libsecp256k1-dev python3-numpy python3-dev build-essential \
|
|
||||||
&& wget -O /tmp/Electrum-${VERSION}.tar.gz https://download.electrum.org/${VERSION}/Electrum-${VERSION}.tar.gz \
|
|
||||||
&& wget -O /tmp/Electrum-${VERSION}.tar.gz.asc https://download.electrum.org/${VERSION}/Electrum-${VERSION}.tar.gz.asc \
|
|
||||||
&& gpg --keyserver keys.gnupg.net --recv-keys 6694D8DE7BE8EE5631BED9502BD5824B7F9470E6 \
|
|
||||||
&& gpg --verify /tmp/Electrum-${VERSION}.tar.gz.asc /tmp/Electrum-${VERSION}.tar.gz \
|
|
||||||
&& pip3 install /tmp/Electrum-${VERSION}.tar.gz \
|
|
||||||
&& test -f /usr/local/bin/electrum \
|
|
||||||
&& rm -vrf /tmp/Electrum-${VERSION}.tar.gz /tmp/Electrum-${VERSION}.tar.gz.asc ${HOME}/.gnupg \
|
|
||||||
&& apt-get purge --autoremove -y python3-wheel python3-pip python3-setuptools python3-dev build-essential libsecp256k1-dev curl gpg gpg-agent dirmngr \
|
|
||||||
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
|
|
||||||
&& useradd -d /home/mempool -m mempool \
|
|
||||||
&& mkdir /electrum \
|
|
||||||
&& ln -s /electrum /home/mempool/.electrum \
|
|
||||||
&& chown mempool:mempool /electrum
|
|
||||||
|
|
||||||
USER mempool
|
|
||||||
ENV HOME /home/mempool
|
|
||||||
WORKDIR /home/mempool
|
|
||||||
VOLUME /electrum
|
|
||||||
|
|
||||||
CMD ["/usr/bin/xpra", "start", ":100", "--start-child=/usr/local/bin/electrum", "--bind-tcp=0.0.0.0:50002","--daemon=yes", "--notifications=no", "--mdns=no", "--pulseaudio=no", "--html=off", "--speaker=disabled", "--microphone=disabled", "--webcam=no", "--printing=no", "--dbus-launch=", "--exit-with-children"]
|
|
||||||
ENTRYPOINT ["electrum"]
|
|
@ -1,4 +1,4 @@
|
|||||||
FROM node:16.16.0-buster-slim AS builder
|
FROM node:20.8.0-buster-slim AS builder
|
||||||
|
|
||||||
ARG commitHash
|
ARG commitHash
|
||||||
ENV DOCKER_COMMIT_HASH=${commitHash}
|
ENV DOCKER_COMMIT_HASH=${commitHash}
|
||||||
@ -13,7 +13,7 @@ RUN npm install --omit=dev --omit=optional
|
|||||||
|
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
FROM nginx:1.17.8-alpine
|
FROM nginx:1.24.0-alpine
|
||||||
|
|
||||||
WORKDIR /patch
|
WORKDIR /patch
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@ __AUDIT__=${AUDIT:=false}
|
|||||||
__MAINNET_BLOCK_AUDIT_START_HEIGHT__=${MAINNET_BLOCK_AUDIT_START_HEIGHT:=0}
|
__MAINNET_BLOCK_AUDIT_START_HEIGHT__=${MAINNET_BLOCK_AUDIT_START_HEIGHT:=0}
|
||||||
__TESTNET_BLOCK_AUDIT_START_HEIGHT__=${TESTNET_BLOCK_AUDIT_START_HEIGHT:=0}
|
__TESTNET_BLOCK_AUDIT_START_HEIGHT__=${TESTNET_BLOCK_AUDIT_START_HEIGHT:=0}
|
||||||
__SIGNET_BLOCK_AUDIT_START_HEIGHT__=${SIGNET_BLOCK_AUDIT_START_HEIGHT:=0}
|
__SIGNET_BLOCK_AUDIT_START_HEIGHT__=${SIGNET_BLOCK_AUDIT_START_HEIGHT:=0}
|
||||||
|
__ACCELERATOR__=${ACCELERATOR:=false}
|
||||||
__HISTORICAL_PRICE__=${HISTORICAL_PRICE:=true}
|
__HISTORICAL_PRICE__=${HISTORICAL_PRICE:=true}
|
||||||
|
|
||||||
# Export as environment variables to be used by envsubst
|
# Export as environment variables to be used by envsubst
|
||||||
@ -65,6 +66,7 @@ export __AUDIT__
|
|||||||
export __MAINNET_BLOCK_AUDIT_START_HEIGHT__
|
export __MAINNET_BLOCK_AUDIT_START_HEIGHT__
|
||||||
export __TESTNET_BLOCK_AUDIT_START_HEIGHT__
|
export __TESTNET_BLOCK_AUDIT_START_HEIGHT__
|
||||||
export __SIGNET_BLOCK_AUDIT_START_HEIGHT__
|
export __SIGNET_BLOCK_AUDIT_START_HEIGHT__
|
||||||
|
export __ACCELERATOR__
|
||||||
export __HISTORICAL_PRICE__
|
export __HISTORICAL_PRICE__
|
||||||
|
|
||||||
folder=$(find /var/www/mempool -name "config.js" | xargs dirname)
|
folder=$(find /var/www/mempool -name "config.js" | xargs dirname)
|
||||||
|
184
frontend/package-lock.json
generated
184
frontend/package-lock.json
generated
@ -31,6 +31,7 @@
|
|||||||
"bootstrap": "~4.6.2",
|
"bootstrap": "~4.6.2",
|
||||||
"browserify": "^17.0.0",
|
"browserify": "^17.0.0",
|
||||||
"clipboard": "^2.0.11",
|
"clipboard": "^2.0.11",
|
||||||
|
"cypress": "^13.3.0",
|
||||||
"domino": "^2.1.6",
|
"domino": "^2.1.6",
|
||||||
"echarts": "~5.4.3",
|
"echarts": "~5.4.3",
|
||||||
"echarts-gl": "^2.0.9",
|
"echarts-gl": "^2.0.9",
|
||||||
@ -59,9 +60,9 @@
|
|||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@cypress/schematic": "^2.5.0",
|
"@cypress/schematic": "^2.5.0",
|
||||||
"@types/cypress": "^1.1.3",
|
"@types/cypress": "^1.1.3",
|
||||||
"cypress": "^12.17.2",
|
"cypress": "^13.3.0",
|
||||||
"cypress-fail-on-console-error": "~4.0.3",
|
"cypress-fail-on-console-error": "~5.0.0",
|
||||||
"cypress-wait-until": "^2.0.0",
|
"cypress-wait-until": "^2.0.1",
|
||||||
"mock-socket": "~9.2.1",
|
"mock-socket": "~9.2.1",
|
||||||
"start-server-and-test": "~2.0.0"
|
"start-server-and-test": "~2.0.0"
|
||||||
}
|
}
|
||||||
@ -3016,9 +3017,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@cypress/request": {
|
"node_modules/@cypress/request": {
|
||||||
"version": "2.88.11",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz",
|
"resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz",
|
||||||
"integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==",
|
"integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"aws-sign2": "~0.7.0",
|
"aws-sign2": "~0.7.0",
|
||||||
@ -3034,9 +3035,9 @@
|
|||||||
"json-stringify-safe": "~5.0.1",
|
"json-stringify-safe": "~5.0.1",
|
||||||
"mime-types": "~2.1.19",
|
"mime-types": "~2.1.19",
|
||||||
"performance-now": "^2.1.0",
|
"performance-now": "^2.1.0",
|
||||||
"qs": "~6.10.3",
|
"qs": "6.10.4",
|
||||||
"safe-buffer": "^5.1.2",
|
"safe-buffer": "^5.1.2",
|
||||||
"tough-cookie": "~2.5.0",
|
"tough-cookie": "^4.1.3",
|
||||||
"tunnel-agent": "^0.6.0",
|
"tunnel-agent": "^0.6.0",
|
||||||
"uuid": "^8.3.2"
|
"uuid": "^8.3.2"
|
||||||
},
|
},
|
||||||
@ -4333,9 +4334,9 @@
|
|||||||
"integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q=="
|
"integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "18.11.9",
|
"version": "18.17.18",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.18.tgz",
|
||||||
"integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg=="
|
"integrity": "sha512-/4QOuy3ZpV7Ya1GTRz5CYSz3DgkKpyUptXuQ5PPce7uuyJAOR7r9FhkmxJfvcNUXyklbC63a+YvB3jxy7s9ngw=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/qrcode": {
|
"node_modules/@types/qrcode": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
@ -7113,15 +7114,15 @@
|
|||||||
"peer": true
|
"peer": true
|
||||||
},
|
},
|
||||||
"node_modules/cypress": {
|
"node_modules/cypress": {
|
||||||
"version": "12.17.2",
|
"version": "13.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.2.tgz",
|
"resolved": "https://registry.npmjs.org/cypress/-/cypress-13.3.0.tgz",
|
||||||
"integrity": "sha512-hxWAaWbqQBzzMuadSGSuQg5PDvIGOovm6xm0hIfpCVcORsCAj/gF2p0EvfnJ4f+jK2PCiDgP6D2eeE9/FK4Mjg==",
|
"integrity": "sha512-mpI8qcTwLGiA4zEQvTC/U1xGUezVV4V8HQCOYjlEOrVmU1etVvxOjkCXHGwrlYdZU/EPmUiWfsO3yt1o+Q2bgw==",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cypress/request": "^2.88.11",
|
"@cypress/request": "^3.0.0",
|
||||||
"@cypress/xvfb": "^1.2.4",
|
"@cypress/xvfb": "^1.2.4",
|
||||||
"@types/node": "^14.14.31",
|
"@types/node": "^18.17.5",
|
||||||
"@types/sinonjs__fake-timers": "8.1.1",
|
"@types/sinonjs__fake-timers": "8.1.1",
|
||||||
"@types/sizzle": "^2.3.2",
|
"@types/sizzle": "^2.3.2",
|
||||||
"arch": "^2.2.0",
|
"arch": "^2.2.0",
|
||||||
@ -7154,6 +7155,7 @@
|
|||||||
"minimist": "^1.2.8",
|
"minimist": "^1.2.8",
|
||||||
"ospath": "^1.2.2",
|
"ospath": "^1.2.2",
|
||||||
"pretty-bytes": "^5.6.0",
|
"pretty-bytes": "^5.6.0",
|
||||||
|
"process": "^0.11.10",
|
||||||
"proxy-from-env": "1.0.0",
|
"proxy-from-env": "1.0.0",
|
||||||
"request-progress": "^3.0.0",
|
"request-progress": "^3.0.0",
|
||||||
"semver": "^7.5.3",
|
"semver": "^7.5.3",
|
||||||
@ -7166,13 +7168,13 @@
|
|||||||
"cypress": "bin/cypress"
|
"cypress": "bin/cypress"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^14.0.0 || ^16.0.0 || >=18.0.0"
|
"node": "^16.0.0 || ^18.0.0 || >=20.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cypress-fail-on-console-error": {
|
"node_modules/cypress-fail-on-console-error": {
|
||||||
"version": "4.0.3",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/cypress-fail-on-console-error/-/cypress-fail-on-console-error-4.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/cypress-fail-on-console-error/-/cypress-fail-on-console-error-5.0.0.tgz",
|
||||||
"integrity": "sha512-v2nPupd2brtxKLkDQX58SbEPWRF/2nDbqPTnYyhPIYHqG7U3P2dGUZ3zraETKKoLhU3+C0otjgB6Vg/bHhocQw==",
|
"integrity": "sha512-xui/aSu8rmExZjZNgId3iX0MsGZih6ZoFH+54vNHrK3HaqIZZX5hUuNhAcmfSoM1rIDc2DeITeVaMn/hiQ9IWQ==",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chai": "^4.3.4",
|
"chai": "^4.3.4",
|
||||||
@ -7182,19 +7184,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cypress-wait-until": {
|
"node_modules/cypress-wait-until": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/cypress-wait-until/-/cypress-wait-until-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/cypress-wait-until/-/cypress-wait-until-2.0.1.tgz",
|
||||||
"integrity": "sha512-ulUZyrWBn+OuC8oiQuGKAScDYfpaWnE3dEE/raUo64w4RHQxZrQ/iMIWT4ZjGMMPr3P+BFEALCRnjQeRqzZj6g==",
|
"integrity": "sha512-+IyVnYNiaX1+C+V/LazrJWAi/CqiwfNoRSrFviECQEyolW1gDRy765PZosL2alSSGK8V10Y7BGfOQyZUDgmnjQ==",
|
||||||
"optional": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=18.16.0",
|
|
||||||
"npm": ">=9.5.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/cypress/node_modules/@types/node": {
|
|
||||||
"version": "14.18.53",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.53.tgz",
|
|
||||||
"integrity": "sha512-soGmOpVBUq+gaBMwom1M+krC/NNbWlosh4AtGA03SyWNDiqSKtwp7OulO1M6+mg8YkHMvJ/y0AkCeO8d1hNb7A==",
|
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"node_modules/cypress/node_modules/ansi-styles": {
|
"node_modules/cypress/node_modules/ansi-styles": {
|
||||||
@ -10976,28 +10968,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
|
||||||
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
|
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
|
||||||
},
|
},
|
||||||
"node_modules/jsdom/node_modules/tough-cookie": {
|
|
||||||
"version": "4.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
|
|
||||||
"integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
|
|
||||||
"dependencies": {
|
|
||||||
"psl": "^1.1.33",
|
|
||||||
"punycode": "^2.1.1",
|
|
||||||
"universalify": "^0.2.0",
|
|
||||||
"url-parse": "^1.5.3"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/jsdom/node_modules/universalify": {
|
|
||||||
"version": "0.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
|
|
||||||
"integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 4.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/jsesc": {
|
"node_modules/jsesc": {
|
||||||
"version": "2.5.2",
|
"version": "2.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
|
||||||
@ -15682,16 +15652,25 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/tough-cookie": {
|
"node_modules/tough-cookie": {
|
||||||
"version": "2.5.0",
|
"version": "4.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
|
||||||
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
|
"integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"psl": "^1.1.28",
|
"psl": "^1.1.33",
|
||||||
"punycode": "^2.1.1"
|
"punycode": "^2.1.1",
|
||||||
|
"universalify": "^0.2.0",
|
||||||
|
"url-parse": "^1.5.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.8"
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tough-cookie/node_modules/universalify": {
|
||||||
|
"version": "0.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
|
||||||
|
"integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/tr46": {
|
"node_modules/tr46": {
|
||||||
@ -19010,9 +18989,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@cypress/request": {
|
"@cypress/request": {
|
||||||
"version": "2.88.11",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz",
|
"resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz",
|
||||||
"integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==",
|
"integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"aws-sign2": "~0.7.0",
|
"aws-sign2": "~0.7.0",
|
||||||
@ -19028,9 +19007,9 @@
|
|||||||
"json-stringify-safe": "~5.0.1",
|
"json-stringify-safe": "~5.0.1",
|
||||||
"mime-types": "~2.1.19",
|
"mime-types": "~2.1.19",
|
||||||
"performance-now": "^2.1.0",
|
"performance-now": "^2.1.0",
|
||||||
"qs": "~6.10.3",
|
"qs": "6.10.4",
|
||||||
"safe-buffer": "^5.1.2",
|
"safe-buffer": "^5.1.2",
|
||||||
"tough-cookie": "~2.5.0",
|
"tough-cookie": "^4.1.3",
|
||||||
"tunnel-agent": "^0.6.0",
|
"tunnel-agent": "^0.6.0",
|
||||||
"uuid": "^8.3.2"
|
"uuid": "^8.3.2"
|
||||||
}
|
}
|
||||||
@ -19927,9 +19906,9 @@
|
|||||||
"integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q=="
|
"integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q=="
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "18.11.9",
|
"version": "18.17.18",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.18.tgz",
|
||||||
"integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg=="
|
"integrity": "sha512-/4QOuy3ZpV7Ya1GTRz5CYSz3DgkKpyUptXuQ5PPce7uuyJAOR7r9FhkmxJfvcNUXyklbC63a+YvB3jxy7s9ngw=="
|
||||||
},
|
},
|
||||||
"@types/qrcode": {
|
"@types/qrcode": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.0",
|
||||||
@ -22065,14 +22044,14 @@
|
|||||||
"peer": true
|
"peer": true
|
||||||
},
|
},
|
||||||
"cypress": {
|
"cypress": {
|
||||||
"version": "12.17.2",
|
"version": "13.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.2.tgz",
|
"resolved": "https://registry.npmjs.org/cypress/-/cypress-13.3.0.tgz",
|
||||||
"integrity": "sha512-hxWAaWbqQBzzMuadSGSuQg5PDvIGOovm6xm0hIfpCVcORsCAj/gF2p0EvfnJ4f+jK2PCiDgP6D2eeE9/FK4Mjg==",
|
"integrity": "sha512-mpI8qcTwLGiA4zEQvTC/U1xGUezVV4V8HQCOYjlEOrVmU1etVvxOjkCXHGwrlYdZU/EPmUiWfsO3yt1o+Q2bgw==",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@cypress/request": "^2.88.11",
|
"@cypress/request": "^3.0.0",
|
||||||
"@cypress/xvfb": "^1.2.4",
|
"@cypress/xvfb": "^1.2.4",
|
||||||
"@types/node": "^14.14.31",
|
"@types/node": "^18.17.5",
|
||||||
"@types/sinonjs__fake-timers": "8.1.1",
|
"@types/sinonjs__fake-timers": "8.1.1",
|
||||||
"@types/sizzle": "^2.3.2",
|
"@types/sizzle": "^2.3.2",
|
||||||
"arch": "^2.2.0",
|
"arch": "^2.2.0",
|
||||||
@ -22105,6 +22084,7 @@
|
|||||||
"minimist": "^1.2.8",
|
"minimist": "^1.2.8",
|
||||||
"ospath": "^1.2.2",
|
"ospath": "^1.2.2",
|
||||||
"pretty-bytes": "^5.6.0",
|
"pretty-bytes": "^5.6.0",
|
||||||
|
"process": "^0.11.10",
|
||||||
"proxy-from-env": "1.0.0",
|
"proxy-from-env": "1.0.0",
|
||||||
"request-progress": "^3.0.0",
|
"request-progress": "^3.0.0",
|
||||||
"semver": "^7.5.3",
|
"semver": "^7.5.3",
|
||||||
@ -22114,12 +22094,6 @@
|
|||||||
"yauzl": "^2.10.0"
|
"yauzl": "^2.10.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": {
|
|
||||||
"version": "14.18.53",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.53.tgz",
|
|
||||||
"integrity": "sha512-soGmOpVBUq+gaBMwom1M+krC/NNbWlosh4AtGA03SyWNDiqSKtwp7OulO1M6+mg8YkHMvJ/y0AkCeO8d1hNb7A==",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"ansi-styles": {
|
"ansi-styles": {
|
||||||
"version": "4.3.0",
|
"version": "4.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||||
@ -22236,9 +22210,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cypress-fail-on-console-error": {
|
"cypress-fail-on-console-error": {
|
||||||
"version": "4.0.3",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/cypress-fail-on-console-error/-/cypress-fail-on-console-error-4.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/cypress-fail-on-console-error/-/cypress-fail-on-console-error-5.0.0.tgz",
|
||||||
"integrity": "sha512-v2nPupd2brtxKLkDQX58SbEPWRF/2nDbqPTnYyhPIYHqG7U3P2dGUZ3zraETKKoLhU3+C0otjgB6Vg/bHhocQw==",
|
"integrity": "sha512-xui/aSu8rmExZjZNgId3iX0MsGZih6ZoFH+54vNHrK3HaqIZZX5hUuNhAcmfSoM1rIDc2DeITeVaMn/hiQ9IWQ==",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"chai": "^4.3.4",
|
"chai": "^4.3.4",
|
||||||
@ -22248,9 +22222,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cypress-wait-until": {
|
"cypress-wait-until": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/cypress-wait-until/-/cypress-wait-until-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/cypress-wait-until/-/cypress-wait-until-2.0.1.tgz",
|
||||||
"integrity": "sha512-ulUZyrWBn+OuC8oiQuGKAScDYfpaWnE3dEE/raUo64w4RHQxZrQ/iMIWT4ZjGMMPr3P+BFEALCRnjQeRqzZj6g==",
|
"integrity": "sha512-+IyVnYNiaX1+C+V/LazrJWAi/CqiwfNoRSrFviECQEyolW1gDRy765PZosL2alSSGK8V10Y7BGfOQyZUDgmnjQ==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"d": {
|
"d": {
|
||||||
@ -24967,22 +24941,6 @@
|
|||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
|
||||||
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
|
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
|
||||||
},
|
|
||||||
"tough-cookie": {
|
|
||||||
"version": "4.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
|
|
||||||
"integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
|
|
||||||
"requires": {
|
|
||||||
"psl": "^1.1.33",
|
|
||||||
"punycode": "^2.1.1",
|
|
||||||
"universalify": "^0.2.0",
|
|
||||||
"url-parse": "^1.5.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"universalify": {
|
|
||||||
"version": "0.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
|
|
||||||
"integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg=="
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -28497,13 +28455,21 @@
|
|||||||
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
|
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
|
||||||
},
|
},
|
||||||
"tough-cookie": {
|
"tough-cookie": {
|
||||||
"version": "2.5.0",
|
"version": "4.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
|
||||||
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
|
"integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"psl": "^1.1.28",
|
"psl": "^1.1.33",
|
||||||
"punycode": "^2.1.1"
|
"punycode": "^2.1.1",
|
||||||
|
"universalify": "^0.2.0",
|
||||||
|
"url-parse": "^1.5.3"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"universalify": {
|
||||||
|
"version": "0.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
|
||||||
|
"integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg=="
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tr46": {
|
"tr46": {
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
"start:local-staging": "npm run generate-config && npm run sync-assets-dev && npm run ng -- serve -c local-staging",
|
"start:local-staging": "npm run generate-config && npm run sync-assets-dev && npm run ng -- serve -c local-staging",
|
||||||
"start:mixed": "npm run generate-config && npm run sync-assets-dev && npm run ng -- serve -c mixed",
|
"start:mixed": "npm run generate-config && npm run sync-assets-dev && npm run ng -- serve -c mixed",
|
||||||
"build": "npm run generate-config && npm run ng -- build --configuration production --localize && npm run sync-assets && npm run build-mempool.js",
|
"build": "npm run generate-config && npm run ng -- build --configuration production --localize && npm run sync-assets && npm run build-mempool.js",
|
||||||
"sync-assets": "rsync -av ./src/resources ./dist/mempool/browser && node sync-assets.js 'dist/mempool/browser/resources'",
|
"sync-assets": "rsync -av ./src/resources ./dist/mempool/browser && node sync-assets.js 'dist/mempool/browser/resources/'",
|
||||||
"sync-assets-dev": "node sync-assets.js 'src/resources/'",
|
"sync-assets-dev": "node sync-assets.js 'src/resources/'",
|
||||||
"generate-config": "node generate-config.js",
|
"generate-config": "node generate-config.js",
|
||||||
"build-mempool.js": "npm run build-mempool-js && npm run build-mempool-liquid-js && npm run build-mempool-bisq-js",
|
"build-mempool.js": "npm run build-mempool-js && npm run build-mempool-liquid-js && npm run build-mempool-bisq-js",
|
||||||
@ -111,9 +111,9 @@
|
|||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@cypress/schematic": "^2.5.0",
|
"@cypress/schematic": "^2.5.0",
|
||||||
"@types/cypress": "^1.1.3",
|
"@types/cypress": "^1.1.3",
|
||||||
"cypress": "^12.17.2",
|
"cypress": "^13.3.0",
|
||||||
"cypress-fail-on-console-error": "~4.0.3",
|
"cypress-fail-on-console-error": "~5.0.0",
|
||||||
"cypress-wait-until": "^2.0.0",
|
"cypress-wait-until": "^2.0.1",
|
||||||
"mock-socket": "~9.2.1",
|
"mock-socket": "~9.2.1",
|
||||||
"start-server-and-test": "~2.0.0"
|
"start-server-and-test": "~2.0.0"
|
||||||
},
|
},
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
<div id="blockchain-container" [dir]="timeLtr ? 'rtl' : 'ltr'" #blockchainContainer
|
<div id="blockchain-container" [dir]="timeLtr ? 'rtl' : 'ltr'" #blockchainContainer
|
||||||
[class.menu-open]="menuOpen"
|
[class.menu-open]="menuOpen"
|
||||||
[class.menu-closing]="menuSliding && !menuOpen"
|
[class.menu-closing]="menuSliding && !menuOpen"
|
||||||
|
[class.with-menu]="hasMenu"
|
||||||
(mousedown)="onMouseDown($event)"
|
(mousedown)="onMouseDown($event)"
|
||||||
(pointerdown)="onPointerDown($event)"
|
(pointerdown)="onPointerDown($event)"
|
||||||
(touchmove)="onTouchMove($event)"
|
(touchmove)="onTouchMove($event)"
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
overflow-y: hidden;
|
overflow-y: hidden;
|
||||||
scrollbar-width: none;
|
scrollbar-width: none;
|
||||||
-ms-overflow-style: none;
|
-ms-overflow-style: none;
|
||||||
width: calc(100% + 120px);
|
width: 100%;
|
||||||
|
|
||||||
transform: translateX(0px);
|
transform: translateX(0px);
|
||||||
transition: transform 0;
|
transition: transform 0;
|
||||||
@ -20,6 +20,10 @@
|
|||||||
transform: translateX(0px);
|
transform: translateX(0px);
|
||||||
transition: transform 0.25s;
|
transition: transform 0.25s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.with-menu {
|
||||||
|
width: calc(100% + 120px);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#blockchain-container::-webkit-scrollbar {
|
#blockchain-container::-webkit-scrollbar {
|
||||||
|
@ -60,11 +60,16 @@ export class StartComponent implements OnInit, AfterViewChecked, OnDestroy {
|
|||||||
menuSliding: boolean = false;
|
menuSliding: boolean = false;
|
||||||
menuTimeout: number;
|
menuTimeout: number;
|
||||||
|
|
||||||
|
hasMenu = false;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private stateService: StateService,
|
private stateService: StateService,
|
||||||
private cd: ChangeDetectorRef,
|
private cd: ChangeDetectorRef,
|
||||||
) {
|
) {
|
||||||
this.isiOS = ['iPhone','iPod','iPad'].includes((navigator as any)?.userAgentData?.platform || navigator.platform);
|
this.isiOS = ['iPhone','iPod','iPad'].includes((navigator as any)?.userAgentData?.platform || navigator.platform);
|
||||||
|
if (this.stateService.network === '') {
|
||||||
|
this.hasMenu = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
@ -1,6 +1,19 @@
|
|||||||
var https = require('https');
|
var https = require('https');
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var crypto = require('crypto');
|
var crypto = require('crypto');
|
||||||
|
var path = require('node:path');
|
||||||
|
const LOG_TAG = '[sync-assets]';
|
||||||
|
let verbose = false;
|
||||||
|
|
||||||
|
if (parseInt(process.env.SKIP_SYNC) === 1) {
|
||||||
|
console.log(`${LOG_TAG} SKIP_SYNC is set, not checking any assets`);
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parseInt(process.env.VERBOSE) === 1) {
|
||||||
|
console.log(`${LOG_TAG} VERBOSE is set, logs will be more verbose`);
|
||||||
|
verbose = true;
|
||||||
|
}
|
||||||
|
|
||||||
const CONFIG_FILE_NAME = 'mempool-frontend-config.json';
|
const CONFIG_FILE_NAME = 'mempool-frontend-config.json';
|
||||||
let configContent = {};
|
let configContent = {};
|
||||||
@ -8,6 +21,13 @@ let configContent = {};
|
|||||||
var PATH;
|
var PATH;
|
||||||
if (process.argv[2]) {
|
if (process.argv[2]) {
|
||||||
PATH = process.argv[2];
|
PATH = process.argv[2];
|
||||||
|
PATH += PATH.endsWith("/") ? "" : "/"
|
||||||
|
PATH = path.normalize(PATH);
|
||||||
|
console.log(`[sync-assets] using PATH ${PATH}`);
|
||||||
|
if (!fs.existsSync(PATH)){
|
||||||
|
console.log(`${LOG_TAG} ${PATH} does not exist, creating`);
|
||||||
|
fs.mkdirSync(PATH, { recursive: true });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!PATH) {
|
if (!PATH) {
|
||||||
@ -17,12 +37,12 @@ if (!PATH) {
|
|||||||
try {
|
try {
|
||||||
const rawConfig = fs.readFileSync(CONFIG_FILE_NAME);
|
const rawConfig = fs.readFileSync(CONFIG_FILE_NAME);
|
||||||
configContent = JSON.parse(rawConfig);
|
configContent = JSON.parse(rawConfig);
|
||||||
console.log(`${CONFIG_FILE_NAME} file found, using provided config`);
|
console.log(`${LOG_TAG} ${CONFIG_FILE_NAME} file found, using provided config`);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e.code !== 'ENOENT') {
|
if (e.code !== 'ENOENT') {
|
||||||
throw new Error(e);
|
throw new Error(e);
|
||||||
} else {
|
} else {
|
||||||
console.log(`${CONFIG_FILE_NAME} file not found, using default config`);
|
console.log(`${LOG_TAG} ${CONFIG_FILE_NAME} file not found, using default config`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,6 +57,11 @@ function download(filename, url) {
|
|||||||
})
|
})
|
||||||
.on('error', function(e) {
|
.on('error', function(e) {
|
||||||
throw new Error(e);
|
throw new Error(e);
|
||||||
|
})
|
||||||
|
.on('finish', () => {
|
||||||
|
if (verbose) {
|
||||||
|
console.log(`${LOG_TAG} Finished downloading ${url} to ${filename}`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,12 +69,18 @@ function getLocalHash(filePath) {
|
|||||||
const size = fs.statSync(filePath);
|
const size = fs.statSync(filePath);
|
||||||
const buffer = fs.readFileSync(filePath);
|
const buffer = fs.readFileSync(filePath);
|
||||||
const bufferWithHeader = Buffer.concat([Buffer.from('blob '), Buffer.from(`${size.size}`), Buffer.from('\0'), buffer]);
|
const bufferWithHeader = Buffer.concat([Buffer.from('blob '), Buffer.from(`${size.size}`), Buffer.from('\0'), buffer]);
|
||||||
return crypto.createHash('sha1').update(bufferWithHeader).digest('hex');
|
const hash = crypto.createHash('sha1').update(bufferWithHeader).digest('hex');
|
||||||
|
|
||||||
|
if (verbose) {
|
||||||
|
console.log(`${LOG_TAG} \tgetLocalHash ${filePath} ${hash}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
function downloadMiningPoolLogos$() {
|
function downloadMiningPoolLogos$() {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
console.log('Checking if mining pool logos needs downloading or updating...');
|
console.log(`${LOG_TAG} Checking if mining pool logos needs downloading or updating...`);
|
||||||
const options = {
|
const options = {
|
||||||
host: 'api.github.com',
|
host: 'api.github.com',
|
||||||
path: '/repos/mempool/mining-pool-logos/contents/',
|
path: '/repos/mempool/mining-pool-logos/contents/',
|
||||||
@ -58,7 +89,7 @@ function downloadMiningPoolLogos$() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (githubSecret) {
|
if (githubSecret) {
|
||||||
console.log('Downloading the mining pool logos with authentication');
|
console.log(`${LOG_TAG} Downloading the mining pool logos with authentication`);
|
||||||
options.headers['authorization'] = `Bearer ${githubSecret}`;
|
options.headers['authorization'] = `Bearer ${githubSecret}`;
|
||||||
options.headers['X-GitHub-Api-Version'] = '2022-11-28';
|
options.headers['X-GitHub-Api-Version'] = '2022-11-28';
|
||||||
}
|
}
|
||||||
@ -79,21 +110,29 @@ 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) {
|
||||||
|
console.log(`${LOG_TAG} Remote ${poolLogo.name} logo hash ${poolLogo.sha}`);
|
||||||
|
console.log(`${LOG_TAG} \tchecking if ${filePath} exists: ${fs.existsSync(filePath)}`);
|
||||||
|
}
|
||||||
if (localHash !== poolLogo.sha) {
|
if (localHash !== poolLogo.sha) {
|
||||||
console.log(`${poolLogo.name} is different on the remote, downloading...`);
|
console.log(`${LOG_TAG} \t\t${poolLogo.name} is different on the remote, downloading...`);
|
||||||
download(filePath, poolLogo.download_url);
|
download(filePath, poolLogo.download_url);
|
||||||
downloadedCount++;
|
downloadedCount++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log(`${poolLogo.name} is missing, downloading...`);
|
console.log(`${LOG_TAG} ${poolLogo.name} is missing, downloading...`);
|
||||||
|
const miningPoolsDir = PATH + `mining-pools/`;
|
||||||
|
if (!fs.existsSync(miningPoolsDir)){
|
||||||
|
fs.mkdirSync(miningPoolsDir, { recursive: true });
|
||||||
|
}
|
||||||
download(filePath, poolLogo.download_url);
|
download(filePath, poolLogo.download_url);
|
||||||
downloadedCount++;
|
downloadedCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(`Downloaded ${downloadedCount} and skipped ${poolLogos.length - downloadedCount} existing mining pool logos`);
|
console.log(`${LOG_TAG} Downloaded ${downloadedCount} and skipped ${poolLogos.length - downloadedCount} existing mining pool logos`);
|
||||||
resolve();
|
resolve();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
reject(`Unable to download mining pool logos. Trying again at next restart. Reason: ${e instanceof Error ? e.message : e}`);
|
reject(`Unable to download mining pool logos. Trying again at next restart. Reason: ${e instanceof Error ? e.message : e}`);
|
||||||
@ -109,7 +148,7 @@ function downloadMiningPoolLogos$() {
|
|||||||
|
|
||||||
function downloadPromoVideoSubtiles$() {
|
function downloadPromoVideoSubtiles$() {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
console.log('Checking if promo video subtitles needs downloading or updating...');
|
console.log(`${LOG_TAG} Checking if promo video subtitles needs downloading or updating...`);
|
||||||
const options = {
|
const options = {
|
||||||
host: 'api.github.com',
|
host: 'api.github.com',
|
||||||
path: '/repos/mempool/mempool-promo/contents/subtitles',
|
path: '/repos/mempool/mempool-promo/contents/subtitles',
|
||||||
@ -118,7 +157,7 @@ function downloadPromoVideoSubtiles$() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (githubSecret) {
|
if (githubSecret) {
|
||||||
console.log('Downloading the promo video subtitles with authentication');
|
console.log(`${LOG_TAG} Downloading the promo video subtitles with authentication`);
|
||||||
options.headers['authorization'] = `Bearer ${githubSecret}`;
|
options.headers['authorization'] = `Bearer ${githubSecret}`;
|
||||||
options.headers['X-GitHub-Api-Version'] = '2022-11-28';
|
options.headers['X-GitHub-Api-Version'] = '2022-11-28';
|
||||||
}
|
}
|
||||||
@ -140,21 +179,30 @@ 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) {
|
||||||
|
console.log(`${LOG_TAG} ${language.name} remote promo video hash ${language.sha}`);
|
||||||
|
}
|
||||||
const localHash = getLocalHash(filePath);
|
const localHash = getLocalHash(filePath);
|
||||||
|
|
||||||
if (localHash !== language.sha) {
|
if (localHash !== language.sha) {
|
||||||
console.log(`${language.name} is different on the remote, updating`);
|
console.log(`${LOG_TAG} ${language.name} is different on the remote, updating`);
|
||||||
download(filePath, language.download_url);
|
download(filePath, language.download_url);
|
||||||
downloadedCount++;
|
downloadedCount++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log(`${language.name} is missing, downloading`);
|
console.log(`${LOG_TAG} ${language.name} is missing, downloading`);
|
||||||
|
const promoVideosDir = PATH + `promo-video/`;
|
||||||
|
if (!fs.existsSync(promoVideosDir)){
|
||||||
|
fs.mkdirSync(promoVideosDir, { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
download(filePath, language.download_url);
|
download(filePath, language.download_url);
|
||||||
downloadedCount++;
|
downloadedCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(`Downloaded ${downloadedCount} and skipped ${videoLanguages.length - downloadedCount} existing video subtitles`);
|
console.log(`${LOG_TAG} Downloaded ${downloadedCount} and skipped ${videoLanguages.length - downloadedCount} existing video subtitles`);
|
||||||
resolve();
|
resolve();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
reject(`Unable to download video subtitles. Trying again at next restart. Reason: ${e instanceof Error ? e.message : e}`);
|
reject(`Unable to download video subtitles. Trying again at next restart. Reason: ${e instanceof Error ? e.message : e}`);
|
||||||
@ -170,7 +218,7 @@ function downloadPromoVideoSubtiles$() {
|
|||||||
|
|
||||||
function downloadPromoVideo$() {
|
function downloadPromoVideo$() {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
console.log('Checking if promo video needs downloading or updating...');
|
console.log(`${LOG_TAG} Checking if promo video needs downloading or updating...`);
|
||||||
const options = {
|
const options = {
|
||||||
host: 'api.github.com',
|
host: 'api.github.com',
|
||||||
path: '/repos/mempool/mempool-promo/contents',
|
path: '/repos/mempool/mempool-promo/contents',
|
||||||
@ -179,7 +227,7 @@ function downloadPromoVideo$() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (githubSecret) {
|
if (githubSecret) {
|
||||||
console.log('Downloading the promo videos with authentication');
|
console.log(`${LOG_TAG} Downloading the promo video with authentication`);
|
||||||
options.headers['authorization'] = `Bearer ${githubSecret}`;
|
options.headers['authorization'] = `Bearer ${githubSecret}`;
|
||||||
options.headers['X-GitHub-Api-Version'] = '2022-11-28';
|
options.headers['X-GitHub-Api-Version'] = '2022-11-28';
|
||||||
}
|
}
|
||||||
@ -202,18 +250,19 @@ 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);
|
||||||
|
|
||||||
if (localHash !== item.sha) {
|
if (localHash !== item.sha) {
|
||||||
console.log(`mempool-promo.mp4 is different on the remote, updating`);
|
console.log(`${LOG_TAG} \tmempool-promo.mp4 is different on the remote, updating`);
|
||||||
download(filePath, item.download_url);
|
download(filePath, item.download_url);
|
||||||
console.log('mempool-promo.mp4 downloaded.');
|
console.log(`${LOG_TAG} \tmempool-promo.mp4 downloaded.`);
|
||||||
} else {
|
} else {
|
||||||
console.log(`mempool-promo.mp4 is already up to date. Skipping.`);
|
console.log(`${LOG_TAG} \tmempool-promo.mp4 is already up to date. Skipping.`);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log(`mempool-promo.mp4 is missing, downloading`);
|
console.log(`${LOG_TAG} \tmempool-promo.mp4 is missing, downloading`);
|
||||||
download(filePath, item.download_url);
|
download(filePath, item.download_url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -232,30 +281,47 @@ function downloadPromoVideo$() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let assetsJsonUrl = 'https://raw.githubusercontent.com/mempool/asset_registry_db/master/index.json';
|
|
||||||
let assetsMinimalJsonUrl = 'https://raw.githubusercontent.com/mempool/asset_registry_db/master/index.minimal.json';
|
|
||||||
|
|
||||||
if (configContent.BASE_MODULE && configContent.BASE_MODULE === 'liquid') {
|
if (configContent.BASE_MODULE && configContent.BASE_MODULE === 'liquid') {
|
||||||
assetsJsonUrl = 'https://raw.githubusercontent.com/Blockstream/asset_registry_db/master/index.json';
|
const assetsJsonUrl = 'https://raw.githubusercontent.com/Blockstream/asset_registry_db/master/index.json';
|
||||||
assetsMinimalJsonUrl = 'https://raw.githubusercontent.com/Blockstream/asset_registry_db/master/index.minimal.json';
|
const assetsMinimalJsonUrl = 'https://raw.githubusercontent.com/Blockstream/asset_registry_db/master/index.minimal.json';
|
||||||
|
const testnetAssetsJsonUrl = 'https://raw.githubusercontent.com/Blockstream/asset_registry_testnet_db/master/index.json';
|
||||||
|
const testnetAssetsMinimalJsonUrl = 'https://raw.githubusercontent.com/Blockstream/asset_registry_testnet_db/master/index.minimal.json';
|
||||||
|
|
||||||
|
console.log(`${LOG_TAG} Downloading assets`);
|
||||||
|
download(PATH + 'assets.json', assetsJsonUrl);
|
||||||
|
|
||||||
|
console.log(`${LOG_TAG} Downloading assets minimal`);
|
||||||
|
download(PATH + 'assets.minimal.json', assetsMinimalJsonUrl);
|
||||||
|
|
||||||
|
console.log(`${LOG_TAG} Downloading testnet assets`);
|
||||||
|
download(PATH + 'assets-testnet.json', testnetAssetsJsonUrl);
|
||||||
|
|
||||||
|
console.log(`${LOG_TAG} Downloading testnet assets minimal`);
|
||||||
|
download(PATH + 'assets-testnet.minimal.json', testnetAssetsMinimalJsonUrl);
|
||||||
|
} else {
|
||||||
|
if (verbose) {
|
||||||
|
console.log(`${LOG_TAG} BASE_MODULE is not set to Liquid (${configContent.BASE_MODULE}), skipping downloading assets`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const testnetAssetsJsonUrl = 'https://raw.githubusercontent.com/Blockstream/asset_registry_testnet_db/master/index.json';
|
(() => {
|
||||||
const testnetAssetsMinimalJsonUrl = 'https://raw.githubusercontent.com/Blockstream/asset_registry_testnet_db/master/index.minimal.json';
|
if (verbose) {
|
||||||
|
console.log(`${LOG_TAG} Downloading mining pool logos`);
|
||||||
console.log('Downloading assets');
|
}
|
||||||
download(PATH + 'assets.json', assetsJsonUrl);
|
downloadMiningPoolLogos$()
|
||||||
console.log('Downloading assets minimal');
|
.then(() => {
|
||||||
download(PATH + 'assets.minimal.json', assetsMinimalJsonUrl);
|
if (verbose) {
|
||||||
console.log('Downloading testnet assets');
|
console.log(`${LOG_TAG} Downloading promo video subtitles`);
|
||||||
download(PATH + 'assets-testnet.json', testnetAssetsJsonUrl);
|
}
|
||||||
console.log('Downloading testnet assets minimal');
|
downloadPromoVideoSubtiles$();
|
||||||
download(PATH + 'assets-testnet.minimal.json', testnetAssetsMinimalJsonUrl);
|
})
|
||||||
|
.then(() => {
|
||||||
downloadMiningPoolLogos$()
|
if (verbose) {
|
||||||
.then(() => downloadPromoVideoSubtiles$())
|
console.log(`${LOG_TAG} Downloading promo video`);
|
||||||
.then(() => downloadPromoVideo$())
|
}
|
||||||
|
downloadPromoVideo$();
|
||||||
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
throw new Error(error);
|
throw new Error(error);
|
||||||
});
|
});
|
||||||
|
})();
|
@ -1046,8 +1046,8 @@ echo "[*] Installing nvm.sh from GitHub"
|
|||||||
osSudo "${MEMPOOL_USER}" sh -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | zsh'
|
osSudo "${MEMPOOL_USER}" sh -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | zsh'
|
||||||
|
|
||||||
echo "[*] Building NodeJS v20.5.1 via nvm.sh"
|
echo "[*] Building NodeJS v20.5.1 via nvm.sh"
|
||||||
osSudo "${MEMPOOL_USER}" zsh -c 'source ~/.zshrc ; nvm install v20.5.1 --shared-zlib'
|
osSudo "${MEMPOOL_USER}" zsh -c 'source ~/.zshrc ; nvm install v20.7.0 --shared-zlib'
|
||||||
osSudo "${MEMPOOL_USER}" zsh -c 'source ~/.zshrc ; nvm alias default 20.5.1'
|
osSudo "${MEMPOOL_USER}" zsh -c 'source ~/.zshrc ; nvm alias default 20.7.0'
|
||||||
|
|
||||||
####################
|
####################
|
||||||
# Tor installation #
|
# Tor installation #
|
||||||
@ -1489,7 +1489,7 @@ EOF
|
|||||||
osSudo "${UNFURL_USER}" sh -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | zsh'
|
osSudo "${UNFURL_USER}" sh -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | zsh'
|
||||||
|
|
||||||
echo "[*] Building NodeJS via nvm.sh"
|
echo "[*] Building NodeJS via nvm.sh"
|
||||||
osSudo "${UNFURL_USER}" zsh -c 'source ~/.zshrc ; nvm install v16.16.0 --shared-zlib'
|
osSudo "${UNFURL_USER}" zsh -c 'source ~/.zshrc ; nvm install v20.7.0 --shared-zlib'
|
||||||
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env zsh
|
#!/usr/bin/env zsh
|
||||||
export NVM_DIR="$HOME/.nvm"
|
export NVM_DIR="$HOME/.nvm"
|
||||||
source "$NVM_DIR/nvm.sh"
|
source "$NVM_DIR/nvm.sh"
|
||||||
nvm use v20.5.1
|
nvm use v20.7.0
|
||||||
|
|
||||||
# start all mempool backends that exist
|
# start all mempool backends that exist
|
||||||
for site in mainnet mainnet-lightning testnet testnet-lightning signet signet-lightning bisq liquid liquidtestnet;do
|
for site in mainnet mainnet-lightning testnet testnet-lightning signet signet-lightning bisq liquid liquidtestnet;do
|
||||||
|
@ -5,3 +5,4 @@ proxy_cache_path /var/cache/nginx/slurper keys_zone=slurper:20m levels=1:2 inact
|
|||||||
proxy_cache_path /var/cache/nginx/services keys_zone=services:20m levels=1:2 inactive=365d max_size=100m;
|
proxy_cache_path /var/cache/nginx/services keys_zone=services:20m levels=1:2 inactive=365d max_size=100m;
|
||||||
proxy_cache_path /var/cache/nginx/markets keys_zone=markets:20m levels=1:2 inactive=365d max_size=100m;
|
proxy_cache_path /var/cache/nginx/markets keys_zone=markets:20m levels=1:2 inactive=365d max_size=100m;
|
||||||
types_hash_max_size 4096;
|
types_hash_max_size 4096;
|
||||||
|
proxy_buffer_size 8k;
|
7
scripts/get_backend_hash.sh
Normal file
7
scripts/get_backend_hash.sh
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
for LOCATION in fmt va1 fra tk7
|
||||||
|
do
|
||||||
|
for NODE in 201 202 203 204 205 206
|
||||||
|
do
|
||||||
|
echo $(curl -sk https://node$NODE.$LOCATION.mempool.space/api/v1/backend-info)
|
||||||
|
done
|
||||||
|
done
|
Loading…
x
Reference in New Issue
Block a user