mirror of
https://github.com/alexgo-io/alex-mocknet.git
synced 2026-01-12 14:24:40 +08:00
feat: shim development environment.
This commit is contained in:
2
development/.gitignore
vendored
2
development/.gitignore
vendored
@@ -1,2 +0,0 @@
|
||||
traefik/localhost-key.pem
|
||||
traefik/localhost.pem
|
||||
@@ -1,38 +0,0 @@
|
||||
```
|
||||
curl -sL stacks-blockchain.localhost/v2/info | jq
|
||||
```
|
||||
|
||||
## Stacks
|
||||
|
||||
install stacks
|
||||
|
||||
```shell
|
||||
npm i -g @stacks/cli
|
||||
```
|
||||
|
||||
use cert in node
|
||||
```shell
|
||||
export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
|
||||
```
|
||||
|
||||
```shell
|
||||
stacks -i -I http://stacks-blockchain-api-http.localhost \
|
||||
send_tokens \
|
||||
--address $TO_ADDRESS \
|
||||
--amount 110000000 \
|
||||
--fee 100000 \
|
||||
--nonce 0 \
|
||||
--payment_key $PAYMENT_KEY \
|
||||
;
|
||||
```
|
||||
|
||||
```shell
|
||||
stacks get_stacks_wallet_key "12 words wallet key from chrome extentions"
|
||||
```
|
||||
|
||||
```shell
|
||||
stacks -i \
|
||||
-I http://stacks-blockchain-api-http.localhost \
|
||||
balance $ADDRESS \
|
||||
;
|
||||
```
|
||||
@@ -1,49 +1,8 @@
|
||||
version: "3.7"
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:v2.5
|
||||
command:
|
||||
- "--log.level=DEBUG"
|
||||
- "--api.insecure=true"
|
||||
- "--providers.docker=true"
|
||||
- "--providers.docker.exposedbydefault=false"
|
||||
- "--providers.file.watch=true"
|
||||
- "--providers.file.directory=/file-providers"
|
||||
- "--entrypoints.web.address=:80"
|
||||
# - "--entrypoints.web.http.redirections.entrypoint.to=websecure"
|
||||
# - "--entrypoints.web.http.redirections.entrypoint.permanent=false"
|
||||
- "--entrypoints.websecure.address=:443"
|
||||
- "--entryPoints.tcppg.address=:5555"
|
||||
- "--accesslog"
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "8080:8080"
|
||||
- "5555:5555"
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
- "./traefik:/traefik"
|
||||
- "./file-providers:/file-providers"
|
||||
|
||||
labels:
|
||||
- traefik.http.services.traefik-public.loadbalancer.server.port=80
|
||||
- traefik.http.middlewares.whoami-redirectscheme.redirectscheme.scheme=https
|
||||
- traefik.enable=true
|
||||
networks:
|
||||
- backend
|
||||
whoami:
|
||||
image: containous/whoami
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=development_backend
|
||||
- traefik.http.routers.whoami.entrypoints=web,websecure
|
||||
- traefik.http.routers.whoami.rule=Host(`whoami.localhost`)
|
||||
- traefik.http.routers.whoami.tls=true
|
||||
- traefik.http.services.whoami.loadbalancer.server.port=80
|
||||
networks:
|
||||
- backend
|
||||
postgres:
|
||||
image: "postgres:12.2"
|
||||
shm_size: 2gb
|
||||
ports:
|
||||
- "5490:5432"
|
||||
environment:
|
||||
@@ -53,24 +12,13 @@ services:
|
||||
POSTGRES_PORT: 5432
|
||||
networks:
|
||||
- backend
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=development_backend
|
||||
- traefik.http.routers.postgres.entrypoints=tcppg
|
||||
- traefik.http.routers.postgres.rule=Host(`pg.localhost`)
|
||||
- traefik.http.services.postgres.loadbalancer.server.port=5432
|
||||
stacks-blockchain:
|
||||
image: blockstack/stacks-blockchain
|
||||
command: stacks-node start --config=/app/config/Stacks-dev.toml
|
||||
restart: on-failure
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=development_backend
|
||||
- traefik.http.routers.stacks_blockchain.entrypoints=web,websecure
|
||||
- traefik.http.routers.stacks_blockchain.rule=Host(`stacks-blockchain.localhost`)
|
||||
- traefik.http.services.stacks_blockchain.loadbalancer.server.port=20443
|
||||
- traefik.http.routers.stacks_blockchain.tls=true
|
||||
image: blockstack/stacks-blockchain:2.05.0.1.0
|
||||
command: sh -c "/wait && stacks-node start --config=/app/config/Stacks.toml"
|
||||
environment:
|
||||
WAIT_BEFORE: 3
|
||||
WAIT_AFTER: 3
|
||||
WAIT_HOSTS: "stacks-blockchain-api:3700"
|
||||
NOP_BLOCKSTACK_DEBUG: 1
|
||||
STACKS_EVENT_OBSERVER: stacks-blockchain-api:3700
|
||||
XBLOCKSTACK_DEBUG: 1
|
||||
@@ -90,34 +38,16 @@ services:
|
||||
- "20443:20443"
|
||||
- "20444:20444"
|
||||
volumes:
|
||||
- ./stacks-blockchain/:/app/config
|
||||
- ./stacks-blockchain/config:/app/config
|
||||
- ./stacks-blockchain/chaindata:/tmp/stacks-blockchain-data
|
||||
- ./docker/wait:/wait
|
||||
networks:
|
||||
- backend
|
||||
stacks-blockchain-api:
|
||||
image: blockstack/stacks-blockchain-api
|
||||
image: blockstack/stacks-blockchain-api:2.1.1
|
||||
restart: on-failure
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=development_backend
|
||||
- traefik.http.services.stacks_blockchain_api.loadbalancer.server.port=3999
|
||||
- traefik.http.routers.stacks_blockchain_api.entrypoints=web,websecure
|
||||
- traefik.http.routers.stacks_blockchain_api.rule=Host(`stacks-blockchain-api.localhost`)
|
||||
- traefik.http.routers.stacks_blockchain_api.service=stacks_blockchain_api
|
||||
- traefik.http.routers.stacks_blockchain_api.tls=true
|
||||
|
||||
- traefik.http.services.stacks_blockchain_api_http.loadbalancer.server.port=3999
|
||||
- traefik.http.routers.stacks_blockchain_api_http.entrypoints=web
|
||||
- traefik.http.routers.stacks_blockchain_api_http.rule=Host(`stacks-blockchain-api-http.localhost`)
|
||||
- traefik.http.routers.stacks_blockchain_api_http.service=stacks_blockchain_api
|
||||
- traefik.http.routers.stacks_blockchain_api.tls=false
|
||||
|
||||
- traefik.http.services.stacks_blockchain_event.loadbalancer.server.port=9153
|
||||
- traefik.http.routers.stacks_blockchain_event.entrypoints=web
|
||||
- traefik.http.routers.stacks_blockchain_event.rule=Host(`stacks-blockchain-event.localhost`)
|
||||
- traefik.http.routers.stacks_blockchain_event.service=stacks_blockchain_event
|
||||
- traefik.http.routers.stacks_blockchain_event.tls=true
|
||||
environment:
|
||||
WAIT_HOSTS: "postgres:5432"
|
||||
PG_HOST: postgres
|
||||
PG_PORT: 5432
|
||||
PG_USER: postgres
|
||||
@@ -136,7 +66,8 @@ services:
|
||||
- "3999:3999"
|
||||
- "9153:9153"
|
||||
volumes:
|
||||
- ./stacks-blockchain/:/app/config
|
||||
- ./docker/wait:/wait
|
||||
|
||||
networks:
|
||||
- backend
|
||||
depends_on:
|
||||
|
||||
BIN
development/docker/wait
Executable file
BIN
development/docker/wait
Executable file
Binary file not shown.
@@ -1,12 +0,0 @@
|
||||
tcp:
|
||||
routers:
|
||||
to-pg-svc:
|
||||
entryPoints:
|
||||
- "tcppg"
|
||||
rule: "HostSNI(`*`)"
|
||||
service: pg-svc
|
||||
services:
|
||||
pg-svc:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- address: "postgres:5432"
|
||||
@@ -1,4 +0,0 @@
|
||||
tls:
|
||||
certificates:
|
||||
- certFile: /traefik/localhost.pem
|
||||
keyFile: /traefik/localhost-key.pem
|
||||
@@ -1,19 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||
|
||||
pushd $DIR
|
||||
|
||||
if ! command -v mkcert &> /dev/null
|
||||
then
|
||||
brew install mkcert
|
||||
mkcert -install
|
||||
else
|
||||
mkcert -cert-file "$DIR"/traefik/localhost.pem \
|
||||
-key-file "$DIR"/traefik/localhost-key.pem \
|
||||
localhost $(cat docker-compose.yml | yq e ".services.*.labels" - | grep \=Host\( | sed 's/.*Host(`//g' | sed 's/`)//g') 127.0.0.1 ::1 \
|
||||
;
|
||||
mkcert -install
|
||||
fi
|
||||
|
||||
popd
|
||||
@@ -1,14 +0,0 @@
|
||||
[node]
|
||||
rpc_bind = "0.0.0.0:20443"
|
||||
p2p_bind = "0.0.0.0:20444"
|
||||
bootstrap_node = "02da7a464ac770ae8337a343670778b93410f2f3fef6bea98dd1c3e9224459d36b@seed-0.mainnet.stacks.co:20444,02afeae522aab5f8c99a00ddf75fbcb4a641e052dd48836408d9cf437344b63516@seed-1.mainnet.stacks.co:20444,03652212ea76be0ed4cd83a25c06e57819993029a7b9999f7d63c36340b34a4e62@seed-2.mainnet.stacks.co:20444"
|
||||
|
||||
[burnchain]
|
||||
chain = "bitcoin"
|
||||
mode = "mainnet"
|
||||
peer_host = "bitcoin.blockstack.com"
|
||||
username = "blockstack"
|
||||
password = "blockstacksystem"
|
||||
rpc_port = 8332
|
||||
peer_port = 8333
|
||||
magic_byte = "X2"
|
||||
@@ -1,29 +0,0 @@
|
||||
[node]
|
||||
name = "helium-node"
|
||||
rpc_bind = "0.0.0.0:20443"
|
||||
#working_dir = "/tmp/stacks-blockchain-data"
|
||||
|
||||
[burnchain]
|
||||
chain = "bitcoin"
|
||||
mode = "mocknet"
|
||||
commit_anchor_block_within = 10000
|
||||
|
||||
[[mstx_balance]]
|
||||
address = "STB44HYPYAT2BB2QE513NSP81HTMYWBJP02HPGK6"
|
||||
amount = 10000000000000000
|
||||
# secretKey = "cb3df38053d132895220b9ce471f6b676db5b9bf0b4adefb55f2118ece2478df01"
|
||||
|
||||
[[mstx_balance]]
|
||||
address = "ST11NJTTKGVT6D1HY4NJRVQWMQM7TVAR091EJ8P2Y"
|
||||
amount = 10000000000000000
|
||||
# secretKey = "21d43d2ae0da1d9d04cfcaac7d397a33733881081f0b2cd038062cf0ccbb752601"
|
||||
|
||||
[[mstx_balance]]
|
||||
address = "ST1HB1T8WRNBYB0Y3T7WXZS38NKKPTBR3EG9EPJKR"
|
||||
amount = 10000000000000000
|
||||
# secretKey = "c71700b07d520a8c9731e4d0f095aa6efb91e16e25fb27ce2b72e7b698f8127a01"
|
||||
|
||||
[[mstx_balance]]
|
||||
address = "STRYYQQ9M8KAF4NS7WNZQYY59X93XEKR31JP64CP"
|
||||
amount = 10000000000000000
|
||||
# secretKey = "e75dcb66f84287eaf347955e94fa04337298dbd95aa0dbb985771104ef1913db01"
|
||||
@@ -13,7 +13,7 @@ events_keys = ["*"]
|
||||
[burnchain]
|
||||
chain = "bitcoin"
|
||||
mode = "mocknet"
|
||||
commit_anchor_block_within = 2000
|
||||
commit_anchor_block_within = 10000
|
||||
|
||||
[[mstx_balance]]
|
||||
address = "STB44HYPYAT2BB2QE513NSP81HTMYWBJP02HPGK6"
|
||||
@@ -38,6 +38,6 @@ amount = 10000000000000000
|
||||
[connection_options]
|
||||
read_only_call_limit_write_length = 15000000
|
||||
read_only_call_limit_read_length = 100000000
|
||||
read_only_call_limit_write_count = 7750
|
||||
read_only_call_limit_read_count = 7750
|
||||
read_only_call_limit_write_count = 15500
|
||||
read_only_call_limit_read_count = 15500
|
||||
read_only_call_limit_runtime = 5000000000
|
||||
@@ -1,148 +0,0 @@
|
||||
const fs = require('fs');
|
||||
const https = require('https');
|
||||
const path = require('path');
|
||||
const util = require('util');
|
||||
const readline = require('readline');
|
||||
const { PassThrough, pipeline } = require('stream');
|
||||
const { execSync, execFileSync, spawn } = require('child_process');
|
||||
const { Storage } = require('@google-cloud/storage');
|
||||
const deepmerge = require('deepmerge');
|
||||
const sanitize = require('sanitize-filename');
|
||||
|
||||
const pipelineAsync = util.promisify(pipeline);
|
||||
|
||||
const BUCKET_NAME = 'blockstack-stacks-blockchain_artifacts';
|
||||
const BUCKET_URL = `https://${BUCKET_NAME}.storage.googleapis.com/`;
|
||||
|
||||
const envVars = {
|
||||
STACKS_BLOCKCHAIN_REPO: 'https://github.com/blockstack/stacks-blockchain.git',
|
||||
STACKS_BLOCKCHAIN_BRANCH: 'master',
|
||||
STACKS_BLOCKCHAIN_BIN: 'stacks-node-krypton',
|
||||
STACKS_BLOCKCHAIN_DIST_PLATFORM: 'linux-x64',
|
||||
};
|
||||
Object.entries(envVars).forEach(([key, val]) => envVars[key] = process.env[key] || val);
|
||||
|
||||
const gitCommit = (() => {
|
||||
console.log(`Fetching commit hash for ${envVars.STACKS_BLOCKCHAIN_REPO}#${envVars.STACKS_BLOCKCHAIN_BRANCH}`);
|
||||
const [commitHash] = execFileSync('git', ['ls-remote', envVars.STACKS_BLOCKCHAIN_REPO, envVars.STACKS_BLOCKCHAIN_BRANCH], {encoding: 'utf8'}).split(/(\s+)/);
|
||||
return commitHash;
|
||||
})();
|
||||
const shortCommit = gitCommit.substr(0, 7);
|
||||
console.log(`Using commit hash: ${gitCommit}`);
|
||||
|
||||
const dateString = new Date().toISOString()
|
||||
const [dateStringShort] = dateString.replace(/-/g, '').split('T');
|
||||
|
||||
const releaseFileName = sanitize([
|
||||
envVars.STACKS_BLOCKCHAIN_BIN, envVars.STACKS_BLOCKCHAIN_DIST_PLATFORM,
|
||||
dateStringShort, shortCommit, envVars.STACKS_BLOCKCHAIN_BRANCH
|
||||
].join('-'), { replacement: '-' });
|
||||
console.log(`Upload dist file: '${releaseFileName}'`);
|
||||
|
||||
|
||||
const storage = new Storage({
|
||||
projectId: 'ops-shared',
|
||||
// TODO: use env vars GOOGLE_APPLICATION_CREDENTIALS (path to keyfile json)
|
||||
});
|
||||
const bucket = storage.bucket(BUCKET_NAME);
|
||||
|
||||
const buildDist = () => new Promise((resolve, reject) => {
|
||||
// const buildOutputDir = fs.mkdtempSync(path.join(__dirname, '.stacks-core-build-'));
|
||||
const buildOutputDir = path.join(__dirname, `.stacks-core-build-${shortCommit}`);
|
||||
const binFileResult = `${buildOutputDir}/bin/stacks-node`;
|
||||
fs.mkdirSync(buildOutputDir, { recursive: true });
|
||||
if (fs.existsSync(binFileResult)) {
|
||||
console.warn(`Skipping build step -- already exists at ${binFileResult}`);
|
||||
resolve(binFileResult);
|
||||
return;
|
||||
}
|
||||
console.log(`Building stacks-blockchain binaries into '${buildOutputDir}'`);
|
||||
const cargoCmd = `cargo install --git https://github.com/blockstack/stacks-blockchain.git --rev "${gitCommit}" stacks-node --bin=stacks-node --root /build-out`;
|
||||
const dockerRunCmd = `docker run -v "${buildOutputDir}:/build-out" rust:stretch ${cargoCmd}`;
|
||||
console.log(`Running build via docker: ${dockerRunCmd}`);
|
||||
const result = spawn(dockerRunCmd, {
|
||||
cwd: __dirname,
|
||||
shell: '/bin/bash',
|
||||
});
|
||||
readline.createInterface(result.stderr).on('line', console.error);
|
||||
readline.createInterface(result.stdout).on('line', console.log);
|
||||
result.on('error', (error) => reject(error))
|
||||
result.on('exit', (code, signal) => {
|
||||
if (code !== 0) {
|
||||
const msg = `Cargo bad exit code: ${code}, signal: ${signal}`;
|
||||
console.error(msg);
|
||||
process.exit(code);
|
||||
}
|
||||
console.log(`Build complete: ${binFileResult}`);
|
||||
resolve(binFileResult);
|
||||
});
|
||||
});
|
||||
|
||||
const getBucketFileUrl = (file) => BUCKET_URL + file;
|
||||
const fetchFile = (url) => new Promise((resolve, reject) => {
|
||||
const request = https.get(url, (response) => {
|
||||
if (response.statusCode < 200 || response.statusCode > 299) {
|
||||
reject(new Error('Failed to load page, status code: ' + response.statusCode));
|
||||
}
|
||||
const body = [];
|
||||
response.on('data', (chunk) => body.push(chunk));
|
||||
response.on('end', () => resolve(body.join('')));
|
||||
});
|
||||
request.on('error', (err) => reject(err))
|
||||
});
|
||||
|
||||
async function uploadBucketFile(distFilePath) {
|
||||
// First, upload the new (unique) dist file.
|
||||
console.log('Uploading release binary');
|
||||
await bucket.upload(distFilePath, {
|
||||
destination: releaseFileName,
|
||||
resumable: false,
|
||||
gzip: true,
|
||||
contentType: 'application/octet-stream',
|
||||
});
|
||||
const distFileUrl = getBucketFileUrl(releaseFileName);
|
||||
console.log(`Uploaded ${distFileUrl}`);
|
||||
|
||||
// Second, update the index.json pointers
|
||||
const releaseEntry = {
|
||||
git_branch: envVars.STACKS_BLOCKCHAIN_BRANCH,
|
||||
git_commit_hash: gitCommit,
|
||||
date: dateString,
|
||||
file: releaseFileName,
|
||||
url: getBucketFileUrl(releaseFileName)
|
||||
};
|
||||
console.log('Fetching latest release index.json');
|
||||
const indexFileUrl = getBucketFileUrl('index.json');
|
||||
const currentIndex = JSON.parse(await fetchFile(indexFileUrl));
|
||||
const indexEntry = {
|
||||
[envVars.STACKS_BLOCKCHAIN_BIN]: {
|
||||
[envVars.STACKS_BLOCKCHAIN_DIST_PLATFORM]: {
|
||||
latest: {...releaseEntry},
|
||||
releases: [
|
||||
{...releaseEntry}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
const indexDataStream = new PassThrough()
|
||||
indexDataStream.end(JSON.stringify(deepmerge(currentIndex, indexEntry), null, ' '));
|
||||
console.log('Uploading updated release index.json');
|
||||
const writeStream = bucket.file('index.json').createWriteStream({
|
||||
resumable: false,
|
||||
contentType: 'application/json',
|
||||
metadata: { cacheControl: 'no-cache' }
|
||||
});
|
||||
await pipelineAsync(indexDataStream, writeStream);
|
||||
console.log(`Updated ${indexFileUrl}`);
|
||||
console.log('Release distribution completed');
|
||||
}
|
||||
|
||||
async function run() {
|
||||
const distFilePath = await buildDist();
|
||||
await uploadBucketFile(distFilePath);
|
||||
}
|
||||
|
||||
run().catch((error) => {
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
});
|
||||
@@ -1,776 +0,0 @@
|
||||
{
|
||||
"name": "stacks-blockchain-dist-tool",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"@google-cloud/common": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-2.4.0.tgz",
|
||||
"integrity": "sha512-zWFjBS35eI9leAHhjfeOYlK5Plcuj/77EzstnrJIZbKgF/nkqjcQuGiMCpzCwOfPyUbz8ZaEOYgbHa759AKbjg==",
|
||||
"requires": {
|
||||
"@google-cloud/projectify": "^1.0.0",
|
||||
"@google-cloud/promisify": "^1.0.0",
|
||||
"arrify": "^2.0.0",
|
||||
"duplexify": "^3.6.0",
|
||||
"ent": "^2.2.0",
|
||||
"extend": "^3.0.2",
|
||||
"google-auth-library": "^5.5.0",
|
||||
"retry-request": "^4.0.0",
|
||||
"teeny-request": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"@google-cloud/paginator": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-2.0.3.tgz",
|
||||
"integrity": "sha512-kp/pkb2p/p0d8/SKUu4mOq8+HGwF8NPzHWkj+VKrIPQPyMRw8deZtrO/OcSiy9C/7bpfU5Txah5ltUNfPkgEXg==",
|
||||
"requires": {
|
||||
"arrify": "^2.0.0",
|
||||
"extend": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"@google-cloud/projectify": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-1.0.4.tgz",
|
||||
"integrity": "sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg=="
|
||||
},
|
||||
"@google-cloud/promisify": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-1.0.4.tgz",
|
||||
"integrity": "sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ=="
|
||||
},
|
||||
"@google-cloud/storage": {
|
||||
"version": "4.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-4.7.0.tgz",
|
||||
"integrity": "sha512-f0guAlbeg7Z0m3gKjCfBCu7FG9qS3M3oL5OQQxlvGoPtK7/qg3+W+KQV73O2/sbuS54n0Kh2mvT5K2FWzF5vVQ==",
|
||||
"requires": {
|
||||
"@google-cloud/common": "^2.1.1",
|
||||
"@google-cloud/paginator": "^2.0.0",
|
||||
"@google-cloud/promisify": "^1.0.0",
|
||||
"arrify": "^2.0.0",
|
||||
"compressible": "^2.0.12",
|
||||
"concat-stream": "^2.0.0",
|
||||
"date-and-time": "^0.13.0",
|
||||
"duplexify": "^3.5.0",
|
||||
"extend": "^3.0.2",
|
||||
"gaxios": "^3.0.0",
|
||||
"gcs-resumable-upload": "^2.2.4",
|
||||
"hash-stream-validation": "^0.2.2",
|
||||
"mime": "^2.2.0",
|
||||
"mime-types": "^2.0.8",
|
||||
"onetime": "^5.1.0",
|
||||
"p-limit": "^2.2.0",
|
||||
"pumpify": "^2.0.0",
|
||||
"readable-stream": "^3.4.0",
|
||||
"snakeize": "^0.1.0",
|
||||
"stream-events": "^1.0.1",
|
||||
"through2": "^3.0.0",
|
||||
"xdg-basedir": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"@tootallnate/once": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.0.0.tgz",
|
||||
"integrity": "sha512-KYyTT/T6ALPkIRd2Ge080X/BsXvy9O0hcWTtMWkPvwAwF99+vn6Dv4GzrFT/Nn1LePr+FFDbRXXlqmsy9lw2zA=="
|
||||
},
|
||||
"abort-controller": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
|
||||
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
|
||||
"requires": {
|
||||
"event-target-shim": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"agent-base": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz",
|
||||
"integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==",
|
||||
"requires": {
|
||||
"debug": "4"
|
||||
}
|
||||
},
|
||||
"arrify": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
|
||||
"integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
|
||||
},
|
||||
"base64-js": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
|
||||
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
|
||||
},
|
||||
"bignumber.js": {
|
||||
"version": "7.2.1",
|
||||
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz",
|
||||
"integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ=="
|
||||
},
|
||||
"buffer-equal-constant-time": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
|
||||
"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
|
||||
},
|
||||
"buffer-from": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
|
||||
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
|
||||
},
|
||||
"compressible": {
|
||||
"version": "2.0.18",
|
||||
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
|
||||
"integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
|
||||
"requires": {
|
||||
"mime-db": ">= 1.43.0 < 2"
|
||||
}
|
||||
},
|
||||
"concat-stream": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
|
||||
"integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
|
||||
"requires": {
|
||||
"buffer-from": "^1.0.0",
|
||||
"inherits": "^2.0.3",
|
||||
"readable-stream": "^3.0.2",
|
||||
"typedarray": "^0.0.6"
|
||||
}
|
||||
},
|
||||
"configstore": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
|
||||
"integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
|
||||
"requires": {
|
||||
"dot-prop": "^5.2.0",
|
||||
"graceful-fs": "^4.1.2",
|
||||
"make-dir": "^3.0.0",
|
||||
"unique-string": "^2.0.0",
|
||||
"write-file-atomic": "^3.0.0",
|
||||
"xdg-basedir": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||
},
|
||||
"crypto-random-string": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
|
||||
"integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA=="
|
||||
},
|
||||
"date-and-time": {
|
||||
"version": "0.13.1",
|
||||
"resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-0.13.1.tgz",
|
||||
"integrity": "sha512-/Uge9DJAT+s+oAcDxtBhyR8+sKjUnZbYmyhbmWjTHNtX7B7oWD8YyYdeXcBRbwSj6hVvj+IQegJam7m7czhbFw=="
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"deepmerge": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
|
||||
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
|
||||
},
|
||||
"dot-prop": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz",
|
||||
"integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==",
|
||||
"requires": {
|
||||
"is-obj": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"duplexify": {
|
||||
"version": "3.7.1",
|
||||
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
|
||||
"integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
|
||||
"requires": {
|
||||
"end-of-stream": "^1.0.0",
|
||||
"inherits": "^2.0.1",
|
||||
"readable-stream": "^2.0.0",
|
||||
"stream-shift": "^1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "2.3.7",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
|
||||
"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.3",
|
||||
"isarray": "~1.0.0",
|
||||
"process-nextick-args": "~2.0.0",
|
||||
"safe-buffer": "~5.1.1",
|
||||
"string_decoder": "~1.1.1",
|
||||
"util-deprecate": "~1.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ecdsa-sig-formatter": {
|
||||
"version": "1.0.11",
|
||||
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
|
||||
"integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
|
||||
"requires": {
|
||||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"end-of-stream": {
|
||||
"version": "1.4.4",
|
||||
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
|
||||
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
|
||||
"requires": {
|
||||
"once": "^1.4.0"
|
||||
}
|
||||
},
|
||||
"ent": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
|
||||
"integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0="
|
||||
},
|
||||
"event-target-shim": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
|
||||
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
|
||||
},
|
||||
"extend": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
|
||||
},
|
||||
"fast-text-encoding": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.1.tgz",
|
||||
"integrity": "sha512-x4FEgaz3zNRtJfLFqJmHWxkMDDvXVtaznj2V9jiP8ACUJrUgist4bP9FmDL2Vew2Y9mEQI/tG4GqabaitYp9CQ=="
|
||||
},
|
||||
"gaxios": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-3.0.2.tgz",
|
||||
"integrity": "sha512-cLOetrsKOBLPwjzVyFzirYaGjrhtYjbKUHp6fQpsio2HH8Mil35JTFQLgkV5D3CCXV7Gnd5V69/m4C9rMBi9bA==",
|
||||
"requires": {
|
||||
"abort-controller": "^3.0.0",
|
||||
"extend": "^3.0.2",
|
||||
"https-proxy-agent": "^5.0.0",
|
||||
"is-stream": "^2.0.0",
|
||||
"node-fetch": "^2.3.0"
|
||||
}
|
||||
},
|
||||
"gcp-metadata": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.5.0.tgz",
|
||||
"integrity": "sha512-ZQf+DLZ5aKcRpLzYUyBS3yo3N0JSa82lNDO8rj3nMSlovLcz2riKFBsYgDzeXcv75oo5eqB2lx+B14UvPoCRnA==",
|
||||
"requires": {
|
||||
"gaxios": "^2.1.0",
|
||||
"json-bigint": "^0.3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"gaxios": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz",
|
||||
"integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==",
|
||||
"requires": {
|
||||
"abort-controller": "^3.0.0",
|
||||
"extend": "^3.0.2",
|
||||
"https-proxy-agent": "^5.0.0",
|
||||
"is-stream": "^2.0.0",
|
||||
"node-fetch": "^2.3.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"gcs-resumable-upload": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-2.3.3.tgz",
|
||||
"integrity": "sha512-sf896I5CC/1AxeaGfSFg3vKMjUq/r+A3bscmVzZm10CElyRanN0XwPu/MxeIO4LSP+9uF6yKzXvNsaTsMXUG6Q==",
|
||||
"requires": {
|
||||
"abort-controller": "^3.0.0",
|
||||
"configstore": "^5.0.0",
|
||||
"gaxios": "^2.0.0",
|
||||
"google-auth-library": "^5.0.0",
|
||||
"pumpify": "^2.0.0",
|
||||
"stream-events": "^1.0.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"gaxios": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz",
|
||||
"integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==",
|
||||
"requires": {
|
||||
"abort-controller": "^3.0.0",
|
||||
"extend": "^3.0.2",
|
||||
"https-proxy-agent": "^5.0.0",
|
||||
"is-stream": "^2.0.0",
|
||||
"node-fetch": "^2.3.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"google-auth-library": {
|
||||
"version": "5.10.1",
|
||||
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.10.1.tgz",
|
||||
"integrity": "sha512-rOlaok5vlpV9rSiUu5EpR0vVpc+PhN62oF4RyX/6++DG1VsaulAFEMlDYBLjJDDPI6OcNOCGAKy9UVB/3NIDXg==",
|
||||
"requires": {
|
||||
"arrify": "^2.0.0",
|
||||
"base64-js": "^1.3.0",
|
||||
"ecdsa-sig-formatter": "^1.0.11",
|
||||
"fast-text-encoding": "^1.0.0",
|
||||
"gaxios": "^2.1.0",
|
||||
"gcp-metadata": "^3.4.0",
|
||||
"gtoken": "^4.1.0",
|
||||
"jws": "^4.0.0",
|
||||
"lru-cache": "^5.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"gaxios": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz",
|
||||
"integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==",
|
||||
"requires": {
|
||||
"abort-controller": "^3.0.0",
|
||||
"extend": "^3.0.2",
|
||||
"https-proxy-agent": "^5.0.0",
|
||||
"is-stream": "^2.0.0",
|
||||
"node-fetch": "^2.3.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"google-p12-pem": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.4.tgz",
|
||||
"integrity": "sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg==",
|
||||
"requires": {
|
||||
"node-forge": "^0.9.0"
|
||||
}
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
|
||||
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
|
||||
},
|
||||
"gtoken": {
|
||||
"version": "4.1.4",
|
||||
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.4.tgz",
|
||||
"integrity": "sha512-VxirzD0SWoFUo5p8RDP8Jt2AGyOmyYcT/pOUgDKJCK+iSw0TMqwrVfY37RXTNmoKwrzmDHSk0GMT9FsgVmnVSA==",
|
||||
"requires": {
|
||||
"gaxios": "^2.1.0",
|
||||
"google-p12-pem": "^2.0.0",
|
||||
"jws": "^4.0.0",
|
||||
"mime": "^2.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"gaxios": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.4.tgz",
|
||||
"integrity": "sha512-US8UMj8C5pRnao3Zykc4AAVr+cffoNKRTg9Rsf2GiuZCW69vgJj38VK2PzlPuQU73FZ/nTk9/Av6/JGcE1N9vA==",
|
||||
"requires": {
|
||||
"abort-controller": "^3.0.0",
|
||||
"extend": "^3.0.2",
|
||||
"https-proxy-agent": "^5.0.0",
|
||||
"is-stream": "^2.0.0",
|
||||
"node-fetch": "^2.3.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"hash-stream-validation": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.2.tgz",
|
||||
"integrity": "sha512-cMlva5CxWZOrlS/cY0C+9qAzesn5srhFA8IT1VPiHc9bWWBLkJfEUIZr7MWoi89oOOGmpg8ymchaOjiArsGu5A==",
|
||||
"requires": {
|
||||
"through2": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "2.3.7",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
|
||||
"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.3",
|
||||
"isarray": "~1.0.0",
|
||||
"process-nextick-args": "~2.0.0",
|
||||
"safe-buffer": "~5.1.1",
|
||||
"string_decoder": "~1.1.1",
|
||||
"util-deprecate": "~1.0.1"
|
||||
}
|
||||
},
|
||||
"through2": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
|
||||
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
|
||||
"requires": {
|
||||
"readable-stream": "~2.3.6",
|
||||
"xtend": "~4.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"http-proxy-agent": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
|
||||
"integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
|
||||
"requires": {
|
||||
"@tootallnate/once": "1",
|
||||
"agent-base": "6",
|
||||
"debug": "4"
|
||||
}
|
||||
},
|
||||
"https-proxy-agent": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
|
||||
"integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
|
||||
"requires": {
|
||||
"agent-base": "6",
|
||||
"debug": "4"
|
||||
}
|
||||
},
|
||||
"imurmurhash": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
|
||||
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"is-obj": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
|
||||
"integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="
|
||||
},
|
||||
"is-stream": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
|
||||
"integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
|
||||
},
|
||||
"is-typedarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
|
||||
},
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
||||
},
|
||||
"json-bigint": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.0.tgz",
|
||||
"integrity": "sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4=",
|
||||
"requires": {
|
||||
"bignumber.js": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"jwa": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
|
||||
"integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
|
||||
"requires": {
|
||||
"buffer-equal-constant-time": "1.0.1",
|
||||
"ecdsa-sig-formatter": "1.0.11",
|
||||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"jws": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
|
||||
"integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
|
||||
"requires": {
|
||||
"jwa": "^2.0.0",
|
||||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
||||
"requires": {
|
||||
"yallist": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"make-dir": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz",
|
||||
"integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==",
|
||||
"requires": {
|
||||
"semver": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"mime": {
|
||||
"version": "2.4.4",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
|
||||
"integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.43.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
|
||||
"integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ=="
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.26",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
|
||||
"integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
|
||||
"requires": {
|
||||
"mime-db": "1.43.0"
|
||||
}
|
||||
},
|
||||
"mimic-fn": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
||||
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
|
||||
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
|
||||
},
|
||||
"node-forge": {
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz",
|
||||
"integrity": "sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ=="
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"onetime": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
|
||||
"integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
|
||||
"requires": {
|
||||
"mimic-fn": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
|
||||
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
|
||||
"requires": {
|
||||
"p-try": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"p-try": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
|
||||
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
|
||||
},
|
||||
"process-nextick-args": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
|
||||
},
|
||||
"pump": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
|
||||
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
|
||||
"requires": {
|
||||
"end-of-stream": "^1.1.0",
|
||||
"once": "^1.3.1"
|
||||
}
|
||||
},
|
||||
"pumpify": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz",
|
||||
"integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==",
|
||||
"requires": {
|
||||
"duplexify": "^4.1.1",
|
||||
"inherits": "^2.0.3",
|
||||
"pump": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"duplexify": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.1.tgz",
|
||||
"integrity": "sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA==",
|
||||
"requires": {
|
||||
"end-of-stream": "^1.4.1",
|
||||
"inherits": "^2.0.3",
|
||||
"readable-stream": "^3.1.1",
|
||||
"stream-shift": "^1.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"retry-request": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.1.tgz",
|
||||
"integrity": "sha512-BINDzVtLI2BDukjWmjAIRZ0oglnCAkpP2vQjM3jdLhmT62h0xnQgciPwBRDAvHqpkPT2Wo1XuUyLyn6nbGrZQQ==",
|
||||
"requires": {
|
||||
"debug": "^4.1.1",
|
||||
"through2": "^3.0.1"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
},
|
||||
"sanitize-filename": {
|
||||
"version": "1.6.3",
|
||||
"resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
|
||||
"integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
|
||||
"requires": {
|
||||
"truncate-utf8-bytes": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "6.3.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
|
||||
},
|
||||
"signal-exit": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
|
||||
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
|
||||
},
|
||||
"snakeize": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz",
|
||||
"integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0="
|
||||
},
|
||||
"stream-events": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz",
|
||||
"integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==",
|
||||
"requires": {
|
||||
"stubs": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"stream-shift": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
|
||||
"integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
||||
"requires": {
|
||||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
},
|
||||
"stubs": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz",
|
||||
"integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls="
|
||||
},
|
||||
"teeny-request": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-6.0.3.tgz",
|
||||
"integrity": "sha512-TZG/dfd2r6yeji19es1cUIwAlVD8y+/svB1kAC2Y0bjEyysrfbO8EZvJBRwIE6WkwmUoB7uvWLwTIhJbMXZ1Dw==",
|
||||
"requires": {
|
||||
"http-proxy-agent": "^4.0.0",
|
||||
"https-proxy-agent": "^5.0.0",
|
||||
"node-fetch": "^2.2.0",
|
||||
"stream-events": "^1.0.5",
|
||||
"uuid": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"through2": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
|
||||
"integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
|
||||
"requires": {
|
||||
"readable-stream": "2 || 3"
|
||||
}
|
||||
},
|
||||
"truncate-utf8-bytes": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
|
||||
"integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=",
|
||||
"requires": {
|
||||
"utf8-byte-length": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"typedarray": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
|
||||
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
|
||||
},
|
||||
"typedarray-to-buffer": {
|
||||
"version": "3.1.5",
|
||||
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
|
||||
"integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
|
||||
"requires": {
|
||||
"is-typedarray": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"unique-string": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
|
||||
"integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
|
||||
"requires": {
|
||||
"crypto-random-string": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"utf8-byte-length": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
|
||||
"integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E="
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
},
|
||||
"uuid": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
|
||||
"integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg=="
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
},
|
||||
"write-file-atomic": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
|
||||
"integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
|
||||
"requires": {
|
||||
"imurmurhash": "^0.1.4",
|
||||
"is-typedarray": "^1.0.0",
|
||||
"signal-exit": "^3.0.2",
|
||||
"typedarray-to-buffer": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"xdg-basedir": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
|
||||
"integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q=="
|
||||
},
|
||||
"xtend": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"name": "stacks-blockchain-dist-tool",
|
||||
"version": "1.0.0",
|
||||
"description": "Utility script to build and upload the Stacks Blockchain core node from source.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"start": "npm i && node index.js",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@google-cloud/storage": "^4.7.0",
|
||||
"deepmerge": "^4.2.2",
|
||||
"sanitize-filename": "^1.6.3"
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
FROM blockstack/stacks-blockchain:2.0.11.2.0-stretch as build
|
||||
|
||||
FROM debian:stretch
|
||||
|
||||
COPY wait-for-it.sh /bin/wait-for-it.sh
|
||||
RUN chmod +x /bin/wait-for-it.sh
|
||||
|
||||
COPY docker-entrypoint.sh /bin/
|
||||
RUN chmod +x /bin/docker-entrypoint.sh
|
||||
|
||||
COPY --from=build /bin/stacks-node /bin/
|
||||
|
||||
ENTRYPOINT ["/bin/docker-entrypoint.sh"]
|
||||
CMD ["stacks-node"]
|
||||
@@ -1,15 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Use this script to enable host.docker.internal on Docker for linux.
|
||||
# See https://github.com/bufferings/docker-access-host
|
||||
|
||||
HOST_DOMAIN="host.docker.internal"
|
||||
ping -q -c1 $HOST_DOMAIN > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
HOST_IP=$(ip route | awk 'NR==1 {print $3}')
|
||||
echo -e "$HOST_IP\t$HOST_DOMAIN" >> /etc/hosts
|
||||
fi
|
||||
|
||||
cat /etc/hosts
|
||||
echo "patched host.docker.internal"
|
||||
|
||||
exec "$@"
|
||||
@@ -1,189 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Use this script to test if a given TCP host/port are available
|
||||
|
||||
WAITFORIT_cmdname=${0##*/}
|
||||
|
||||
echoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo "$@" 1>&2; fi }
|
||||
|
||||
HOST_DOMAIN="host.docker.internal"
|
||||
ping -q -c1 $HOST_DOMAIN > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
HOST_IP=$(ip route | awk 'NR==1 {print $3}')
|
||||
echo -e "$HOST_IP\t$HOST_DOMAIN" >> /etc/hosts
|
||||
fi
|
||||
|
||||
usage()
|
||||
{
|
||||
cat << USAGE >&2
|
||||
Usage:
|
||||
$WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args]
|
||||
-h HOST | --host=HOST Host or IP under test
|
||||
-p PORT | --port=PORT TCP port under test
|
||||
Alternatively, you specify the host and port as host:port
|
||||
-s | --strict Only execute subcommand if the test succeeds
|
||||
-q | --quiet Don't output any status messages
|
||||
-t TIMEOUT | --timeout=TIMEOUT
|
||||
Timeout in seconds, zero for no timeout
|
||||
-- COMMAND ARGS Execute command with args after the test finishes
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
wait_for()
|
||||
{
|
||||
if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
|
||||
echoerr "$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
|
||||
else
|
||||
echoerr "$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout"
|
||||
fi
|
||||
WAITFORIT_start_ts=$(date +%s)
|
||||
while :
|
||||
do
|
||||
if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then
|
||||
nc -z $WAITFORIT_HOST $WAITFORIT_PORT
|
||||
WAITFORIT_result=$?
|
||||
else
|
||||
(echo > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1
|
||||
WAITFORIT_result=$?
|
||||
fi
|
||||
if [[ $WAITFORIT_result -eq 0 ]]; then
|
||||
WAITFORIT_end_ts=$(date +%s)
|
||||
echoerr "$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds"
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
return $WAITFORIT_result
|
||||
}
|
||||
|
||||
wait_for_wrapper()
|
||||
{
|
||||
# In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692
|
||||
if [[ $WAITFORIT_QUIET -eq 1 ]]; then
|
||||
timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
|
||||
else
|
||||
timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
|
||||
fi
|
||||
WAITFORIT_PID=$!
|
||||
trap "kill -INT -$WAITFORIT_PID" INT
|
||||
wait $WAITFORIT_PID
|
||||
WAITFORIT_RESULT=$?
|
||||
if [[ $WAITFORIT_RESULT -ne 0 ]]; then
|
||||
echoerr "$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
|
||||
fi
|
||||
return $WAITFORIT_RESULT
|
||||
}
|
||||
|
||||
# process arguments
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
case "$1" in
|
||||
*:* )
|
||||
WAITFORIT_hostport=(${1//:/ })
|
||||
WAITFORIT_HOST=${WAITFORIT_hostport[0]}
|
||||
WAITFORIT_PORT=${WAITFORIT_hostport[1]}
|
||||
shift 1
|
||||
;;
|
||||
--child)
|
||||
WAITFORIT_CHILD=1
|
||||
shift 1
|
||||
;;
|
||||
-q | --quiet)
|
||||
WAITFORIT_QUIET=1
|
||||
shift 1
|
||||
;;
|
||||
-s | --strict)
|
||||
WAITFORIT_STRICT=1
|
||||
shift 1
|
||||
;;
|
||||
-h)
|
||||
WAITFORIT_HOST="$2"
|
||||
if [[ $WAITFORIT_HOST == "" ]]; then break; fi
|
||||
shift 2
|
||||
;;
|
||||
--host=*)
|
||||
WAITFORIT_HOST="${1#*=}"
|
||||
shift 1
|
||||
;;
|
||||
-p)
|
||||
WAITFORIT_PORT="$2"
|
||||
if [[ $WAITFORIT_PORT == "" ]]; then break; fi
|
||||
shift 2
|
||||
;;
|
||||
--port=*)
|
||||
WAITFORIT_PORT="${1#*=}"
|
||||
shift 1
|
||||
;;
|
||||
-t)
|
||||
WAITFORIT_TIMEOUT="$2"
|
||||
if [[ $WAITFORIT_TIMEOUT == "" ]]; then break; fi
|
||||
shift 2
|
||||
;;
|
||||
--timeout=*)
|
||||
WAITFORIT_TIMEOUT="${1#*=}"
|
||||
shift 1
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
WAITFORIT_CLI=("$@")
|
||||
break
|
||||
;;
|
||||
--help)
|
||||
usage
|
||||
;;
|
||||
*)
|
||||
echoerr "Unknown argument: $1"
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ "$WAITFORIT_HOST" == "" || "$WAITFORIT_PORT" == "" ]]; then
|
||||
echoerr "Error: you need to provide a host and port to test."
|
||||
usage
|
||||
fi
|
||||
|
||||
WAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-15}
|
||||
WAITFORIT_STRICT=${WAITFORIT_STRICT:-0}
|
||||
WAITFORIT_CHILD=${WAITFORIT_CHILD:-0}
|
||||
WAITFORIT_QUIET=${WAITFORIT_QUIET:-0}
|
||||
|
||||
# Check to see if timeout is from busybox?
|
||||
WAITFORIT_TIMEOUT_PATH=$(type -p timeout)
|
||||
WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH)
|
||||
|
||||
WAITFORIT_BUSYTIMEFLAG=""
|
||||
if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then
|
||||
WAITFORIT_ISBUSY=1
|
||||
# Check if busybox timeout uses -t flag
|
||||
# (recent Alpine versions don't support -t anymore)
|
||||
if timeout &>/dev/stdout | grep -q -e '-t '; then
|
||||
WAITFORIT_BUSYTIMEFLAG="-t"
|
||||
fi
|
||||
else
|
||||
WAITFORIT_ISBUSY=0
|
||||
fi
|
||||
|
||||
if [[ $WAITFORIT_CHILD -gt 0 ]]; then
|
||||
wait_for
|
||||
WAITFORIT_RESULT=$?
|
||||
exit $WAITFORIT_RESULT
|
||||
else
|
||||
if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
|
||||
wait_for_wrapper
|
||||
WAITFORIT_RESULT=$?
|
||||
else
|
||||
wait_for
|
||||
WAITFORIT_RESULT=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $WAITFORIT_CLI != "" ]]; then
|
||||
if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then
|
||||
echoerr "$WAITFORIT_cmdname: strict mode, refusing to execute subprocess"
|
||||
exit $WAITFORIT_RESULT
|
||||
fi
|
||||
exec "${WAITFORIT_CLI[@]}"
|
||||
else
|
||||
exit $WAITFORIT_RESULT
|
||||
fi
|
||||
@@ -1,28 +0,0 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDe0Hk3UCszqsVE
|
||||
cE7BnZXwrxI8FYY94E95PFxtSWLSPjOryy0erAufRP8p9xzHwsj4t1MvW0aAzMf7
|
||||
ht+TRf1FnyLDSJuk9uFCZ7lVyIERkSVze1fqssD+tSr/SKCmWYdwz/GE0BHE0W5e
|
||||
OEh2gEyMkkaMRra7+SxHg9Suk2PC6M85raUm/ibt8NOMVWsqmUlOeEB0MmzL0sZS
|
||||
IVtTEepm5g/t2YwAwyN75qzvkWK8F8XDM4bDdr6Z25Y1NpfAeE+POywsFzcFNSOq
|
||||
r/GbCuZ1wRgpzOl1vtJw6htSnNOEX/tmjVSvwqswFUFSOXZO/y22b59HX9BeijVO
|
||||
JiEFXb+PAgMBAAECggEBAJ7LrwgXz6JT+6FJ9ScR21GcQ/+kS3b/zUQXG7wbiB1U
|
||||
jVjLRY3Nib7p2nybC9zmWnq/lL50a6vRxljhh6ebQuUChDDvJ1YLSQEdkT2s1yeg
|
||||
7TL/Xen7mYYtscYcibnkpp1k5bkE3RULOYBW1nX1/BhXC4Zfw032SHNzZflBO+Ek
|
||||
29H3yWj+avJxx3snVShSmrGq7c2JEkTkaoWb5b66DQfsHIU5zUvijVYygxlUC8w6
|
||||
YuO7BuYba0lLlEss3bVdcSB1BVewrbRPHQ0KxsNuE5hYO8xlEeRu3d2ygZ+tyI00
|
||||
faEkususWieWUD0R3VBR6106jIpyWSUO2ZK3Gm6zQqECgYEA/FhbtGP7cjbIblEf
|
||||
/9T+tIOhnKvo+9UHtAulScSoSfyiZdPAUK1Ytt3tA6QYUcZ8Iemyj1oSa1OWz6xb
|
||||
vfqeVTRXfG1lsYH9HWSd2ecZknQduOrmvx5L/luHyrnVt1sBwzL21mL+QDWI3V6U
|
||||
pQF4bFIP5XU03u0/CtPPraSFSR8CgYEA4gqfE+KTku509akvfLYCklt3kG0uydD8
|
||||
uKZ3GGuoqieqB74apJnGnlu7pHYi0+7FrbFcjvAj1X48U3wYI7zEx8K8lhhzJr22
|
||||
fDDLYjGYT7wCPzpVivJQm+wfB1ISKOZCPA0ZNaLnzdQV+CqNOxh8Vnwczeza8IZm
|
||||
oK1zF+3lC5ECgYABxHCn+8dIDoAq3aCWvxwlkYJxQXb5RI2wQiCfOqRfGEje47PG
|
||||
HOCxLy64xs5wzC4UYrmgbWYRoF0/CRr/YqD3Qc2XDoEW1C08pnbAjvDL6MpIgESr
|
||||
c//eQS/bSJ/pj9acUmAOMlVLh9R0kHQED9WTFKQN3FtJcGnvnnom4i8YywKBgQCg
|
||||
r2Q+QocdoB3MtKRpRwm0+QiZxsPH+6RrrwpidcXEj8WzE1TlRduHnzZYxxIjDk3A
|
||||
F6Dwi40tqzs/LawLW5mXV7uwB1l0ZNBgoF80QoU/ySrfv5wn1fGvpb64+YKnSGg1
|
||||
QCp3koKuMuIbNESJifJ5mGjxijppWWGDP0nd7OMxwQKBgQDN25TwzooAyn1nkVZk
|
||||
YXHA9AE1vnzGC6ZeFwU8Pc400TUptZAdrIB8GH1Jk73ev/RtLA9HDtj92r01g6OX
|
||||
tGnERyrso6Cub1+WeYW65Mkx/ZgP/DhAj7fzElF5Y5CgICxkWQjCQCEExL1tLMyD
|
||||
xtnsp1vekVb8lPAeee2L49YomA==
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -1,29 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIE4zCCA0ugAwIBAgIRAJsScDL1fFlJp1LNV4+osc0wDQYJKoZIhvcNAQELBQAw
|
||||
bTEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMSEwHwYDVQQLDBhjYW9l
|
||||
cjExNUBERVNLVE9QLVZFRVVJM0ExKDAmBgNVBAMMH21rY2VydCBjYW9lcjExNUBE
|
||||
RVNLVE9QLVZFRVVJM0EwHhcNMjExMjEwMDUzMDU5WhcNMjQwMzEwMDUzMDU5WjBH
|
||||
MScwJQYDVQQKEx5ta2NlcnQgZGV2ZWxvcG1lbnQgY2VydGlmaWNhdGUxHDAaBgNV
|
||||
BAsME2Nhb2VyMTE1QHpwcm8ubG9jYWwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
||||
ggEKAoIBAQDe0Hk3UCszqsVEcE7BnZXwrxI8FYY94E95PFxtSWLSPjOryy0erAuf
|
||||
RP8p9xzHwsj4t1MvW0aAzMf7ht+TRf1FnyLDSJuk9uFCZ7lVyIERkSVze1fqssD+
|
||||
tSr/SKCmWYdwz/GE0BHE0W5eOEh2gEyMkkaMRra7+SxHg9Suk2PC6M85raUm/ibt
|
||||
8NOMVWsqmUlOeEB0MmzL0sZSIVtTEepm5g/t2YwAwyN75qzvkWK8F8XDM4bDdr6Z
|
||||
25Y1NpfAeE+POywsFzcFNSOqr/GbCuZ1wRgpzOl1vtJw6htSnNOEX/tmjVSvwqsw
|
||||
FUFSOXZO/y22b59HX9BeijVOJiEFXb+PAgMBAAGjggEiMIIBHjAOBgNVHQ8BAf8E
|
||||
BAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAUOKsxHO4qtsgO
|
||||
9KqkoeRPT9Et1SwwgdUGA1UdEQSBzTCByoIJbG9jYWxob3N0ghB3aG9hbWkubG9j
|
||||
YWxob3N0ggxwZy5sb2NhbGhvc3SCG3N0YWNrcy1ibG9ja2NoYWluLmxvY2FsaG9z
|
||||
dIIfc3RhY2tzLWJsb2NrY2hhaW4tYXBpLmxvY2FsaG9zdIIhc3RhY2tzLWJsb2Nr
|
||||
Y2hhaW4tZXZlbnQubG9jYWxob3N0giRzdGFja3MtYmxvY2tjaGFpbi1leHBsb3Jl
|
||||
ci5sb2NhbGhvc3SHBH8AAAGHEAAAAAAAAAAAAAAAAAAAAAEwDQYJKoZIhvcNAQEL
|
||||
BQADggGBACOXUSl9UxNx/GSYvhcnYV8pHLB1Q3OBg+sPQrOEYFmsIm8MOsCc3i2M
|
||||
mH2rPD4Sk1U74l+hZGD5QBGNiQBlBcIH2jWdu0jD6smF5XkWYOyBvuShDJDa6q+O
|
||||
CxOwt1l4+vFSW/elF6Fk4rUDfnT5xv3F67lDmYt90aE+z9KyROcCb7ixaKdHR6fW
|
||||
h6C8ymhGMxqRFc5H03T/0bxfurM8TEmmkl8LytXHQ82O1Xe2dWNcuAX5k0Jkh4bq
|
||||
myW7rIXPQWxCojXtcXSRQe5o1GLclFvOHHSLSsx+xsPQgYjzXCbGw7BKB59RgQp+
|
||||
SX6eJqRpp3Vl/m7Yc+ePqHz2DC2vyUpj1Ctb3CKD1M4e1sxXpXVrr9L6+5/kKg09
|
||||
rNPF8SFivWQon3NyrUtG1x05gDBEzQH5H5TE5hVsvSPLNyVQQafd8hWhh2tu1eyP
|
||||
SU/dVJCPGo5ydCeRvYyXXBjIFStH+uxFLCMwYXgyVC06Szbw7OYXYlJ8qMWcH6Er
|
||||
DIpGergGIA==
|
||||
-----END CERTIFICATE-----
|
||||
Reference in New Issue
Block a user