diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md index 23cc5120644..813859bd00e 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.md +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -14,8 +14,4 @@ Please describe what functionality is needed Please describe why it is needed -### Acceptance Criteria - -Please describe the conditions which must be met for this issue to close - ### Additional Information diff --git a/.github/ISSUE_TEMPLATE/feature_specification.md b/.github/ISSUE_TEMPLATE/feature_specification.md new file mode 100644 index 00000000000..a2bd88afc38 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_specification.md @@ -0,0 +1,17 @@ +--- +name: Feature specification +about: Specification of new features/improvements +title: '' +labels: '' +assignees: '' +--- + +### Description + +Please describe the specification of new features/improvements + +### Acceptance Criteria + +Please describe the conditions which must be met for this issue to close + +### Additional Information diff --git a/.github/actions/prepare-build/action.yml b/.github/actions/prepare-build/action.yml new file mode 100644 index 00000000000..bc1b5418e4e --- /dev/null +++ b/.github/actions/prepare-build/action.yml @@ -0,0 +1,22 @@ +name: 'Prepare: Build and cache packages' +description: 'Prepares the repo for a job by building dependencies' +inputs: + cache-key: + description: 'Key of the cache to use' + required: true + +runs: + using: 'composite' + steps: + - uses: actions/cache@v3 + id: nx-cache + with: + path: | + node_modules + **/node_modules/** + key: cache-nx-${{ hashFiles('yarn.lock') }}-${{ inputs.cache-key }}-${{ github.sha }} + restore-keys: | + cache-nx-${{ hashFiles('yarn.lock') }}-${{ inputs.cache-key }}-${{ github.sha }} + - name: Build + shell: bash + run: yarn build diff --git a/.github/actions/prepare-install/action.yml b/.github/actions/prepare-install/action.yml new file mode 100644 index 00000000000..7e4fe8a1c10 --- /dev/null +++ b/.github/actions/prepare-install/action.yml @@ -0,0 +1,14 @@ +name: 'Prepare: Checkout and Install' +description: 'Prepares the repo for a job by checking out and installing dependencies' + +runs: + using: 'composite' + steps: + - name: Use Node.js 18 + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: 'yarn' + - name: Install dependencies + shell: bash + run: yarn --prefer-offline diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml new file mode 100644 index 00000000000..77f53b9b325 --- /dev/null +++ b/.github/codeql/codeql-config.yml @@ -0,0 +1,4 @@ +paths-ignore: + - ./protocol-specs + - ./scripts + - ./templates diff --git a/.github/workflows/branch.yaml b/.github/workflows/branch.yaml new file mode 100644 index 00000000000..a2e02c7dd0b --- /dev/null +++ b/.github/workflows/branch.yaml @@ -0,0 +1,25 @@ +name: "Branch" + +on: + push: + branches: [ "development", feature/*, hotfix/*, main, release/* ] + +jobs: + code-cov-canary: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Install + uses: ./.github/actions/prepare-install + - name: Build + uses: ./.github/actions/prepare-build + with: + cache-key: ${{ github.ref }} + - run: npm config set //npm.lisk.com/:_authToken=$NPM_TOKEN + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Publish + run: npx lerna publish --canary --preid canary --registry https://npm.lisk.com --yes diff --git a/.github/workflows/code_ql.yaml b/.github/workflows/code_ql.yaml new file mode 100644 index 00000000000..95f5c6d62c2 --- /dev/null +++ b/.github/workflows/code_ql.yaml @@ -0,0 +1,59 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ "development", feature/*, hotfix/*, main, release/* ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ "development", feature/*, hotfix/*, main, release/* ] + schedule: + - cron: '30 3 * * 2' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: true + matrix: + language: [ 'typescript' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] + # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + config-file: ./.github/codeql/codeql-config.yml + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + with: + category: "/language:${{matrix.language}}" diff --git a/.github/workflows/dependency.yaml b/.github/workflows/dependency.yaml new file mode 100644 index 00000000000..fe461b4243c --- /dev/null +++ b/.github/workflows/dependency.yaml @@ -0,0 +1,20 @@ +# Dependency Review Action +# +# This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging. +# +# Source repository: https://github.com/actions/dependency-review-action +# Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement +name: 'Dependency Review' +on: [pull_request] + +permissions: + contents: read + +jobs: + dependency-review: + runs-on: ubuntu-latest + steps: + - name: 'Checkout Repository' + uses: actions/checkout@v3 + - name: 'Dependency Review' + uses: actions/dependency-review-action@v2 diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml new file mode 100644 index 00000000000..5da1e249ca4 --- /dev/null +++ b/.github/workflows/pr.yaml @@ -0,0 +1,91 @@ +name: 'PR' +on: + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Install + uses: ./.github/actions/prepare-install + - name: Build + uses: ./.github/actions/prepare-build + with: + cache-key: ${{ github.event.number }} + + lint: + runs-on: ubuntu-latest + timeout-minutes: 15 + needs: build + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - run: git branch --track ${{ github.base_ref }} origin/${{ github.base_ref }} + - name: Install + uses: ./.github/actions/prepare-install + - name: Build + uses: ./.github/actions/prepare-build + with: + cache-key: ${{ github.event.number }} + - run: yarn format + - name: Check format + run: | + if [ -z "$(git status --untracked-files=no --porcelain)" ]; then + echo "All files formatted" + else + echo "Running format is required" + exit 1 + fi + - run: yarn lint + + unit-test: + runs-on: ubuntu-latest + timeout-minutes: 20 + needs: build + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Install + uses: ./.github/actions/prepare-install + - name: Build + uses: ./.github/actions/prepare-build + with: + cache-key: ${{ github.event.number }} + - run: yarn test:elements + - run: yarn test:framework + - run: yarn test:commander + + integration-test: + runs-on: ubuntu-latest + timeout-minutes: 15 + needs: build + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Install + uses: ./.github/actions/prepare-install + - name: Build + uses: ./.github/actions/prepare-build + with: + cache-key: ${{ github.event.number }} + - run: yarn nx run-many --target=test:integration --projects=lisk-framework + + functional-test: + runs-on: ubuntu-latest + timeout-minutes: 15 + needs: build + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Install + uses: ./.github/actions/prepare-install + - name: Build + uses: ./.github/actions/prepare-build + with: + cache-key: ${{ github.event.number }} + - run: yarn nx run-many --target=test:debug --projects=lisk-sdk-test diff --git a/.jenkins/Jenkinsfile.audit b/.jenkins/Jenkinsfile.audit deleted file mode 100644 index 440276d93a2..00000000000 --- a/.jenkins/Jenkinsfile.audit +++ /dev/null @@ -1,13 +0,0 @@ -pipeline { - agent { node { label 'lisk-sdk' } } - stages { - stage('yarn audit') { - steps { - nvm(readFile(".nvmrc").trim()) { - sh 'yarn audit' - } - } - } - } -} -// vim: filetype=groovy diff --git a/.jenkins/Jenkinsfile.test b/.jenkins/Jenkinsfile.test deleted file mode 100644 index 26e43dd2149..00000000000 --- a/.jenkins/Jenkinsfile.test +++ /dev/null @@ -1,301 +0,0 @@ -@Library('lisk-jenkins') _ - -def setup() { - cleanWs() - unstash 'build' -} - -def run_jest(test_name) { - ansiColor('xterm') { - timestamps { - nvm(getNodejsVersion()) { - dir('framework') { - sh 'npm run test:' + "${test_name}" + ' ${JEST_OPTIONS}' - } - } - } - } -} - -def teardown_jest(test_name) { - try { - nvm(getNodejsVersion()) { - sh """ - rm -rf coverage_jest_${test_name}; mkdir -p coverage_jest_${test_name} - cp framework/.coverage/${test_name}/coverage-final.json coverage_jest_${test_name}/ || echo "Jest lcov coverage not found" - """ - } - } catch(err) { - println "Could gather coverage statistics from test:\n${err}" - } - stash name: "coverage_jest_${test_name}", includes: "coverage_jest_${test_name}/*", allowEmpty: true - timeout(1) { - sh 'killall --verbose --wait node || true' - } - dir('framework') { - sh """ - mv .app.log lisk_${test_name}.stdout.txt || true - mv logs/devnet/lisk.log lisk_${test_name}.log || true - """ - archiveArtifacts artifacts: 'lisk_*.log', allowEmptyArchive: true - archiveArtifacts artifacts: 'lisk_*.stdout.txt', allowEmptyArchive: true - } - cleanWs() -} - -properties([ - parameters([ - string(name: 'JEST_OPTIONS', defaultValue: '', description: 'Additional jest options that you want to provide to test runner. Example: `-- --config=`'), - // read by the application - string(name: 'LOG_LEVEL', defaultValue: 'error', description: 'To get desired build log output change the log level', ), - string(name: 'FILE_LOG_LEVEL', defaultValue: 'error', description: 'To get desired file log output change the log level', ), - // used by tests - string(name: 'SILENT', defaultValue: 'true', description: 'To turn off test debug logs.', ) - ]) -]) - -pipeline { - agent { node { label 'lisk-sdk' } } - - environment { - MAX_TASK_LIMIT = '20' - } - - stages { - stage('Cancel previous build') { - steps { - script { - if (env.CHANGE_ID) { - // we are build a pull request, try cancelling previous build - cancelPreviousBuild() - } - } - } - } - stage('Build') { - steps { - nvm(getNodejsVersion()) { - sh ''' - npm i -g yarn - yarn - yarn build - # needed by one of the "Functional HTTP GET tests" - git rev-parse HEAD > framework/REVISION - ''' - } - stash name: 'build' - } - } - stage('Lint') { - steps { - nvm(getNodejsVersion()) { - sh ''' - yarn lint - ''' - } - } - } - stage('Format') { - steps { - nvm(getNodejsVersion()) { - sh ''' - npm run format - if [ -z "$(git status --untracked-files=no --porcelain)" ]; then - echo "All files formatted" - else - echo "Running format is required" - exit 1 - fi - ''' - } - } - } - stage('Test') { - parallel { - stage('Lisk Elements') { - agent { node { label 'lisk-elements' }} - steps { - setup() - nvm(getNodejsVersion()) { - sh 'npx lerna run test:ci --ignore lisk-{framework,commander,@liskhq/lisk-framework-*} --ignore @liskhq/lisk-p2p' - } - } - post { - cleanup { - // Save all the test results - sh ''' - rm -rf coverage_elements; mkdir -p coverage_elements - for f in $( find elements/*/.coverage/ -type f ); do - cp $f coverage_elements/$( sha1sum $f | cut -d ' ' -f 1 )_$( basename $f ) - done - ''' - stash name: "coverage_elements", includes: "coverage_elements/*", allowEmpty: true - } - } - } - stage('Lisk Elements / @liskhq/lisk-p2p') { - agent { node { label 'lisk-sdk-quirky' }} - steps { - setup() - nvm(getNodejsVersion()) { - sh 'npx lerna run test:ci --scope @liskhq/lisk-p2p' - } - } - } - stage('Lisk Commander') { - agent { node { label 'lisk-commander' }} - steps { - setup() - nvm(getNodejsVersion()) { - sh 'npx lerna run test:ci --scope=lisk-commander' - } - sh 'mv commander/.coverage/ coverage_commander/ || echo "Jest coverage not found"' - stash name: "coverage_commander", includes: "coverage_commander/*", allowEmpty: true - } - } - stage('Lisk Client End-to-End') { - agent { node { label 'lisk-client' }} - steps { - setup() - wrap([$class: 'Xvfb', parallelBuild: true, autoDisplayName: true]) { - nvm(getNodejsVersion()) { - sh 'npx lerna run test:e2e --scope=@liskhq/lisk-client' - } - } - } - } - stage('Lisk Framework Unit') { - agent { node { label 'lisk-framework' }} - steps { - setup() - run_jest('unit') - } - post { - cleanup { - teardown_jest('unit') - } - } - } - stage('Lisk Framework Integration') { - agent { node { label 'lisk-sdk-quirky' }} - steps { - setup() - run_jest('integration') - } - post { - cleanup { - teardown_jest('integration') - } - } - } - stage('Lisk Framework Functional') { - agent { node { label 'lisk-sdk-quirky' }} - steps { - setup() - run_jest('functional') - } - post { - cleanup { - teardown_jest('functional') - } - } - } - stage('Lisk Framework Plugins Unit') { - agent { node { label 'lisk-framework' }} - steps { - setup() - nvm(getNodejsVersion()) { - sh 'npx lerna run test:unit --scope=@liskhq/lisk-framework-*' - } - } - post { - cleanup { - // Save all the test results - sh ''' - rm -rf coverage_framework_plugins; mkdir -p coverage_framework_plugins - for f in $( find framework-plugins/*/.coverage/ -type f ); do - cp $f coverage_framework_plugins/$( sha1sum $f | cut -d ' ' -f 1 )_$( basename $f ) - done - ''' - stash name: "coverage_framework_plugins", includes: "coverage_framework_plugins/*", allowEmpty: true - } - } - } - stage('Lisk Framework Plugins Integration') { - agent { node { label 'lisk-framework' }} - steps { - setup() - nvm(getNodejsVersion()) { - sh 'npx lerna run test:integration --scope=@liskhq/lisk-framework-* --concurrency 1' - } - } - } - stage('Lisk Framework Plugins Functional') { - agent { node { label 'lisk-sdk-quirky' }} - steps { - setup() - nvm(getNodejsVersion()) { - sh 'npx lerna run test:functional --scope=@liskhq/lisk-framework-* --concurrency 1' - } - } - } - } - } - } - post { - always { - script { - try { - unstash "coverage_elements" - } catch(err) { - println "Could not unstash elements. Continuing." - } - try { - unstash "coverage_commander" - } catch(err) { - println "Could not unstash commander. Continuing." - } - try { - unstash "coverage_jest_unit" - } catch(err) { - println "Could not unstash jest_unit. Continuing." - } - try { - unstash "coverage_framework_plugins" - } catch(err) { - println "Could not unstash framework_plugins. Continuing." - } - sh ''' - rm -rf .nyc_output; mkdir -p .nyc_output - rm -rf ci_coverage; mkdir -p ci_coverage - cp -r coverage_elements/* ./.nyc_output - cp -r coverage_framework_plugins/* ./.nyc_output - cp -r coverage_commander/* ./.nyc_output - cp coverage_jest_unit/coverage-final.json ./.nyc_output/coverage-framework-unit.json - ''' - try { - nvm(getNodejsVersion()) { - sh ''' - npx nyc merge ./.nyc_output ci_coverage/coverage.json - node scripts/map_coverage.js ci_coverage/coverage.json - ''' - } - cobertura coberturaReportFile: 'coverage/cobertura-coverage.xml' - } catch(err) { - println "Could not report coverage statistics:\n${err}" - } - currentBuild.result = 'SUCCESS' - if (env.BRANCH_NAME == 'master') { - step([$class: 'MasterCoverageAction', scmVars: [GIT_URL: env.GIT_URL]]) - } - if (env.CHANGE_ID != null) { - step([$class: 'CompareCoverageAction', publishResultAs: 'statusCheck', scmVars: [GIT_URL: env.GIT_URL]]) - } - } - } - cleanup { - cleanWs() - } - } -} -// vim: filetype=groovy diff --git a/.nvmrc b/.nvmrc index d5d3b29a47a..b492b086355 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -16.14.1 +18.16 diff --git a/commander/jest.config.js b/commander/jest.config.js index d27856e86f1..a912db81e1b 100644 --- a/commander/jest.config.js +++ b/commander/jest.config.js @@ -9,6 +9,9 @@ module.exports = { transform: { '^.+\\.(ts|tsx)$': 'ts-jest', }, + moduleNameMapper: { + '^axios$': 'axios/dist/axios.js', + }, verbose: false, collectCoverage: false, coverageReporters: ['json'], diff --git a/commander/package.json b/commander/package.json index 61eb2fecd6c..b744a736d05 100644 --- a/commander/package.json +++ b/commander/package.json @@ -1,6 +1,6 @@ { "name": "lisk-commander", - "version": "5.1.10", + "version": "5.2.0-rc.0", "description": "A command line interface for Lisk", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -20,7 +20,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist/index.js", @@ -91,30 +91,30 @@ "/docs" ], "dependencies": { - "@liskhq/lisk-api-client": "^5.1.6", - "@liskhq/lisk-chain": "^0.3.4", - "@liskhq/lisk-client": "^5.2.2", - "@liskhq/lisk-codec": "^0.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-db": "^0.2.1", - "@liskhq/lisk-genesis": "^0.2.4", - "@liskhq/lisk-passphrase": "^3.1.1", - "@liskhq/lisk-transactions": "^5.2.2", - "@liskhq/lisk-utils": "^0.2.1", - "@liskhq/lisk-validator": "^0.6.2", + "@liskhq/lisk-api-client": "^5.2.0-rc.0", + "@liskhq/lisk-chain": "^0.4.0-rc.0", + "@liskhq/lisk-client": "^5.3.0-rc.0", + "@liskhq/lisk-codec": "^0.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-db": "^0.3.6", + "@liskhq/lisk-genesis": "^0.3.0-rc.0", + "@liskhq/lisk-passphrase": "^3.2.0-rc.0", + "@liskhq/lisk-transactions": "^5.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0", "@oclif/command": "1.8.16", "@oclif/config": "1.18.3", "@oclif/errors": "1.3.5", "@oclif/parser": "3.8.7", - "@oclif/plugin-autocomplete": "1.2.0", + "@oclif/plugin-autocomplete": "1.4.4", "@oclif/plugin-help": "5.1.12", - "axios": "0.21.1", + "axios": "1.3.2", "bip39": "3.0.4", "chalk": "4.1.0", "cli-table3": "0.6.0", "fs-extra": "9.1.0", "inquirer": "8.0.0", - "lisk-framework": "^0.9.2", + "lisk-framework": "^0.10.0-rc.0", "listr": "0.14.3", "progress": "2.0.3", "semver": "7.3.5", @@ -122,7 +122,7 @@ "tar": "6.1.11", "ts-morph": "9.1.0", "tslib": "1.14.1", - "yeoman-environment": "3.3.0", + "yeoman-environment": "3.13.0", "yeoman-generator": "5.2.0" }, "devDependencies": { @@ -136,7 +136,7 @@ "@types/jest-when": "2.7.2", "@types/jquery": "3.3.33", "@types/listr": "0.14.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@types/progress": "2.0.3", "@types/semver": "7.1.0", "@types/strip-ansi": "5.2.1", diff --git a/commander/src/bootstrapping/commands/blockchain/hash.ts b/commander/src/bootstrapping/commands/blockchain/hash.ts index 98c3ba6d346..2ac78b414be 100644 --- a/commander/src/bootstrapping/commands/blockchain/hash.ts +++ b/commander/src/bootstrapping/commands/blockchain/hash.ts @@ -49,10 +49,7 @@ export class HashCommand extends Command { this.debug(` ${getFullPath(blockchainPath)}`); const db = getBlockchainDB(dataPath); - const stream = db.createReadStream({ - keys: false, - values: true, - }); + const stream = db.createReadStream(); const dbHash = crypto.createHash('sha256'); diff --git a/commander/src/bootstrapping/templates/lisk-template-ts/templates/init/package-template.json b/commander/src/bootstrapping/templates/lisk-template-ts/templates/init/package-template.json index 6f35596bd8d..65151d58e15 100644 --- a/commander/src/bootstrapping/templates/lisk-template-ts/templates/init/package-template.json +++ b/commander/src/bootstrapping/templates/lisk-template-ts/templates/init/package-template.json @@ -14,7 +14,7 @@ "homepage": "", "repository": {}, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist/index.js", @@ -98,15 +98,15 @@ } }, "dependencies": { - "@liskhq/lisk-framework-dashboard-plugin": "^0.1.7", - "@liskhq/lisk-framework-faucet-plugin": "^0.1.7", + "@liskhq/lisk-framework-dashboard-plugin": "^0.2.0-rc.0", + "@liskhq/lisk-framework-faucet-plugin": "^0.2.0-rc.0", "@oclif/command": "1.8.16", "@oclif/plugin-autocomplete": "1.2.0", "@oclif/plugin-help": "5.1.12", "fs-extra": "9.1.0", "inquirer": "7.3.2", - "lisk-commander": "^5.1.10", - "lisk-sdk": "^5.2.2", + "lisk-commander": "^5.2.0-rc.0", + "lisk-sdk": "^5.3.0-rc.0", "tar": "6.0.2", "tslib": "1.13.0", "axios": "0.21.1" @@ -115,7 +115,7 @@ "@oclif/dev-cli": "1.26.10", "@oclif/config": "1.18.3", "@types/fs-extra": "8.1.0", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@types/tar": "4.0.3", "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", diff --git a/commander/src/bootstrapping/templates/lisk-template-ts/templates/init_plugin/package.json b/commander/src/bootstrapping/templates/lisk-template-ts/templates/init_plugin/package.json index 8edca7f9f97..b2ace81c253 100644 --- a/commander/src/bootstrapping/templates/lisk-template-ts/templates/init_plugin/package.json +++ b/commander/src/bootstrapping/templates/lisk-template-ts/templates/init_plugin/package.json @@ -11,7 +11,7 @@ "url": "" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -29,12 +29,12 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "lisk-sdk": "^5.2.2" + "lisk-sdk": "^5.3.0-rc.0" }, "devDependencies": { "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "eslint": "7.22.0", diff --git a/commander/src/utils/db.ts b/commander/src/utils/db.ts index 423146e3d77..533221bee42 100644 --- a/commander/src/utils/db.ts +++ b/commander/src/utils/db.ts @@ -16,5 +16,5 @@ import * as db from '@liskhq/lisk-db'; import { getBlockchainDBPath } from './path'; -export const getBlockchainDB = (dataPath: string): db.KVStore => - new db.KVStore(getBlockchainDBPath(dataPath)); +export const getBlockchainDB = (dataPath: string): db.Database => + new db.Database(getBlockchainDBPath(dataPath)); diff --git a/elements/lisk-api-client/package.json b/elements/lisk-api-client/package.json index a1b1616343a..1a348113f9d 100644 --- a/elements/lisk-api-client/package.json +++ b/elements/lisk-api-client/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-api-client", - "version": "5.1.6", + "version": "5.2.0-rc.0", "description": "An API client for the Lisk network", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -36,19 +36,19 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-codec": "^0.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-transactions": "^5.2.2", + "@liskhq/lisk-codec": "^0.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-transactions": "^5.3.0-rc.0", "isomorphic-ws": "4.0.1", "pm2-axon": "4.0.1", "pm2-axon-rpc": "0.7.1", "ws": "7.5.7" }, "devDependencies": { - "@liskhq/lisk-chain": "^0.3.4", + "@liskhq/lisk-chain": "^0.4.0-rc.0", "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "eslint": "7.22.0", diff --git a/elements/lisk-api-client/test/integration/ws_channel.spec.ts b/elements/lisk-api-client/test/integration/ws_channel.spec.ts index 6b26fe94fe5..e65b7d3651a 100644 --- a/elements/lisk-api-client/test/integration/ws_channel.spec.ts +++ b/elements/lisk-api-client/test/integration/ws_channel.spec.ts @@ -35,7 +35,7 @@ describe('WSChannel', () => { describe('connect', () => { it('should be connect to ws server', async () => { const server = new WebSocket.Server({ path: '/my-path', port: 65535 }); - const channel = new WSChannel('ws://localhost:65535/my-path'); + const channel = new WSChannel('ws://127.0.0.1:65535/my-path'); try { await expect(channel.connect()).resolves.toBeUndefined(); @@ -62,7 +62,7 @@ describe('WSChannel', () => { http.listen(65535); - const channel = new WSChannel('ws://localhost:65535/my-path'); + const channel = new WSChannel('ws://127.0.0.1:65535/my-path'); try { await expect(channel.connect()).rejects.toThrow('Could not connect in 2000ms'); @@ -75,7 +75,7 @@ describe('WSChannel', () => { }, 5000); it('should throw error if server is not running', async () => { - const channel = new WSChannel('ws://localhost:65534/my-path'); + const channel = new WSChannel('ws://127.0.0.1:65534/my-path'); await expect(channel.connect()).rejects.toThrow('connect ECONNREFUSED 127.0.0.1:65534'); }); @@ -84,19 +84,20 @@ describe('WSChannel', () => { describe('disconnect', () => { it('should close ws connection', async () => { const server = new WebSocket.Server({ path: '/my-path', port: 65535 }); - const channel = new WSChannel('ws://localhost:65535/my-path'); + const channel = new WSChannel('ws://127.0.0.1:65535/my-path'); await channel.connect(); try { await expect(channel.disconnect()).resolves.toBeUndefined(); // WebSocket.Server.channels are not cleaned immediately - expect(server.clients.size).toEqual(1); - expect([...server.clients][0].readyState).toEqual(WebSocket.CLOSING); + expect(server.clients.size).toBeLessThanOrEqual(1); + if (server.clients.size > 0) { + expect([...server.clients][0].readyState).toEqual(WebSocket.CLOSING); + } } finally { await closeServer(server); } - expect.assertions(3); }); }); }); diff --git a/elements/lisk-bft/package.json b/elements/lisk-bft/package.json index 22fbd27ea70..c448bbe9db2 100644 --- a/elements/lisk-bft/package.json +++ b/elements/lisk-bft/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-bft", - "version": "0.3.4", + "version": "0.4.0-rc.0", "description": "Byzantine fault tolerance implementation according to the Lisk protocol", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -36,12 +36,12 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-chain": "^0.3.4", - "@liskhq/lisk-codec": "^0.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-utils": "^0.2.1", - "@liskhq/lisk-validator": "^0.6.2", - "@types/node": "16.11.26", + "@liskhq/lisk-chain": "^0.4.0-rc.0", + "@liskhq/lisk-codec": "^0.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0", + "@types/node": "18.15.3", "debug": "4.3.4" }, "devDependencies": { diff --git a/elements/lisk-chain/package.json b/elements/lisk-chain/package.json index 6e12e6b313f..6245a257d1c 100644 --- a/elements/lisk-chain/package.json +++ b/elements/lisk-chain/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-chain", - "version": "0.3.4", + "version": "0.4.0-rc.0", "description": "Blocks and state management implementation that are used for block processing according to the Lisk protocol", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -36,21 +36,21 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-codec": "^0.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-db": "^0.2.1", - "@liskhq/lisk-tree": "^0.2.2", - "@liskhq/lisk-utils": "^0.2.1", - "@liskhq/lisk-validator": "^0.6.2", + "@liskhq/lisk-codec": "^0.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-db": "^0.3.6", + "@liskhq/lisk-tree": "^0.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0", "debug": "4.3.4" }, "devDependencies": { - "@liskhq/lisk-passphrase": "^3.1.1", + "@liskhq/lisk-passphrase": "^3.2.0-rc.0", "@types/debug": "4.1.7", "@types/faker": "4.1.10", "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@types/randomstring": "1.1.6", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", diff --git a/elements/lisk-chain/src/chain.ts b/elements/lisk-chain/src/chain.ts index 42a79981e3f..960e086f549 100644 --- a/elements/lisk-chain/src/chain.ts +++ b/elements/lisk-chain/src/chain.ts @@ -13,7 +13,7 @@ */ import { codec, Schema } from '@liskhq/lisk-codec'; -import { KVStore, NotFoundError } from '@liskhq/lisk-db'; +import { Database, NotFoundError } from '@liskhq/lisk-db'; import * as createDebug from 'debug'; import { EventEmitter } from 'events'; import { validator, LiskValidationError } from '@liskhq/lisk-validator'; @@ -66,7 +66,7 @@ import { import { Transaction } from './transaction'; interface ChainConstructor { - readonly db: KVStore; + readonly db: Database; // Unique requirements readonly genesisBlock: GenesisBlock; readonly accountSchemas: { [name: string]: AccountSchema }; diff --git a/elements/lisk-chain/src/data_access/data_access.ts b/elements/lisk-chain/src/data_access/data_access.ts index 002b643c898..b1f48186a78 100644 --- a/elements/lisk-chain/src/data_access/data_access.ts +++ b/elements/lisk-chain/src/data_access/data_access.ts @@ -11,7 +11,7 @@ * * Removal or modification of this copyright notice is prohibited. */ -import { KVStore, NotFoundError } from '@liskhq/lisk-db'; +import { Database, NotFoundError } from '@liskhq/lisk-db'; import { codec, Schema } from '@liskhq/lisk-codec'; import { Transaction } from '../transaction'; import { BlockHeader, Block, RawBlock, Account, BlockHeaderAsset } from '../types'; @@ -24,7 +24,7 @@ import { blockHeaderSchema, blockSchema } from '../schema'; import { DB_KEY_ACCOUNTS_ADDRESS } from './constants'; interface DAConstructor { - readonly db: KVStore; + readonly db: Database; readonly registeredBlockHeaders: { readonly [key: number]: Schema; }; diff --git a/elements/lisk-chain/src/data_access/storage.ts b/elements/lisk-chain/src/data_access/storage.ts index a496eda0e46..81b31f02a43 100644 --- a/elements/lisk-chain/src/data_access/storage.ts +++ b/elements/lisk-chain/src/data_access/storage.ts @@ -11,7 +11,7 @@ * * Removal or modification of this copyright notice is prohibited. */ -import { KVStore, formatInt, getFirstPrefix, getLastPrefix, NotFoundError } from '@liskhq/lisk-db'; +import { Batch, Database, NotFoundError } from '@liskhq/lisk-db'; import { codec } from '@liskhq/lisk-codec'; import { getAddressFromPublicKey, hash } from '@liskhq/lisk-cryptography'; import { RawBlock, StateDiff } from '../types'; @@ -31,10 +31,31 @@ import { import { keyString } from '../utils'; import { stateDiffSchema } from '../schema'; +export const formatInt = (num: number | bigint): string => { + let buf: Buffer; + if (typeof num === 'bigint') { + if (num < BigInt(0)) { + throw new Error('Negative number cannot be formatted'); + } + buf = Buffer.alloc(8); + buf.writeBigUInt64BE(num); + } else { + if (num < 0) { + throw new Error('Negative number cannot be formatted'); + } + buf = Buffer.alloc(4); + buf.writeUInt32BE(num, 0); + } + return buf.toString('binary'); +}; + +export const getFirstPrefix = (prefix: string): Buffer => Buffer.from(`${prefix}\x00`); +export const getLastPrefix = (prefix: string): Buffer => Buffer.from(`${prefix}\xFF`); + export class Storage { - private readonly _db: KVStore; + private readonly _db: Database; - public constructor(db: KVStore) { + public constructor(db: Database) { this._db = db; } @@ -42,7 +63,7 @@ export class Storage { Block headers */ public async getBlockHeaderByID(id: Buffer): Promise { - const block = await this._db.get(`${DB_KEY_BLOCKS_ID}:${keyString(id)}`); + const block = await this._db.get(Buffer.from(`${DB_KEY_BLOCKS_ID}:${keyString(id)}`)); return block; } @@ -50,7 +71,7 @@ export class Storage { const blocks = []; for (const id of arrayOfBlockIds) { try { - const block = await this._db.get(`${DB_KEY_BLOCKS_ID}:${keyString(id)}`); + const block = await this._db.get(Buffer.from(`${DB_KEY_BLOCKS_ID}:${keyString(id)}`)); blocks.push(block); } catch (dbError) { if (dbError instanceof NotFoundError) { @@ -64,7 +85,7 @@ export class Storage { public async getBlockHeaderByHeight(height: number): Promise { const stringHeight = formatInt(height); - const id = await this._db.get(`${DB_KEY_BLOCKS_HEIGHT}:${stringHeight}`); + const id = await this._db.get(Buffer.from(`${DB_KEY_BLOCKS_HEIGHT}:${stringHeight}`)); return this.getBlockHeaderByID(id); } @@ -73,8 +94,8 @@ export class Storage { toHeight: number, ): Promise { const stream = this._db.createReadStream({ - gte: `${DB_KEY_BLOCKS_HEIGHT}:${formatInt(fromHeight)}`, - lte: `${DB_KEY_BLOCKS_HEIGHT}:${formatInt(toHeight)}`, + gte: Buffer.from(`${DB_KEY_BLOCKS_HEIGHT}:${formatInt(fromHeight)}`), + lte: Buffer.from(`${DB_KEY_BLOCKS_HEIGHT}:${formatInt(toHeight)}`), reverse: true, }); const blockIDs = await new Promise((resolve, reject) => { @@ -112,8 +133,8 @@ export class Storage { public async getLastBlockHeader(): Promise { const stream = this._db.createReadStream({ - gte: getFirstPrefix(DB_KEY_BLOCKS_HEIGHT), - lte: getLastPrefix(DB_KEY_BLOCKS_HEIGHT), + gte: Buffer.from(getFirstPrefix(DB_KEY_BLOCKS_HEIGHT)), + lte: Buffer.from(getLastPrefix(DB_KEY_BLOCKS_HEIGHT)), reverse: true, limit: 1, }); @@ -257,7 +278,7 @@ export class Storage { } public async isBlockPersisted(blockID: Buffer): Promise { - return this._db.exists(`${DB_KEY_BLOCKS_ID}:${keyString(blockID)}`); + return this._db.has(Buffer.from(`${DB_KEY_BLOCKS_ID}:${keyString(blockID)}`)); } /* @@ -265,7 +286,7 @@ export class Storage { */ public async getChainState(key: string): Promise { try { - const value = await this._db.get(`${DB_KEY_CHAIN_STATE}:${key}`); + const value = await this._db.get(Buffer.from(`${DB_KEY_CHAIN_STATE}:${key}`)); return value; } catch (error) { @@ -281,7 +302,7 @@ export class Storage { */ public async getConsensusState(key: string): Promise { try { - const value = await this._db.get(`${DB_KEY_CONSENSUS_STATE}:${key}`); + const value = await this._db.get(Buffer.from(`${DB_KEY_CONSENSUS_STATE}:${key}`)); return value; } catch (error) { @@ -296,14 +317,16 @@ export class Storage { // Warning: This function should never be used. This exist only for migration purpose. // Specifically, only to set genesis state between 5.1.2 => 5.1.3 public async setConsensusState(key: string, val: Buffer): Promise { - await this._db.put(`${DB_KEY_CONSENSUS_STATE}:${key}`, val); + await this._db.set(Buffer.from(`${DB_KEY_CONSENSUS_STATE}:${key}`), val); } /* Accounts */ public async getAccountByAddress(address: Buffer): Promise { - const account = await this._db.get(`${DB_KEY_ACCOUNTS_ADDRESS}:${keyString(address)}`); + const account = await this._db.get( + Buffer.from(`${DB_KEY_ACCOUNTS_ADDRESS}:${keyString(address)}`), + ); return account; } @@ -334,7 +357,9 @@ export class Storage { Transactions */ public async getTransactionByID(id: Buffer): Promise { - const transaction = await this._db.get(`${DB_KEY_TRANSACTIONS_ID}:${keyString(id)}`); + const transaction = await this._db.get( + Buffer.from(`${DB_KEY_TRANSACTIONS_ID}:${keyString(id)}`), + ); return transaction; } @@ -359,7 +384,7 @@ export class Storage { } public async isTransactionPersisted(transactionId: Buffer): Promise { - return this._db.exists(`${DB_KEY_TRANSACTIONS_ID}:${keyString(transactionId)}`); + return this._db.has(Buffer.from(`${DB_KEY_TRANSACTIONS_ID}:${keyString(transactionId)}`)); } /* @@ -375,22 +400,25 @@ export class Storage { removeFromTemp = false, ): Promise { const heightStr = formatInt(height); - const batch = this._db.batch(); - batch.put(`${DB_KEY_BLOCKS_ID}:${keyString(id)}`, header); - batch.put(`${DB_KEY_BLOCKS_HEIGHT}:${heightStr}`, id); + const batch = new Batch(); + batch.set(Buffer.from(`${DB_KEY_BLOCKS_ID}:${keyString(id)}`), header); + batch.set(Buffer.from(`${DB_KEY_BLOCKS_HEIGHT}:${heightStr}`), id); if (payload.length > 0) { const ids = []; for (const { id: txID, value } of payload) { ids.push(txID); - batch.put(`${DB_KEY_TRANSACTIONS_ID}:${keyString(txID)}`, value); + batch.set(Buffer.from(`${DB_KEY_TRANSACTIONS_ID}:${keyString(txID)}`), value); } - batch.put(`${DB_KEY_TRANSACTIONS_BLOCK_ID}:${keyString(id)}`, Buffer.concat(ids)); + batch.set( + Buffer.from(`${DB_KEY_TRANSACTIONS_BLOCK_ID}:${keyString(id)}`), + Buffer.concat(ids), + ); } if (removeFromTemp) { - batch.del(`${DB_KEY_TEMPBLOCKS_HEIGHT}:${heightStr}`); + batch.del(Buffer.from(`${DB_KEY_TEMPBLOCKS_HEIGHT}:${heightStr}`)); } stateStore.finalize(heightStr, batch); - await batch.write(); + await this._db.write(batch); await this._cleanUntil(finalizedHeight); } @@ -402,24 +430,24 @@ export class Storage { stateStore: StateStore, saveToTemp = false, ): Promise { - const batch = this._db.batch(); + const batch = new Batch(); const heightStr = formatInt(height); - batch.del(`${DB_KEY_BLOCKS_ID}:${keyString(id)}`); - batch.del(`${DB_KEY_BLOCKS_HEIGHT}:${heightStr}`); + batch.del(Buffer.from(`${DB_KEY_BLOCKS_ID}:${keyString(id)}`)); + batch.del(Buffer.from(`${DB_KEY_BLOCKS_HEIGHT}:${heightStr}`)); if (txIDs.length > 0) { for (const txID of txIDs) { - batch.del(`${DB_KEY_TRANSACTIONS_ID}:${keyString(txID)}`); + batch.del(Buffer.from(`${DB_KEY_TRANSACTIONS_ID}:${keyString(txID)}`)); } - batch.del(`${DB_KEY_TRANSACTIONS_BLOCK_ID}:${keyString(id)}`); + batch.del(Buffer.from(`${DB_KEY_TRANSACTIONS_BLOCK_ID}:${keyString(id)}`)); } if (saveToTemp) { - batch.put(`${DB_KEY_TEMPBLOCKS_HEIGHT}:${heightStr}`, fullBlock); + batch.set(Buffer.from(`${DB_KEY_TEMPBLOCKS_HEIGHT}:${heightStr}`), fullBlock); } // Take the diff to revert back states const diffKey = `${DB_KEY_DIFF_STATE}:${heightStr}`; // If there is no diff, the key might not exist - const stateDiff = await this._db.get(diffKey); + const stateDiff = await this._db.get(Buffer.from(diffKey)); const { created: createdStates, @@ -428,22 +456,22 @@ export class Storage { } = codec.decode(stateDiffSchema, stateDiff); // Delete all the newly created states for (const key of createdStates) { - batch.del(key); + batch.del(Buffer.from(key)); } // Revert all deleted values for (const { key, value: previousValue } of deletedStates) { - batch.put(key, previousValue); + batch.set(Buffer.from(key), previousValue); } for (const { key, value: previousValue } of updatedStates) { - batch.put(key, previousValue); + batch.set(Buffer.from(key), previousValue); } stateStore.finalize(heightStr, batch); // Delete stored diff at particular height - batch.del(diffKey); + batch.del(Buffer.from(diffKey)); // Persist the whole batch - await batch.write(); + await this._db.write(batch); return { deleted: deletedStates, created: createdStates, @@ -453,16 +481,19 @@ export class Storage { // This function is out of batch, but even if it fails, it will run again next time private async _cleanUntil(height: number): Promise { + const max = Math.max(0, height - 1); await this._db.clear({ - gte: `${DB_KEY_DIFF_STATE}:${formatInt(0)}`, - lt: `${DB_KEY_DIFF_STATE}:${formatInt(height)}`, + gte: Buffer.from(`${DB_KEY_DIFF_STATE}:${formatInt(0)}`), + lte: Buffer.from(`${DB_KEY_DIFF_STATE}:${formatInt(max)}`), }); } private async _getTransactions(blockID: Buffer): Promise { const txIDs: Buffer[] = []; try { - const ids = await this._db.get(`${DB_KEY_TRANSACTIONS_BLOCK_ID}:${keyString(blockID)}`); + const ids = await this._db.get( + Buffer.from(`${DB_KEY_TRANSACTIONS_BLOCK_ID}:${keyString(blockID)}`), + ); const idLength = 32; for (let i = 0; i < ids.length; i += idLength) { txIDs.push(ids.slice(i, i + idLength)); @@ -477,7 +508,7 @@ export class Storage { } const transactions = []; for (const txID of txIDs) { - const tx = await this._db.get(`${DB_KEY_TRANSACTIONS_ID}:${keyString(txID)}`); + const tx = await this._db.get(Buffer.from(`${DB_KEY_TRANSACTIONS_ID}:${keyString(txID)}`)); transactions.push(tx); } diff --git a/elements/lisk-chain/src/state_store/account_store.ts b/elements/lisk-chain/src/state_store/account_store.ts index cc309240b95..b93edf23dd4 100644 --- a/elements/lisk-chain/src/state_store/account_store.ts +++ b/elements/lisk-chain/src/state_store/account_store.ts @@ -11,7 +11,7 @@ * * Removal or modification of this copyright notice is prohibited. */ -import { NotFoundError, BatchChain } from '@liskhq/lisk-db'; +import { NotFoundError, Batch } from '@liskhq/lisk-db'; import { objects, dataStructures } from '@liskhq/lisk-utils'; import { DataAccess } from '../data_access'; import { StateDiff, Account, AccountDefaultProps } from '../types'; @@ -142,14 +142,14 @@ export class AccountStore { this._data.delete(address); } - public finalize(batch: BatchChain): StateDiff { + public finalize(batch: Batch): StateDiff { const stateDiff = { updated: [], created: [], deleted: [] } as StateDiff; for (const updatedAccount of this._data.values()) { if (this._updatedKeys.has(updatedAccount.address)) { const encodedAccount = this._dataAccess.encodeAccount(updatedAccount); const dbKey = `${DB_KEY_ACCOUNTS_ADDRESS}:${keyString(updatedAccount.address)}`; - batch.put(dbKey, encodedAccount); + batch.set(Buffer.from(dbKey), encodedAccount); const initialAccount = this._initialAccountValue.get(updatedAccount.address); if (initialAccount !== undefined && !initialAccount.equals(encodedAccount)) { @@ -168,7 +168,7 @@ export class AccountStore { throw new Error('Deleting account should have initial account'); } const dbKey = `${DB_KEY_ACCOUNTS_ADDRESS}:${keyString(deletedAddress)}`; - batch.del(dbKey); + batch.del(Buffer.from(dbKey)); stateDiff.deleted.push({ key: dbKey, value: initialAccount, diff --git a/elements/lisk-chain/src/state_store/chain_state_store.ts b/elements/lisk-chain/src/state_store/chain_state_store.ts index 24b7f4b1fa9..465a2b1b508 100644 --- a/elements/lisk-chain/src/state_store/chain_state_store.ts +++ b/elements/lisk-chain/src/state_store/chain_state_store.ts @@ -12,7 +12,7 @@ * Removal or modification of this copyright notice is prohibited. */ -import { BatchChain } from '@liskhq/lisk-db'; +import { Batch } from '@liskhq/lisk-db'; import { DataAccess } from '../data_access'; import { BlockHeader, StateDiff } from '../types'; import { DB_KEY_CHAIN_STATE } from '../data_access/constants'; @@ -105,7 +105,7 @@ export class ChainStateStore { this._updatedKeys.add(key); } - public finalize(batch: BatchChain): StateDiff { + public finalize(batch: Batch): StateDiff { const stateDiff = { updated: [], created: [], deleted: [] } as StateDiff; if (this._updatedKeys.size === 0) { @@ -115,7 +115,7 @@ export class ChainStateStore { for (const key of Array.from(this._updatedKeys)) { const dbKey = `${DB_KEY_CHAIN_STATE}:${key}`; const updatedValue = this._data[key] as Buffer; - batch.put(dbKey, updatedValue); + batch.set(Buffer.from(dbKey), updatedValue); const initialValue = this._initialValue[key]; if (initialValue !== undefined && !initialValue.equals(updatedValue)) { diff --git a/elements/lisk-chain/src/state_store/consensus_state_store.ts b/elements/lisk-chain/src/state_store/consensus_state_store.ts index 62fb751e5b5..6fbc2a748ee 100644 --- a/elements/lisk-chain/src/state_store/consensus_state_store.ts +++ b/elements/lisk-chain/src/state_store/consensus_state_store.ts @@ -12,7 +12,7 @@ * Removal or modification of this copyright notice is prohibited. */ -import { BatchChain } from '@liskhq/lisk-db'; +import { Batch } from '@liskhq/lisk-db'; import { StateDiff } from '../types'; import { DB_KEY_CONSENSUS_STATE } from '../data_access/constants'; import { DataAccess } from '../data_access'; @@ -85,7 +85,7 @@ export class ConsensusStateStore { this._updatedKeys.add(key); } - public finalize(batch: BatchChain): StateDiff { + public finalize(batch: Batch): StateDiff { const stateDiff = { updated: [], created: [], deleted: [] } as StateDiff; if (this._updatedKeys.size === 0) { @@ -95,7 +95,7 @@ export class ConsensusStateStore { for (const key of Array.from(this._updatedKeys)) { const dbKey = `${DB_KEY_CONSENSUS_STATE}:${key}`; const updatedValue = this._data[key] as Buffer; - batch.put(dbKey, updatedValue); + batch.set(Buffer.from(dbKey), updatedValue); // finalized height should never be saved to diff, since it will not changed if (key === CONSENSUS_STATE_FINALIZED_HEIGHT_KEY) { diff --git a/elements/lisk-chain/src/state_store/state_store.ts b/elements/lisk-chain/src/state_store/state_store.ts index ccfe0020744..da8e6f90a1b 100644 --- a/elements/lisk-chain/src/state_store/state_store.ts +++ b/elements/lisk-chain/src/state_store/state_store.ts @@ -13,7 +13,7 @@ */ import { codec } from '@liskhq/lisk-codec'; -import { BatchChain } from '@liskhq/lisk-db'; +import { Batch } from '@liskhq/lisk-db'; import { BlockHeader, StateDiff, UpdatedDiff } from '../types'; import { AccountStore } from './account_store'; import { ChainStateStore } from './chain_state_store'; @@ -29,11 +29,7 @@ interface AdditionalInformation { readonly defaultAccount: Record; } -const saveDiff = ( - height: string, - stateDiffs: Array>, - batch: BatchChain, -): void => { +const saveDiff = (height: string, stateDiffs: Array>, batch: Batch): void => { const diffToEncode: { updated: UpdatedDiff[]; created: string[]; deleted: UpdatedDiff[] } = { updated: [], created: [], @@ -47,7 +43,7 @@ const saveDiff = ( } const encodedDiff = codec.encode(stateDiffSchema, diffToEncode); - batch.put(`${DB_KEY_DIFF_STATE}:${height}`, encodedDiff); + batch.set(Buffer.from(`${DB_KEY_DIFF_STATE}:${height}`), encodedDiff); }; export class StateStore { @@ -79,7 +75,7 @@ export class StateStore { this.chain.restoreSnapshot(); } - public finalize(height: string, batch: BatchChain): void { + public finalize(height: string, batch: Batch): void { const accountStateDiff = this.account.finalize(batch); const chainStateDiff = this.chain.finalize(batch); const consensusStateDiff = this.consensus.finalize(batch); diff --git a/elements/lisk-chain/test/integration/data_access/accounts.spec.ts b/elements/lisk-chain/test/integration/data_access/accounts.spec.ts index c08dab62b30..4953c473ce1 100644 --- a/elements/lisk-chain/test/integration/data_access/accounts.spec.ts +++ b/elements/lisk-chain/test/integration/data_access/accounts.spec.ts @@ -14,7 +14,7 @@ /* eslint-disable @typescript-eslint/restrict-template-expressions */ import * as path from 'path'; import * as fs from 'fs-extra'; -import { KVStore, NotFoundError } from '@liskhq/lisk-db'; +import { Batch, Database, NotFoundError } from '@liskhq/lisk-db'; import { getRandomBytes } from '@liskhq/lisk-cryptography'; import { Storage } from '../../../src/data_access/storage'; import { @@ -26,7 +26,7 @@ import { DataAccess } from '../../../src/data_access'; import { registeredBlockHeaders } from '../../utils/block'; describe('dataAccess.transactions', () => { - let db: KVStore; + let db: Database; let storage: Storage; let dataAccess: DataAccess; let accounts: any; @@ -34,7 +34,7 @@ describe('dataAccess.transactions', () => { beforeAll(() => { const parentPath = path.join(__dirname, '../../tmp/accounts'); fs.ensureDirSync(parentPath); - db = new KVStore(path.join(parentPath, '/test-accounts.db')); + db = new Database(path.join(parentPath, '/test-accounts.db')); storage = new Storage(db); dataAccess = new DataAccess({ db, @@ -61,14 +61,14 @@ describe('dataAccess.transactions', () => { }, }), ]; - const batch = db.batch(); + const batch = new Batch(); for (const account of accounts) { - batch.put( - `accounts:address:${account.address.toString('binary')}`, + batch.set( + Buffer.from(`accounts:address:${account.address.toString('binary')}`), encodeDefaultAccount(account), ); } - await batch.write(); + await db.write(batch); }); afterEach(async () => { diff --git a/elements/lisk-chain/test/integration/data_access/blocks.spec.ts b/elements/lisk-chain/test/integration/data_access/blocks.spec.ts index bbcd552f6d4..c4ff0a28d5f 100644 --- a/elements/lisk-chain/test/integration/data_access/blocks.spec.ts +++ b/elements/lisk-chain/test/integration/data_access/blocks.spec.ts @@ -14,9 +14,9 @@ /* eslint-disable @typescript-eslint/restrict-template-expressions */ import * as path from 'path'; import * as fs from 'fs-extra'; -import { KVStore, formatInt, NotFoundError } from '@liskhq/lisk-db'; +import { Batch, Database, NotFoundError } from '@liskhq/lisk-db'; import { codec } from '@liskhq/lisk-codec'; -import { Storage } from '../../../src/data_access/storage'; +import { Storage, formatInt } from '../../../src/data_access/storage'; import { createValidDefaultBlock, encodeDefaultBlockHeader, @@ -36,7 +36,7 @@ describe('dataAccess.blocks', () => { updated: [], deleted: [], }); - let db: KVStore; + let db: Database; let storage: Storage; let dataAccess: DataAccess; let blocks: Block[]; @@ -44,7 +44,7 @@ describe('dataAccess.blocks', () => { beforeAll(() => { const parentPath = path.join(__dirname, '../../tmp/blocks'); fs.ensureDirSync(parentPath); - db = new KVStore(path.join(parentPath, '/test-blocks.db')); + db = new Database(path.join(parentPath, '/test-blocks.db')); storage = new Storage(db); }); @@ -72,36 +72,39 @@ describe('dataAccess.blocks', () => { const block303 = createValidDefaultBlock({ header: { height: 303 } }); blocks = [block300, block301, block302, block303]; - const batch = db.batch(); + const batch = new Batch(); for (const block of blocks) { const { payload, header } = block; - batch.put(`blocks:id:${header.id.toString('binary')}`, encodeDefaultBlockHeader(header)); - batch.put(`blocks:height:${formatInt(header.height)}`, header.id); + batch.set( + Buffer.from(`blocks:id:${header.id.toString('binary')}`), + encodeDefaultBlockHeader(header), + ); + batch.set(Buffer.from(`blocks:height:${formatInt(header.height)}`), header.id); if (payload.length) { - batch.put( - `transactions:blockID:${header.id.toString('binary')}`, + batch.set( + Buffer.from(`transactions:blockID:${header.id.toString('binary')}`), Buffer.concat(payload.map(tx => tx.id)), ); for (const tx of payload) { - batch.put(`transactions:id:${tx.id.toString('binary')}`, tx.getBytes()); + batch.set(Buffer.from(`transactions:id:${tx.id.toString('binary')}`), tx.getBytes()); } } - batch.put( - `tempBlocks:height:${formatInt(blocks[2].header.height)}`, + batch.set( + Buffer.from(`tempBlocks:height:${formatInt(blocks[2].header.height)}`), encodedDefaultBlock(blocks[2]), ); - batch.put( - `tempBlocks:height:${formatInt(blocks[3].header.height)}`, + batch.set( + Buffer.from(`tempBlocks:height:${formatInt(blocks[3].header.height)}`), encodedDefaultBlock(blocks[3]), ); - batch.put( + batch.set( // eslint-disable-next-line @typescript-eslint/restrict-plus-operands - `tempBlocks:height:${formatInt(blocks[3].header.height + 1)}`, + Buffer.from(`tempBlocks:height:${formatInt(blocks[3].header.height + 1)}`), encodedDefaultBlock(blocks[3]), ); - batch.put(`diff:${formatInt(block.header.height)}`, emptyEncodedDiff); + batch.set(Buffer.from(`diff:${formatInt(block.header.height)}`), emptyEncodedDiff); } - await batch.write(); + await db.write(batch); dataAccess.resetBlockHeaderCache(); }); @@ -333,22 +336,22 @@ describe('dataAccess.blocks', () => { await dataAccess.saveBlock(block, stateStore as any, 0); await expect( - db.exists(`blocks:id:${block.header.id.toString('binary')}`), + db.has(Buffer.from(`blocks:id:${block.header.id.toString('binary')}`)), ).resolves.toBeTrue(); await expect( - db.exists(`blocks:height:${formatInt(block.header.height)}`), + db.has(Buffer.from(`blocks:height:${formatInt(block.header.height)}`)), ).resolves.toBeTrue(); await expect( - db.exists(`transactions:blockID:${block.header.id.toString('binary')}`), + db.has(Buffer.from(`transactions:blockID:${block.header.id.toString('binary')}`)), ).resolves.toBeTrue(); await expect( - db.exists(`transactions:id:${block.payload[0].id.toString('binary')}`), + db.has(Buffer.from(`transactions:id:${block.payload[0].id.toString('binary')}`)), ).resolves.toBeTrue(); await expect( - db.exists(`transactions:id:${block.payload[1].id.toString('binary')}`), + db.has(Buffer.from(`transactions:id:${block.payload[1].id.toString('binary')}`)), ).resolves.toBeTrue(); await expect( - db.exists(`tempBlocks:height:${formatInt(block.header.height)}`), + db.has(Buffer.from(`tempBlocks:height:${formatInt(block.header.height)}`)), ).resolves.toBeTrue(); const createdBlock = await dataAccess.getBlockByID(block.header.id); expect(createdBlock.header).toStrictEqual(block.header); @@ -362,22 +365,22 @@ describe('dataAccess.blocks', () => { await dataAccess.saveBlock(block, stateStore as any, 0, true); await expect( - db.exists(`blocks:id:${block.header.id.toString('binary')}`), + db.has(Buffer.from(`blocks:id:${block.header.id.toString('binary')}`)), ).resolves.toBeTrue(); await expect( - db.exists(`blocks:height:${formatInt(block.header.height)}`), + db.has(Buffer.from(`blocks:height:${formatInt(block.header.height)}`)), ).resolves.toBeTrue(); await expect( - db.exists(`transactions:blockID:${block.header.id.toString('binary')}`), + db.has(Buffer.from(`transactions:blockID:${block.header.id.toString('binary')}`)), ).resolves.toBeTrue(); await expect( - db.exists(`transactions:id:${block.payload[0].id.toString('binary')}`), + db.has(Buffer.from(`transactions:id:${block.payload[0].id.toString('binary')}`)), ).resolves.toBeTrue(); await expect( - db.exists(`transactions:id:${block.payload[1].id.toString('binary')}`), + db.has(Buffer.from(`transactions:id:${block.payload[1].id.toString('binary')}`)), ).resolves.toBeTrue(); await expect( - db.exists(`tempBlocks:height:${formatInt(block.header.height)}`), + db.has(Buffer.from(`tempBlocks:height:${formatInt(block.header.height)}`)), ).resolves.toBeFalse(); const createdBlock = await dataAccess.getBlockByID(block.header.id); expect(createdBlock.header).toStrictEqual(block.header); @@ -388,12 +391,12 @@ describe('dataAccess.blocks', () => { }); it('should delete diff before the finalized height', async () => { - await db.put(`diff:${formatInt(99)}`, Buffer.from('random diff')); - await db.put(`diff:${formatInt(100)}`, Buffer.from('random diff 2')); + await db.set(Buffer.from(`diff:${formatInt(99)}`), Buffer.from('random diff')); + await db.set(Buffer.from(`diff:${formatInt(100)}`), Buffer.from('random diff 2')); await dataAccess.saveBlock(block, stateStore as any, 100, true); - await expect(db.exists(`diff:${formatInt(100)}`)).resolves.toBeTrue(); - await expect(db.exists(`diff:${formatInt(99)}`)).resolves.toBeFalse(); + await expect(db.has(Buffer.from(`diff:${formatInt(100)}`))).resolves.toBeTrue(); + await expect(db.has(Buffer.from(`diff:${formatInt(99)}`))).resolves.toBeFalse(); }); }); @@ -407,22 +410,22 @@ describe('dataAccess.blocks', () => { await dataAccess.deleteBlock(blocks[2], stateStore as any); await expect( - db.exists(`blocks:id:${blocks[2].header.id.toString('binary')}`), + db.has(Buffer.from(`blocks:id:${blocks[2].header.id.toString('binary')}`)), ).resolves.toBeFalse(); await expect( - db.exists(`blocks:height:${formatInt(blocks[2].header.height)}`), + db.has(Buffer.from(`blocks:height:${formatInt(blocks[2].header.height)}`)), ).resolves.toBeFalse(); await expect( - db.exists(`transactions:blockID:${blocks[2].header.id.toString('binary')}`), + db.has(Buffer.from(`transactions:blockID:${blocks[2].header.id.toString('binary')}`)), ).resolves.toBeFalse(); await expect( - db.exists(`transactions:id:${blocks[2].payload[0].id.toString('binary')}`), + db.has(Buffer.from(`transactions:id:${blocks[2].payload[0].id.toString('binary')}`)), ).resolves.toBeFalse(); await expect( - db.exists(`transactions:id:${blocks[2].payload[1].id.toString('binary')}`), + db.has(Buffer.from(`transactions:id:${blocks[2].payload[1].id.toString('binary')}`)), ).resolves.toBeFalse(); await expect( - db.exists(`tempBlocks:height:${formatInt(blocks[2].header.height)}`), + db.has(Buffer.from(`tempBlocks:height:${formatInt(blocks[2].header.height)}`)), ).resolves.toBeFalse(); }); @@ -439,8 +442,8 @@ describe('dataAccess.blocks', () => { balance: BigInt(100000000), }, }); - await db.put( - `diff:${formatInt(blocks[2].header.height)}`, + await db.set( + Buffer.from(`diff:${formatInt(blocks[2].header.height)}`), codec.encode(stateDiffSchema, { created: [], updated: [ @@ -470,11 +473,11 @@ describe('dataAccess.blocks', () => { it('should throw an error when there is no diff', async () => { // Deleting temp blocks to test the saving - await db.del(`diff:${formatInt(blocks[2].header.height)}`); + await db.del(Buffer.from(`diff:${formatInt(blocks[2].header.height)}`)); await dataAccess.clearTempBlocks(); await expect(dataAccess.deleteBlock(blocks[2], stateStore as any)).rejects.toThrow( - 'Specified key diff:0000012e does not exist', + 'Specified key 646966663a0000012e does not exist', ); }); @@ -484,22 +487,22 @@ describe('dataAccess.blocks', () => { await dataAccess.deleteBlock(blocks[2], stateStore as any, true); await expect( - db.exists(`blocks:id:${blocks[2].header.id.toString('binary')}`), + db.has(Buffer.from(`blocks:id:${blocks[2].header.id.toString('binary')}`)), ).resolves.toBeFalse(); await expect( - db.exists(`blocks:height:${formatInt(blocks[2].header.height)}`), + db.has(Buffer.from(`blocks:height:${formatInt(blocks[2].header.height)}`)), ).resolves.toBeFalse(); await expect( - db.exists(`transactions:blockID:${blocks[2].header.id.toString('binary')}`), + db.has(Buffer.from(`transactions:blockID:${blocks[2].header.id.toString('binary')}`)), ).resolves.toBeFalse(); await expect( - db.exists(`transactions:id:${blocks[2].payload[0].id.toString('binary')}`), + db.has(Buffer.from(`transactions:id:${blocks[2].payload[0].id.toString('binary')}`)), ).resolves.toBeFalse(); await expect( - db.exists(`transactions:id:${blocks[2].payload[1].id.toString('binary')}`), + db.has(Buffer.from(`transactions:id:${blocks[2].payload[1].id.toString('binary')}`)), ).resolves.toBeFalse(); await expect( - db.exists(`tempBlocks:height:${formatInt(blocks[2].header.height)}`), + db.has(Buffer.from(`tempBlocks:height:${formatInt(blocks[2].header.height)}`)), ).resolves.toBeTrue(); const tempBlocks = await dataAccess.getTempBlocks(); diff --git a/elements/lisk-chain/test/integration/data_access/transactions.spec.ts b/elements/lisk-chain/test/integration/data_access/transactions.spec.ts index a01a4af2f26..f1222ccc405 100644 --- a/elements/lisk-chain/test/integration/data_access/transactions.spec.ts +++ b/elements/lisk-chain/test/integration/data_access/transactions.spec.ts @@ -14,21 +14,21 @@ /* eslint-disable @typescript-eslint/restrict-template-expressions */ import * as path from 'path'; import * as fs from 'fs-extra'; -import { KVStore, NotFoundError } from '@liskhq/lisk-db'; +import { Batch, Database, NotFoundError } from '@liskhq/lisk-db'; import { DataAccess } from '../../../src/data_access'; import { defaultAccountSchema } from '../../utils/account'; import { registeredBlockHeaders } from '../../utils/block'; import { getTransaction } from '../../utils/transaction'; describe('dataAccess.transactions', () => { - let db: KVStore; + let db: Database; let dataAccess: DataAccess; let transactions: any; beforeAll(() => { const parentPath = path.join(__dirname, '../../tmp/transactions'); fs.ensureDirSync(parentPath); - db = new KVStore(path.join(parentPath, '/test-transactions.db')); + db = new Database(path.join(parentPath, '/test-transactions.db')); dataAccess = new DataAccess({ db, accountSchema: defaultAccountSchema, @@ -40,11 +40,11 @@ describe('dataAccess.transactions', () => { beforeEach(async () => { transactions = [getTransaction({ nonce: BigInt(1000) }), getTransaction({ nonce: BigInt(0) })]; - const batch = db.batch(); + const batch = new Batch(); for (const tx of transactions) { - batch.put(`transactions:id:${tx.id.toString('binary')}`, tx.getBytes()); + batch.set(Buffer.from(`transactions:id:${tx.id.toString('binary')}`), tx.getBytes()); } - await batch.write(); + await db.write(batch); }); afterEach(async () => { diff --git a/elements/lisk-chain/test/integration/state_store/save_diff.spec.ts b/elements/lisk-chain/test/integration/state_store/save_diff.spec.ts index 50e329e5a1d..e140598a56b 100644 --- a/elements/lisk-chain/test/integration/state_store/save_diff.spec.ts +++ b/elements/lisk-chain/test/integration/state_store/save_diff.spec.ts @@ -15,7 +15,7 @@ import * as path from 'path'; import * as fs from 'fs-extra'; import { codec } from '@liskhq/lisk-codec'; -import { KVStore } from '@liskhq/lisk-db'; +import { Batch, Database } from '@liskhq/lisk-db'; import { createFakeDefaultAccount, defaultAccountSchema, @@ -39,7 +39,7 @@ describe('stateStore.finalize.saveDiff', () => { const defaultNetworkIdentifier = Buffer.from( '93d00fe5be70d90e7ae247936a2e7d83b50809c79b73fa14285f02c842348b3e', ); - let db: KVStore; + let db: Database; let dataAccess: DataAccess; let stateStore: StateStore; let accounts: Account[]; @@ -47,7 +47,7 @@ describe('stateStore.finalize.saveDiff', () => { beforeAll(() => { const parentPath = path.join(__dirname, '../../tmp/diff'); fs.ensureDirSync(parentPath); - db = new KVStore(path.join(parentPath, '/test-diff.db')); + db = new Database(path.join(parentPath, '/test-diff.db')); dataAccess = new DataAccess({ db, accountSchema: defaultAccountSchema as any, @@ -95,12 +95,12 @@ describe('stateStore.finalize.saveDiff', () => { await stateStore.account.set(account.address, account); } const fakeHeight = '1'; - const batch = db.batch(); + const batch = new Batch(); // Act stateStore.finalize(fakeHeight, batch); - await batch.write(); - const diff = await db.get(`${DB_KEY_DIFF_STATE}:${fakeHeight}`); + await db.write(batch); + const diff = await db.get(Buffer.from(`${DB_KEY_DIFF_STATE}:${fakeHeight}`)); const decodedDiff = codec.decode(stateDiffSchema, diff); // Assert @@ -120,12 +120,12 @@ describe('stateStore.finalize.saveDiff', () => { await stateStore.account.set(account.address, account); } const fakeHeight = '1'; - const batch = db.batch(); + const batch = new Batch(); // Act await stateStore.account.del(accounts[0].address); stateStore.finalize(fakeHeight, batch); - await batch.write(); - const diff = await db.get(`${DB_KEY_DIFF_STATE}:${fakeHeight}`); + await db.write(batch); + const diff = await db.get(Buffer.from(`${DB_KEY_DIFF_STATE}:${fakeHeight}`)); const decodedDiff = codec.decode(stateDiffSchema, diff); // Assert @@ -142,9 +142,9 @@ describe('stateStore.finalize.saveDiff', () => { await stateStore.account.set(account.address, account); } const fakeHeight = '1'; - const batch = db.batch(); + const batch = new Batch(); stateStore.finalize(fakeHeight, batch); - await batch.write(); + await db.write(batch); // Act const nextHeight = '2'; @@ -160,12 +160,12 @@ describe('stateStore.finalize.saveDiff', () => { const originalBuffer = encodeDefaultAccount(originalAccount); originalAccount.token.balance = BigInt(777); await newStateStore.account.set(accounts[0].address, originalAccount); - const nextBatch = db.batch(); + const nextBatch = new Batch(); await newStateStore.account.del(accounts[0].address); newStateStore.finalize(nextHeight, nextBatch); - await nextBatch.write(); + await db.write(nextBatch); - const diff = await db.get(`${DB_KEY_DIFF_STATE}:${nextHeight}`); + const diff = await db.get(Buffer.from(`${DB_KEY_DIFF_STATE}:${nextHeight}`)); const decodedDiff = codec.decode(stateDiffSchema, diff); // Assert @@ -186,12 +186,12 @@ describe('stateStore.finalize.saveDiff', () => { await stateStore.chain.set('key1', Buffer.from('value1')); await stateStore.chain.set('key2', Buffer.from('value2')); const fakeHeight = '2'; - const batch = db.batch(); + const batch = new Batch(); // Act stateStore.finalize(fakeHeight, batch); - await batch.write(); - const diff = await db.get(`${DB_KEY_DIFF_STATE}:${fakeHeight}`); + await db.write(batch); + const diff = await db.get(Buffer.from(`${DB_KEY_DIFF_STATE}:${fakeHeight}`)); const decodedDiff = codec.decode(stateDiffSchema, diff); // Assert @@ -207,12 +207,12 @@ describe('stateStore.finalize.saveDiff', () => { await stateStore.consensus.set('key3', Buffer.from('value3')); await stateStore.consensus.set('key4', Buffer.from('value4')); const fakeHeight = '3'; - const batch = db.batch(); + const batch = new Batch(); // Act stateStore.finalize(fakeHeight, batch); - await batch.write(); - const diff = await db.get(`${DB_KEY_DIFF_STATE}:${fakeHeight}`); + await db.write(batch); + const diff = await db.get(Buffer.from(`${DB_KEY_DIFF_STATE}:${fakeHeight}`)); const decodedDiff = codec.decode(stateDiffSchema, diff); // Assert @@ -233,12 +233,12 @@ describe('stateStore.finalize.saveDiff', () => { await stateStore.consensus.set('key3', Buffer.from('value3')); await stateStore.consensus.set('key4', Buffer.from('value4')); const fakeHeight = '4'; - const batch = db.batch(); + const batch = new Batch(); // Act stateStore.finalize(fakeHeight, batch); - await batch.write(); - const diff = await db.get(`${DB_KEY_DIFF_STATE}:${fakeHeight}`); + await db.write(batch); + const diff = await db.get(Buffer.from(`${DB_KEY_DIFF_STATE}:${fakeHeight}`)); const decodedDiff = codec.decode(stateDiffSchema, diff); // Assert @@ -262,9 +262,9 @@ describe('stateStore.finalize.saveDiff', () => { await stateStore.consensus.set('key1', Buffer.from('value1')); await stateStore.consensus.set('key2', Buffer.from('value2')); const fakeHeight = '5'; - const batch = db.batch(); + const batch = new Batch(); stateStore.finalize(fakeHeight, batch); - await batch.write(); + await db.write(batch); // Update stateStore = new StateStore(dataAccess, { @@ -282,10 +282,10 @@ describe('stateStore.finalize.saveDiff', () => { await stateStore.consensus.set('key1', updatedVal1); await stateStore.consensus.set('key2', updatedVal2); const updatedFakeHeight = '6'; - const updateBatch = db.batch(); + const updateBatch = new Batch(); stateStore.finalize(updatedFakeHeight, updateBatch); - await updateBatch.write(); - const diff = await db.get(`${DB_KEY_DIFF_STATE}:${updatedFakeHeight}`); + await db.write(updateBatch); + const diff = await db.get(Buffer.from(`${DB_KEY_DIFF_STATE}:${updatedFakeHeight}`)); const decodedDiff = codec.decode(stateDiffSchema, diff); // Assert @@ -295,12 +295,12 @@ describe('stateStore.finalize.saveDiff', () => { it('should save empty diff if state was not changed', async () => { // Arrange const fakeHeight = '3'; - const batch = db.batch(); + const batch = new Batch(); // Act stateStore.finalize(fakeHeight, batch); - await batch.write(); - const diff = await db.get(`${DB_KEY_DIFF_STATE}:${fakeHeight}`); + await db.write(batch); + const diff = await db.get(Buffer.from(`${DB_KEY_DIFF_STATE}:${fakeHeight}`)); const decodedDiff = codec.decode(stateDiffSchema, diff); // Assert diff --git a/elements/lisk-chain/test/unit/chain.spec.ts b/elements/lisk-chain/test/unit/chain.spec.ts index d41d80a7335..db1df030b23 100644 --- a/elements/lisk-chain/test/unit/chain.spec.ts +++ b/elements/lisk-chain/test/unit/chain.spec.ts @@ -14,7 +14,7 @@ import { Readable } from 'stream'; import { when } from 'jest-when'; -import { KVStore, NotFoundError, formatInt } from '@liskhq/lisk-db'; +import { Batch, Database, NotFoundError } from '@liskhq/lisk-db'; import { codec } from '@liskhq/lisk-codec'; import { getRandomBytes } from '@liskhq/lisk-cryptography'; import { Chain } from '../../src/chain'; @@ -31,6 +31,7 @@ import { Block, Validator } from '../../src/types'; import { createFakeDefaultAccount, defaultAccountModules } from '../utils/account'; import { getTransaction } from '../utils/transaction'; import { genesisInfoSchema, stateDiffSchema, validatorsSchema } from '../../src/schema'; +import { formatInt } from '../../src/data_access/storage'; import { createStateStore } from '../utils/state_store'; import { CONSENSUS_STATE_GENESIS_INFO, CONSENSUS_STATE_VALIDATORS_KEY } from '../../src/constants'; @@ -65,8 +66,7 @@ describe('chain', () => { beforeEach(() => { // Arrange - db = new KVStore('temp'); - (formatInt as jest.Mock).mockImplementation(n => n); + db = new Database('temp'); (db.createReadStream as jest.Mock).mockReturnValue(Readable.from([])); chainInstance = new Chain({ @@ -106,11 +106,11 @@ describe('chain', () => { ); when(db.get) .mockRejectedValue(new NotFoundError('Data not found') as never) - .calledWith(`blocks:height:${formatInt(1)}`) + .calledWith(Buffer.from(`blocks:height:${formatInt(1)}`)) .mockResolvedValue(genesisBlock.header.id as never) - .calledWith(`blocks:id:${genesisBlock.header.id.toString('binary')}`) + .calledWith(Buffer.from(`blocks:id:${genesisBlock.header.id.toString('binary')}`)) .mockResolvedValue(encodeGenesisBlockHeader(genesisBlock.header) as never) - .calledWith(`blocks:id:${lastBlock.header.id.toString('binary')}`) + .calledWith(Buffer.from(`blocks:id:${lastBlock.header.id.toString('binary')}`)) .mockResolvedValue(encodeDefaultBlockHeader(lastBlock.header) as never); jest.spyOn(chainInstance.dataAccess, 'getBlockHeadersByHeightBetween').mockResolvedValue([]); }); @@ -179,19 +179,14 @@ describe('chain', () => { describe('saveBlock', () => { let stateStoreStub: StateStore; - let batchMock: any; let savingBlock: Block; const fakeAccounts = [createFakeDefaultAccount(), createFakeDefaultAccount()]; beforeEach(() => { savingBlock = createValidDefaultBlock({ header: { height: 300 } }); - batchMock = { - put: jest.fn(), - del: jest.fn(), - write: jest.fn(), - }; - (db.batch as jest.Mock).mockReturnValue(batchMock); + jest.spyOn(Batch.prototype, 'set'); + jest.spyOn(Batch.prototype, 'del'); stateStoreStub = { finalize: jest.fn(), account: { @@ -205,8 +200,8 @@ describe('chain', () => { removeFromTempTable: true, }); expect(db.clear).toHaveBeenCalledWith({ - gte: `diff:${formatInt(0)}`, - lt: `diff:${formatInt(100)}`, + gte: Buffer.from(`diff:${formatInt(0)}`), + lte: Buffer.from(`diff:${formatInt(99)}`), }); }); @@ -214,20 +209,20 @@ describe('chain', () => { await chainInstance.saveBlock(savingBlock, stateStoreStub, 0, { removeFromTempTable: true, }); - expect(batchMock.del).toHaveBeenCalledWith( - `tempBlocks:height:${formatInt(savingBlock.header.height)}`, + expect(Batch.prototype.del).toHaveBeenCalledWith( + Buffer.from(`tempBlocks:height:${formatInt(savingBlock.header.height)}`), ); expect(stateStoreStub.finalize).toHaveBeenCalledTimes(1); }); it('should save block', async () => { await chainInstance.saveBlock(savingBlock, stateStoreStub, 0); - expect(batchMock.put).toHaveBeenCalledWith( - `blocks:id:${savingBlock.header.id.toString('binary')}`, + expect(Batch.prototype.set).toHaveBeenCalledWith( + Buffer.from(`blocks:id:${savingBlock.header.id.toString('binary')}`), expect.anything(), ); - expect(batchMock.put).toHaveBeenCalledWith( - `blocks:height:${formatInt(savingBlock.header.height)}`, + expect(Batch.prototype.set).toHaveBeenCalledWith( + Buffer.from(`blocks:height:${formatInt(savingBlock.header.height)}`), expect.anything(), ); expect(stateStoreStub.finalize).toHaveBeenCalledTimes(1); @@ -253,15 +248,9 @@ describe('chain', () => { const fakeAccounts = [createFakeDefaultAccount(), createFakeDefaultAccount()]; let stateStoreStub: StateStore; - let batchMock: any; beforeEach(() => { - batchMock = { - put: jest.fn(), - del: jest.fn(), - write: jest.fn(), - }; - (db.batch as jest.Mock).mockReturnValue(batchMock); + jest.spyOn(Batch.prototype, 'set'); stateStoreStub = { finalize: jest.fn(), account: { @@ -293,11 +282,12 @@ describe('chain', () => { const block = createValidDefaultBlock(); when(db.get) - .calledWith(`diff:${formatInt(block.header.height)}`) + .calledWith(Buffer.from(`diff:${formatInt(block.header.height)}`)) .mockResolvedValue(emptyEncodedDiff as never); const deleteBlockError = new Error('Delete block failed'); - batchMock.write.mockRejectedValue(deleteBlockError); + + db.write.mockRejectedValue(deleteBlockError); // Act & Assert await expect(chainInstance.removeBlock(block, stateStoreStub)).rejects.toEqual( @@ -310,13 +300,13 @@ describe('chain', () => { jest.spyOn(chainInstance.dataAccess, 'getBlockByID').mockResolvedValue(genesisBlock as never); const block = createValidDefaultBlock(); when(db.get) - .calledWith(`diff:${formatInt(block.header.height)}`) + .calledWith(Buffer.from(`diff:${formatInt(block.header.height)}`)) .mockResolvedValue(emptyEncodedDiff as never); // Act await chainInstance.removeBlock(block, stateStoreStub); // Assert - expect(batchMock.put).not.toHaveBeenCalledWith( - `tempBlocks:height:${formatInt(block.header.height)}`, + expect(Batch.prototype.set).not.toHaveBeenCalledWith( + Buffer.from(`tempBlocks:height:${formatInt(block.header.height)}`), block, ); }); @@ -327,15 +317,15 @@ describe('chain', () => { const tx = getTransaction(); const block = createValidDefaultBlock({ payload: [tx] }); when(db.get) - .calledWith(`diff:${formatInt(block.header.height)}`) + .calledWith(Buffer.from(`diff:${formatInt(block.header.height)}`)) .mockResolvedValue(emptyEncodedDiff as never); // Act await chainInstance.removeBlock(block, stateStoreStub, { saveTempBlock: true, }); // Assert - expect(batchMock.put).toHaveBeenCalledWith( - `tempBlocks:height:${formatInt(block.header.height)}`, + expect(Batch.prototype.set).toHaveBeenCalledWith( + Buffer.from(`tempBlocks:height:${formatInt(block.header.height)}`), encodedDefaultBlock(block), ); }); @@ -374,7 +364,7 @@ describe('chain', () => { validators, }); when(db.get) - .calledWith(`consensus:${CONSENSUS_STATE_VALIDATORS_KEY}`) + .calledWith(Buffer.from(`consensus:${CONSENSUS_STATE_VALIDATORS_KEY}`)) .mockResolvedValue(validatorBuffer as never); }); @@ -402,7 +392,7 @@ describe('chain', () => { validators, }); when(db.get) - .calledWith(`consensus:${CONSENSUS_STATE_VALIDATORS_KEY}`) + .calledWith(Buffer.from(`consensus:${CONSENSUS_STATE_VALIDATORS_KEY}`)) .mockResolvedValue(validatorBuffer as never); }); @@ -440,9 +430,9 @@ describe('chain', () => { }); when(db.get) - .calledWith(`consensus:${CONSENSUS_STATE_VALIDATORS_KEY}`) + .calledWith(Buffer.from(`consensus:${CONSENSUS_STATE_VALIDATORS_KEY}`)) .mockResolvedValue(validatorBuffer as never) - .calledWith(`consensus:${CONSENSUS_STATE_GENESIS_INFO}`) + .calledWith(Buffer.from(`consensus:${CONSENSUS_STATE_GENESIS_INFO}`)) .mockResolvedValue(genesisInfoBufer as never); }); diff --git a/elements/lisk-chain/test/unit/data_access/data_access.spec.ts b/elements/lisk-chain/test/unit/data_access/data_access.spec.ts index 8a5457e5f5c..cfd4afd7978 100644 --- a/elements/lisk-chain/test/unit/data_access/data_access.spec.ts +++ b/elements/lisk-chain/test/unit/data_access/data_access.spec.ts @@ -13,7 +13,7 @@ */ import { Readable } from 'stream'; import { when } from 'jest-when'; -import { KVStore, formatInt, NotFoundError, getFirstPrefix, getLastPrefix } from '@liskhq/lisk-db'; +import { Database, NotFoundError } from '@liskhq/lisk-db'; import { DataAccess } from '../../../src/data_access'; import { createFakeBlockHeader, @@ -29,6 +29,7 @@ import { defaultAccountSchema, } from '../../utils/account'; import { getGenesisBlockHeaderAssetSchema, blockHeaderAssetSchema } from '../../../src/schema'; +import { formatInt } from '../../../src/data_access/storage'; jest.mock('@liskhq/lisk-db'); @@ -38,11 +39,9 @@ describe('data_access', () => { let block: Block; beforeEach(() => { - db = new KVStore('temp'); + db = new Database('temp'); (db.createReadStream as jest.Mock).mockReturnValue(Readable.from([])); - (formatInt as jest.Mock).mockImplementation(num => num); - (getFirstPrefix as jest.Mock).mockImplementation(str => str); - (getLastPrefix as jest.Mock).mockImplementation(str => str); + dataAccess = new DataAccess({ db, accountSchema: defaultAccountSchema, @@ -121,17 +120,21 @@ describe('data_access', () => { ]), ); when(db.get) - .calledWith(`blocks:height:${formatInt(block.header.height)}`) + .calledWith(Buffer.from(`blocks:height:${formatInt(block.header.height)}`)) .mockResolvedValue(block.header.id as never) - .calledWith(`blocks:id:${block.header.id.toString('binary')}`) + .calledWith(Buffer.from(`blocks:id:${block.header.id.toString('binary')}`)) .mockResolvedValue(encodeDefaultBlockHeader(block.header) as never); // Act await dataAccess.getBlockHeaderByHeight(1); // Assert expect(db.get).toHaveBeenCalledTimes(2); - expect(db.get).toHaveBeenCalledWith(`blocks:height:${formatInt(block.header.height)}`); - expect(db.get).toHaveBeenCalledWith(`blocks:id:${block.header.id.toString('binary')}`); + expect(db.get).toHaveBeenCalledWith( + Buffer.from(`blocks:height:${formatInt(block.header.height)}`), + ); + expect(db.get).toHaveBeenCalledWith( + Buffer.from(`blocks:id:${block.header.id.toString('binary')}`), + ); }); }); @@ -184,17 +187,21 @@ describe('data_access', () => { it('should return persisted blocks if cache does not exist', async () => { // Arrange when(db.get) - .calledWith(`blocks:height:${formatInt(block.header.height)}`) + .calledWith(Buffer.from(`blocks:height:${formatInt(block.header.height)}`)) .mockResolvedValue(block.header.id as never) - .calledWith(`blocks:id:${block.header.id.toString('binary')}`) + .calledWith(Buffer.from(`blocks:id:${block.header.id.toString('binary')}`)) .mockResolvedValue(encodeDefaultBlockHeader(block.header) as never); // Act await dataAccess.getBlockHeadersWithHeights([1]); // Assert expect(db.get).toHaveBeenCalledTimes(2); - expect(db.get).toHaveBeenCalledWith(`blocks:height:${formatInt(block.header.height)}`); - expect(db.get).toHaveBeenCalledWith(`blocks:id:${block.header.id.toString('binary')}`); + expect(db.get).toHaveBeenCalledWith( + Buffer.from(`blocks:height:${formatInt(block.header.height)}`), + ); + expect(db.get).toHaveBeenCalledWith( + Buffer.from(`blocks:id:${block.header.id.toString('binary')}`), + ); }); }); @@ -226,7 +233,9 @@ describe('data_access', () => { // Assert expect(db.get).toHaveBeenCalledTimes(1); expect(db.createReadStream).toHaveBeenCalledTimes(1); - expect(db.get).toHaveBeenCalledWith(`blocks:id:${block.header.id.toString('binary')}`); + expect(db.get).toHaveBeenCalledWith( + Buffer.from(`blocks:id:${block.header.id.toString('binary')}`), + ); }); }); @@ -317,13 +326,13 @@ describe('data_access', () => { // Arrange when(db.get) .mockRejectedValue(new NotFoundError('Data not found') as never) - .calledWith('blocks:id:1') + .calledWith(Buffer.from('blocks:id:1')) .mockResolvedValue(encodeDefaultBlockHeader(block.header) as never); // Act await dataAccess.getBlocksByIDs([Buffer.from('1')]); // Assert - expect(db.get).toHaveBeenCalledWith('blocks:id:1'); + expect(db.get).toHaveBeenCalledWith(Buffer.from('blocks:id:1')); }); }); @@ -339,7 +348,7 @@ describe('data_access', () => { ); when(db.get) .mockRejectedValue(new NotFoundError('Data not found') as never) - .calledWith(`blocks:id:${block.header.id.toString('binary')}`) + .calledWith(Buffer.from(`blocks:id:${block.header.id.toString('binary')}`)) .mockResolvedValue(encodeDefaultBlockHeader(block.header) as never); // Act await dataAccess.getBlocksByHeightBetween(1, 2); @@ -362,7 +371,7 @@ describe('data_access', () => { ); when(db.get) .mockRejectedValue(new NotFoundError('Data not found') as never) - .calledWith(`blocks:id:${block.header.id.toString('binary')}`) + .calledWith(Buffer.from(`blocks:id:${block.header.id.toString('binary')}`)) .mockResolvedValue(encodeDefaultBlockHeader(block.header) as never); // Act await dataAccess.getLastBlock(); @@ -379,7 +388,9 @@ describe('data_access', () => { await dataAccess.isBlockPersisted(block.header.id); // Assert - expect(db.exists).toHaveBeenCalledWith(`blocks:id:${block.header.id.toString('binary')}`); + expect(db.has).toHaveBeenCalledWith( + Buffer.from(`blocks:id:${block.header.id.toString('binary')}`), + ); }); }); @@ -439,8 +450,8 @@ describe('data_access', () => { // Assert expect(db.clear).toHaveBeenCalledTimes(1); expect(db.clear).toHaveBeenCalledWith({ - gte: expect.stringContaining('tempBlocks:height'), - lte: expect.stringContaining('tempBlocks:height'), + gte: Buffer.from('tempBlocks:height\x00'), + lte: Buffer.from('tempBlocks:height\xff'), }); }); }); @@ -458,7 +469,7 @@ describe('data_access', () => { }, }); when(db.get) - .calledWith(`accounts:address:${account.address.toString('binary')}`) + .calledWith(Buffer.from(`accounts:address:${account.address.toString('binary')}`)) .mockResolvedValue(encodeDefaultAccount(account) as never); // Act const result = await dataAccess.getAccountByAddress<{ token: { balance: bigint } }>( @@ -466,7 +477,9 @@ describe('data_access', () => { ); // Assert - expect(db.get).toHaveBeenCalledWith(`accounts:address:${account.address.toString('binary')}`); + expect(db.get).toHaveBeenCalledWith( + Buffer.from(`accounts:address:${account.address.toString('binary')}`), + ); expect(typeof result.token.balance).toEqual('bigint'); }); }); @@ -495,9 +508,9 @@ describe('data_access', () => { }), ]; when(db.get) - .calledWith(`accounts:address:${accounts[0].address.toString('binary')}`) + .calledWith(Buffer.from(`accounts:address:${accounts[0].address.toString('binary')}`)) .mockResolvedValue(encodeDefaultAccount(accounts[0]) as never) - .calledWith(`accounts:address:${accounts[1].address.toString('binary')}`) + .calledWith(Buffer.from(`accounts:address:${accounts[1].address.toString('binary')}`)) .mockResolvedValue(encodeDefaultAccount(accounts[1]) as never); // Act const result = await dataAccess.getAccountsByAddress<{ token: { balance: bigint } }>( @@ -531,13 +544,15 @@ describe('data_access', () => { }); // Arrange when(db.get) - .calledWith(`transactions:id:${tx.id.toString('binary')}`) + .calledWith(Buffer.from(`transactions:id:${tx.id.toString('binary')}`)) .mockResolvedValue(tx.getBytes() as never); // Act const [result] = await dataAccess.getTransactionsByIDs([tx.id]); // Assert - expect(db.get).toHaveBeenCalledWith(`transactions:id:${tx.id.toString('binary')}`); + expect(db.get).toHaveBeenCalledWith( + Buffer.from(`transactions:id:${tx.id.toString('binary')}`), + ); expect(typeof result.fee).toBe('bigint'); }); }); @@ -548,7 +563,7 @@ describe('data_access', () => { await dataAccess.isTransactionPersisted(Buffer.from('1')); // Assert - expect(db.exists).toHaveBeenCalledWith('transactions:id:1'); + expect(db.has).toHaveBeenCalledWith(Buffer.from('transactions:id:1')); }); }); diff --git a/elements/lisk-chain/test/unit/process.spec.ts b/elements/lisk-chain/test/unit/process.spec.ts index e701905ff0a..f37afdd0072 100644 --- a/elements/lisk-chain/test/unit/process.spec.ts +++ b/elements/lisk-chain/test/unit/process.spec.ts @@ -13,7 +13,7 @@ * Removal or modification of this copyright notice is prohibited. */ -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { getRandomBytes, getAddressFromPublicKey, hash } from '@liskhq/lisk-cryptography'; import { when } from 'jest-when'; import { codec } from '@liskhq/lisk-codec'; @@ -70,7 +70,7 @@ describe('chain/process block', () => { let block: Block; beforeEach(() => { - db = new KVStore('temp'); + db = new Database('temp'); chainInstance = new Chain({ db, genesisBlock, @@ -408,7 +408,7 @@ describe('chain/process block', () => { validators: [{ address: getRandomBytes(20) }], }); when(db.get) - .calledWith('consensus:validators') + .calledWith(Buffer.from('consensus:validators')) .mockResolvedValue(validatorBuffer as never); // Act & assert @@ -429,7 +429,7 @@ describe('chain/process block', () => { ], }); when(db.get) - .calledWith('consensus:validators') + .calledWith(Buffer.from('consensus:validators')) .mockResolvedValue(validatorBuffer as never); // Act & assert @@ -504,7 +504,7 @@ describe('chain/process block', () => { validators: [{ address: getAddressFromPublicKey(block.header.generatorPublicKey) }], }); when(db.get) - .calledWith('consensus:validators') + .calledWith(Buffer.from('consensus:validators')) .mockResolvedValue(validatorBuffer as never); // Act & assert diff --git a/elements/lisk-chain/test/unit/state_store/account.spec.ts b/elements/lisk-chain/test/unit/state_store/account.spec.ts index 20da6240682..94f8550dc4d 100644 --- a/elements/lisk-chain/test/unit/state_store/account.spec.ts +++ b/elements/lisk-chain/test/unit/state_store/account.spec.ts @@ -11,7 +11,7 @@ * * Removal or modification of this copyright notice is prohibited. */ -import { KVStore, BatchChain, NotFoundError } from '@liskhq/lisk-db'; +import { Database, Batch, NotFoundError } from '@liskhq/lisk-db'; import { when } from 'jest-when'; import { objects } from '@liskhq/lisk-utils'; import { StateStore } from '../../../src/state_store'; @@ -54,7 +54,7 @@ describe('state store / account', () => { let db: any; beforeEach(async () => { - db = new KVStore('temp'); + db = new Database('temp'); const dataAccess = new DataAccess({ db, accountSchema: defaultAccountSchema, @@ -70,11 +70,11 @@ describe('state store / account', () => { }); // Setting this as default behavior throws UnhandledPromiseRejection, so it is specifying the non-existing account const dbGetMock = when(db.get) - .calledWith(`accounts:address:${Buffer.from('123L', 'utf8').toString('binary')}`) + .calledWith(Buffer.from(`accounts:address:${Buffer.from('123L', 'utf8').toString('binary')}`)) .mockRejectedValue(new NotFoundError('Data not found') as never); for (const data of accountInDB) { dbGetMock - .calledWith(`accounts:address:${data.key.toString('binary')}`) + .calledWith(Buffer.from(`accounts:address:${data.key.toString('binary')}`)) .mockResolvedValue(data.value as never); } for (const account of stateStoreAccounts) { @@ -100,7 +100,7 @@ describe('state store / account', () => { await stateStore.account.get(accountInDB[2].key); // Assert expect(db.get).toHaveBeenCalledWith( - `accounts:address:${accountInDB[2].key.toString('binary')}`, + Buffer.from(`accounts:address:${accountInDB[2].key.toString('binary')}`), ); }); @@ -129,7 +129,7 @@ describe('state store / account', () => { await stateStore.account.get(accountInDB[2].key); // Assert expect(db.get).toHaveBeenCalledWith( - `accounts:address:${accountInDB[2].key.toString('binary')}`, + Buffer.from(`accounts:address:${accountInDB[2].key.toString('binary')}`), ); }); @@ -181,7 +181,7 @@ describe('state store / account', () => { // Arrange const inmemoryAccount = createFakeDefaultAccount({ token: { balance: BigInt(200000000) } }); when(db.get) - .calledWith(`accounts:address:${inmemoryAccount.address.toString('binary')}`) + .calledWith(Buffer.from(`accounts:address:${inmemoryAccount.address.toString('binary')}`)) .mockRejectedValue(new NotFoundError('Data not found') as never); await stateStore.account.set(inmemoryAccount.address, inmemoryAccount); // Act @@ -216,10 +216,10 @@ describe('state store / account', () => { describe('finalize', () => { let existingAccount; let updatedAccount: Account; - let batchStub: BatchChain; + let batchStub: Batch; beforeEach(async () => { - batchStub = { put: jest.fn() } as any; + batchStub = { set: jest.fn() } as any; existingAccount = await stateStore.account.get(accountInDB[0].key); updatedAccount = objects.cloneDeep(existingAccount); @@ -231,19 +231,19 @@ describe('state store / account', () => { it('should save the account state in the database', () => { stateStore.account.finalize(batchStub); - expect(batchStub.put).toHaveBeenCalledWith( - `accounts:address:${updatedAccount.address.toString('binary')}`, + expect(batchStub.set).toHaveBeenCalledWith( + Buffer.from(`accounts:address:${updatedAccount.address.toString('binary')}`), expect.any(Buffer), ); }); }); describe('diff', () => { - let batchStub: BatchChain; + let batchStub: Batch; let stateDiff: StateDiff; beforeEach(() => { - batchStub = { put: jest.fn(), del: jest.fn() } as any; + batchStub = { set: jest.fn(), del: jest.fn() } as any; }); it('should have updated with initial values', async () => { diff --git a/elements/lisk-chain/test/unit/state_store/chain_state.spec.ts b/elements/lisk-chain/test/unit/state_store/chain_state.spec.ts index 1336a89d413..e861b2658a9 100644 --- a/elements/lisk-chain/test/unit/state_store/chain_state.spec.ts +++ b/elements/lisk-chain/test/unit/state_store/chain_state.spec.ts @@ -11,7 +11,7 @@ * * Removal or modification of this copyright notice is prohibited. */ -import { KVStore, BatchChain } from '@liskhq/lisk-db'; +import { Database, Batch } from '@liskhq/lisk-db'; import { when } from 'jest-when'; import { StateStore } from '../../../src/state_store'; import { DataAccess } from '../../../src/data_access'; @@ -31,7 +31,7 @@ describe('state store / chain_state', () => { ] as unknown) as ReadonlyArray; beforeEach(() => { - db = new KVStore('temp'); + db = new Database('temp'); const dataAccess = new DataAccess({ db, accountSchema: defaultAccountSchema, @@ -70,7 +70,7 @@ describe('state store / chain_state', () => { // Arrange await stateStore.chain.set('key1', Buffer.from('value1')); when(db.get) - .calledWith('chain:key1') + .calledWith(Buffer.from('chain:key1')) .mockResolvedValue('value5' as never); // Act & Assert expect(await stateStore.chain.get('key1')).toEqual(Buffer.from('value1')); @@ -79,7 +79,7 @@ describe('state store / chain_state', () => { it('should try to get value from database if not in cache', async () => { // Arrange when(db.get) - .calledWith('chain:key1') + .calledWith(Buffer.from('chain:key1')) .mockResolvedValue('value5' as never); // Act & Assert expect(await stateStore.chain.get('key1')).toEqual('value5'); @@ -106,18 +106,18 @@ describe('state store / chain_state', () => { }); describe('finalize', () => { - let batchStub: BatchChain; + let batchStub: Batch; let stateDiff: StateDiff; beforeEach(() => { - batchStub = { put: jest.fn() } as any; + batchStub = { set: jest.fn() } as any; }); it('should not call storage if nothing is set', () => { // Act stateStore.chain.finalize(batchStub); // Assert - expect(batchStub.put).not.toHaveBeenCalled(); + expect(batchStub.set).not.toHaveBeenCalled(); }); it('should call storage for all the updated keys', async () => { @@ -127,8 +127,8 @@ describe('state store / chain_state', () => { await stateStore.chain.set('key4', Buffer.from('value5')); stateDiff = stateStore.chain.finalize(batchStub); // Assert - expect(batchStub.put).toHaveBeenCalledWith('chain:key3', Buffer.from('value4')); - expect(batchStub.put).toHaveBeenCalledWith('chain:key4', Buffer.from('value5')); + expect(batchStub.set).toHaveBeenCalledWith(Buffer.from('chain:key3'), Buffer.from('value4')); + expect(batchStub.set).toHaveBeenCalledWith(Buffer.from('chain:key4'), Buffer.from('value5')); }); it('should return state diff with created and updated values after finalize', async () => { diff --git a/elements/lisk-chain/test/unit/state_store/consensus_state.spec.ts b/elements/lisk-chain/test/unit/state_store/consensus_state.spec.ts index 8250eb8033e..aaae4cc3bc9 100644 --- a/elements/lisk-chain/test/unit/state_store/consensus_state.spec.ts +++ b/elements/lisk-chain/test/unit/state_store/consensus_state.spec.ts @@ -11,7 +11,7 @@ * * Removal or modification of this copyright notice is prohibited. */ -import { KVStore, BatchChain } from '@liskhq/lisk-db'; +import { Database, Batch } from '@liskhq/lisk-db'; import { when } from 'jest-when'; import { StateStore } from '../../../src/state_store'; import { BlockHeader, StateDiff } from '../../../src/types'; @@ -31,7 +31,7 @@ describe('state store / chain_state', () => { ] as unknown) as ReadonlyArray; beforeEach(() => { - db = new KVStore('temp'); + db = new Database('temp'); const dataAccess = new DataAccess({ db, accountSchema: defaultAccountSchema, @@ -52,7 +52,7 @@ describe('state store / chain_state', () => { // Arrange await stateStore.consensus.set('key1', Buffer.from('value1')); when(db.get) - .calledWith('consensus:key1') + .calledWith(Buffer.from('consensus:key1')) .mockResolvedValue(Buffer.from('value5') as never); // Act & Assert expect(await stateStore.consensus.get('key1')).toEqual(Buffer.from('value1')); @@ -61,7 +61,7 @@ describe('state store / chain_state', () => { it('should try to get value from database if not in cache', async () => { // Arrange when(db.get) - .calledWith('consensus:key1') + .calledWith(Buffer.from('consensus:key1')) .mockResolvedValue(Buffer.from('value5') as never); // Act & Assert expect(await stateStore.consensus.get('key1')).toEqual(Buffer.from('value5')); @@ -88,18 +88,18 @@ describe('state store / chain_state', () => { }); describe('finalize', () => { - let batchStub: BatchChain; + let batchStub: Batch; let stateDiff: StateDiff; beforeEach(() => { - batchStub = { put: jest.fn() } as any; + batchStub = { set: jest.fn() } as any; }); it('should not call storage if nothing is set', () => { // Act stateStore.consensus.finalize(batchStub); // Assert - expect(batchStub.put).not.toHaveBeenCalled(); + expect(batchStub.set).not.toHaveBeenCalled(); }); it('should call storage for all the updated keys', async () => { @@ -110,9 +110,18 @@ describe('state store / chain_state', () => { await stateStore.consensus.set('key4', Buffer.from('value5')); stateDiff = stateStore.consensus.finalize(batchStub); // Assert - expect(batchStub.put).toHaveBeenCalledWith('consensus:key3', Buffer.from('value4')); - expect(batchStub.put).toHaveBeenCalledWith('consensus:key4', Buffer.from('value5')); - expect(batchStub.put).toHaveBeenCalledWith('consensus:finalizedHeight', Buffer.from('3')); + expect(batchStub.set).toHaveBeenCalledWith( + Buffer.from('consensus:key3'), + Buffer.from('value4'), + ); + expect(batchStub.set).toHaveBeenCalledWith( + Buffer.from('consensus:key4'), + Buffer.from('value5'), + ); + expect(batchStub.set).toHaveBeenCalledWith( + Buffer.from('consensus:finalizedHeight'), + Buffer.from('3'), + ); }); it('should return state diff with created and updated values after finalize', async () => { diff --git a/elements/lisk-chain/test/utils/state_store.ts b/elements/lisk-chain/test/utils/state_store.ts index 8fa6a2b8894..8e284a8a5c8 100644 --- a/elements/lisk-chain/test/utils/state_store.ts +++ b/elements/lisk-chain/test/utils/state_store.ts @@ -12,14 +12,17 @@ * Removal or modification of this copyright notice is prohibited. */ -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { StateStore } from '../../src/state_store'; import { DataAccess } from '../../src/data_access'; import { defaultAccountSchema, defaultAccount } from './account'; import { registeredBlockHeaders, defaultNetworkIdentifier } from './block'; import { BlockHeader } from '../../src'; -export const createStateStore = (db: KVStore, lastBlockHeaders: BlockHeader[] = []): StateStore => { +export const createStateStore = ( + db: Database, + lastBlockHeaders: BlockHeader[] = [], +): StateStore => { const dataAccess = new DataAccess({ db, accountSchema: defaultAccountSchema, diff --git a/elements/lisk-client/package.json b/elements/lisk-client/package.json index 3483ef88168..3831b539188 100644 --- a/elements/lisk-client/package.json +++ b/elements/lisk-client/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-client", - "version": "5.2.2", + "version": "5.3.0-rc.0", "description": "A default set of Elements for use by clients of the Lisk network", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -55,20 +55,20 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-api-client": "^5.1.6", - "@liskhq/lisk-codec": "^0.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-passphrase": "^3.1.1", - "@liskhq/lisk-transactions": "^5.2.2", - "@liskhq/lisk-tree": "^0.2.2", - "@liskhq/lisk-utils": "^0.2.1", - "@liskhq/lisk-validator": "^0.6.2", + "@liskhq/lisk-api-client": "^5.2.0-rc.0", + "@liskhq/lisk-codec": "^0.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-passphrase": "^3.2.0-rc.0", + "@liskhq/lisk-transactions": "^5.3.0-rc.0", + "@liskhq/lisk-tree": "^0.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0", "buffer": "6.0.3" }, "devDependencies": { "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "browserify": "16.5.0", diff --git a/elements/lisk-codec/package.json b/elements/lisk-codec/package.json index 75786cbc55e..c1e5b9eb7c2 100644 --- a/elements/lisk-codec/package.json +++ b/elements/lisk-codec/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-codec", - "version": "0.2.2", + "version": "0.3.0-rc.0", "description": "Implementation of decoder and encoder using Lisk JSON schema according to the Lisk protocol", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -36,13 +36,13 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-utils": "^0.2.1", - "@liskhq/lisk-validator": "^0.6.2" + "@liskhq/lisk-utils": "^0.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0" }, "devDependencies": { "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "benchmark": "2.1.4", diff --git a/elements/lisk-cryptography/package.json b/elements/lisk-cryptography/package.json index 96e1c1a6fd1..3b9f0572302 100644 --- a/elements/lisk-cryptography/package.json +++ b/elements/lisk-cryptography/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-cryptography", - "version": "3.2.1", + "version": "3.3.0-rc.0", "description": "General cryptographic functions for use with Lisk-related software", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -48,7 +48,7 @@ "@types/ed2curve": "0.2.2", "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "benchmark": "2.1.4", diff --git a/elements/lisk-db/.eslintignore b/elements/lisk-db/.eslintignore deleted file mode 100644 index 726191f1ee8..00000000000 --- a/elements/lisk-db/.eslintignore +++ /dev/null @@ -1,4 +0,0 @@ -dist-node -jest.config.js -benchmark -.eslintrc.js diff --git a/elements/lisk-db/.eslintrc.js b/elements/lisk-db/.eslintrc.js deleted file mode 100644 index 8b7fd410b8d..00000000000 --- a/elements/lisk-db/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: '../../.eslintrc.js', - parserOptions: { - project: './tsconfig.json', - tsconfigRootDir: __dirname, - }, -}; diff --git a/elements/lisk-db/.npmignore b/elements/lisk-db/.npmignore deleted file mode 120000 index 8a0be70f3ed..00000000000 --- a/elements/lisk-db/.npmignore +++ /dev/null @@ -1 +0,0 @@ -../../templates/.npmignore.tmpl \ No newline at end of file diff --git a/elements/lisk-db/.npmrc b/elements/lisk-db/.npmrc deleted file mode 120000 index 5cc817c4313..00000000000 --- a/elements/lisk-db/.npmrc +++ /dev/null @@ -1 +0,0 @@ -../../templates/.npmrc.tmpl \ No newline at end of file diff --git a/elements/lisk-db/.prettierignore b/elements/lisk-db/.prettierignore deleted file mode 120000 index 044e4a3df69..00000000000 --- a/elements/lisk-db/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -../../templates/.prettierignore.tmpl \ No newline at end of file diff --git a/elements/lisk-db/.prettierrc.json b/elements/lisk-db/.prettierrc.json deleted file mode 120000 index 00ecd510aaf..00000000000 --- a/elements/lisk-db/.prettierrc.json +++ /dev/null @@ -1 +0,0 @@ -../../templates/.prettierrc.json.tmpl \ No newline at end of file diff --git a/elements/lisk-db/README.md b/elements/lisk-db/README.md deleted file mode 100644 index 23b92f07752..00000000000 --- a/elements/lisk-db/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# @liskhq/lisk-db - -@liskhq/lisk-db is a database access implementation for use with Lisk-related software. - -## Installation - -```sh -$ npm install --save @liskhq/lisk-db -``` - -## Benchmarking - -System configuration: - -```sh -Ubuntu: 18.04.3 (LTS) x64 -8 GB / 4 CPUs -160 GB SSD disk -``` - -Install dependencies: - -```sh -$ npm i -``` - -Benchmark embedded databases: - -Default payload size is 1024, pass payload size according to benchmarking - -```sh -$ node ./benchmark/index.js 15000 -``` - -Benchmark results leveldb vs rocksdb (15,000 bytes): - -| Operation | Leveldb | Rocksdb | Winner | % change | -| :-------: | :----------------------: | :-----------------------: | :-----: | :------: | -| get | x 61,274 ops/sec ±13.94% | x 47,785 ops/sec ±14.31% | Leveldb | 28 | -| put | x 22,668 ops/sec ±19.58% | x 32,666 ops/sec ±13.56% | Rocksdb | 44 | -| del | x 51,503 ops/sec ±18.72% | x 51,415 ops/sec ±21.31% | Leveldb | 0.17 | -| batch | x 2,427 ops/sec ±11.34% | x 105,386 ops/sec ±66.37% | Rocksdb | 4242 | - -Benchmark results leveldb vs rocksdb (50,000 bytes): - -| Operation | Leveldb | Rocksdb | Winner | % change | -| :-------: | :----------------------: | :-----------------------: | :-----: | :------: | -| get | x 50,070 ops/sec ±19.63% | x 46,941 ops/sec ±29.65% | Leveldb | 6.6 | -| put | x 14,355 ops/sec ±20.95% | x 4,483 ops/sec ±24.78% | Leveldb | 220 | -| del | x 50,609 ops/sec ±25.45% | x 39,479 ops/sec ±32.27% | Leveldb | 28 | -| batch | x 674 ops/sec ±14.39% | x 133,690 ops/sec ±12.28% | Rocksdb | 19735 | - -Benchmark results leveldb vs rocksdb (100,000 bytes): - -| Operation | Leveldb | Rocksdb | Winner | % change | -| :-------: | :----------------------: | :-----------------------: | :-----: | :------: | -| get | x 41,040 ops/sec ±20.37% | x 48,913 ops/sec ±14.79% | Rocksdb | 19.18 | -| put | x 5,446 ops/sec ±19.04% | x 11,592 ops/sec ±16.66% | Rocksdb | 112.8 | -| del | x 53,184 ops/sec ±31.21% | x 48,948 ops/sec ±10.19% | Rocksdb | 8.65 | -| batch | x 679 ops/sec ±5.71% | x 146,248 ops/sec ±20.69% | Rocksdb | 21438 | - -Benchmark results leveldb vs rocksdb (150,000 bytes): - -| Operation | Leveldb | Rocksdb | Winner | % change | -| :-------: | :----------------------: | :----------------------: | :-----: | :------: | -| get | x 44,966 ops/sec ±19.13% | x 39,282 ops/sec ±15.83% | Leveldb | 14.46 | -| put | x 5,508 ops/sec ±22.79% | x 8,674 ops/sec ±10.63% | Rocksdb | 57.48 | -| del | x 70,292 ops/sec ±13.37% | x 38,684 ops/sec ±19.42% | Leveldb | 81.70 | -| batch | x 389 ops/sec ±10.68% | x 81,421 ops/sec ±23.89% | Rocksdb | 20830 | - -## License - -Copyright 2016-2020 Lisk Foundation - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -[lisk core github]: https://github.com/LiskHQ/lisk -[lisk documentation site]: https://lisk.io/documentation/lisk-elements diff --git a/elements/lisk-db/benchmark/databases/index.js b/elements/lisk-db/benchmark/databases/index.js deleted file mode 100644 index 5b7a25a2935..00000000000 --- a/elements/lisk-db/benchmark/databases/index.js +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright © 2020 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - */ - -module.exports.LevelDB = require('./leveldb'); -module.exports.RocksDB = require('./rocksdb'); diff --git a/elements/lisk-db/benchmark/databases/leveldb.js b/elements/lisk-db/benchmark/databases/leveldb.js deleted file mode 100644 index f098544de4d..00000000000 --- a/elements/lisk-db/benchmark/databases/leveldb.js +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright © 2020 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - */ - -const path = require('path'); -const fs = require('fs'); -const levelup = require('levelup'); -const leveldown = require('leveldown'); - -const createDb = (name, location = (process.env.DB_PATH = '/tmp')) => { - const filePath = `${location}/leveldb/${name}`; - fs.mkdirSync(filePath, { recursive: true }); - const parentDir = path.resolve(path.join(filePath, '../')); - if (!fs.existsSync(parentDir)) { - throw new Error(`${parentDir} does not exist`); - } - const db = levelup(leveldown(location)); - return db; -}; - -const closeDb = (db, name, location = (process.env.DB_PATH = '/tmp')) => { - const filePath = `${location}/leveldb/${name}`; - db.close(); - fs.rmdirSync(filePath, { recursive: true }); -}; - -module.exports = { - createDb: createDb, - closeDb: closeDb, -}; diff --git a/elements/lisk-db/benchmark/databases/rocksdb.js b/elements/lisk-db/benchmark/databases/rocksdb.js deleted file mode 100644 index 5fe84fafcb9..00000000000 --- a/elements/lisk-db/benchmark/databases/rocksdb.js +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright © 2020 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - */ - -const fs = require('fs'); -const { KVStore } = require('../../dist-node/kv_store'); - -const createDb = (name, location = (process.env.DB_PATH = '/tmp')) => { - const filePath = `${location}/rocksdb/${name}`; - fs.mkdirSync(filePath, { recursive: true }); - const db = new KVStore(filePath); - return db; -}; - -const closeDb = (db, name, location = (process.env.DB_PATH = '/tmp')) => { - const filePath = `${location}/rocksdb/${name}`; - db.close(); - fs.rmdirSync(filePath, { recursive: true }); -}; - -module.exports = { - createDb: createDb, - closeDb: closeDb, -}; diff --git a/elements/lisk-db/benchmark/index.js b/elements/lisk-db/benchmark/index.js deleted file mode 100644 index 1fd881fde62..00000000000 --- a/elements/lisk-db/benchmark/index.js +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright © 2020 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - */ - -const { getFakeBlock } = require('./tests/fixtures'); -const { LevelDB, RocksDB } = require('./databases'); -const { getSuite } = require('./tests/get'); -const { putSuite } = require('./tests/put'); -const { delSuite } = require('./tests/del'); -const { batchSuite } = require('./tests/batch'); - -let ldb = LevelDB.createDb('leveldb_bench'); -let rdb = RocksDB.createDb('rocksdb_bench'); - -// 15,000 (15Kb) payload -const benchDB = async payload_size => { - await getSuite(ldb, rdb, getFakeBlock(payload_size)); - await putSuite(ldb, rdb, getFakeBlock(payload_size)); - await delSuite(ldb, rdb, getFakeBlock(payload_size)); - await batchSuite(ldb, rdb, payload_size); -}; - -const cliArgs = process.argv.slice(2); -let payload_size = 1024; - -switch (cliArgs[0]) { - case '15000': - payload_size = parseInt(cliArgs[0], 10); - break; - case '50000': - payload_size = parseInt(cliArgs[0], 10); - break; - case '100000': - payload_size = parseInt(cliArgs[0], 10); - break; - case '150000': - payload_size = parseInt(cliArgs[0], 10); - break; -} - -benchDB(payload_size) - .then(console.log(`Start benchmarking for payload ${payload_size}!!!`)) - .catch(err => { - console.log(err); - process.exit(1); - }); diff --git a/elements/lisk-db/benchmark/tests/batch.js b/elements/lisk-db/benchmark/tests/batch.js deleted file mode 100644 index fd255910481..00000000000 --- a/elements/lisk-db/benchmark/tests/batch.js +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright © 2020 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - */ - -const { Suite } = require('benchmark'); -const { getFakeBlock } = require('./fixtures'); - -const batchSuite = async (ldb, rdb, payload_size) => { - const suite = new Suite(); - const data = prepare(payload_size); - - suite - .add(`LevelDB: batch([key:string, val: Buffer]) x ${payload_size}(bytes)`, async () => { - await ldb.batch(data); - }) - .add(`RocksDB: batch([key:string, val: Buffer]) x ${payload_size}(bytes)`, async () => { - await rdb.batch(data); - }) - .on('cycle', event => { - console.log(String(event.target)); - }) - .on('complete', async function () { - console.log('Fastest is ' + this.filter('fastest').map('name')); - await ldb.clear(); - await rdb.clear(); - }) - .run({ async: true }); -}; - -const prepare = payload_size => { - const data = []; - - for (let i = 0; i < 10; i++) { - data.push({ - type: 'put', - ...getFakeBlock(payload_size), - }); - } - - return data; -}; - -module.exports.batchSuite = batchSuite; diff --git a/elements/lisk-db/benchmark/tests/del.js b/elements/lisk-db/benchmark/tests/del.js deleted file mode 100644 index 3192cb6c835..00000000000 --- a/elements/lisk-db/benchmark/tests/del.js +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright © 2020 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - */ - -const { Suite } = require('benchmark'); - -const delSuite = async (ldb, rdb, { key, value }) => { - const suite = new Suite(); - await ldb.put(key, value); - await rdb.put(key, value); - - suite - .add(`LevelDB: del(key: string) x ${value.length}(bytes)`, async () => { - await ldb.del(key); - }) - .add(`RocksDB: del(key: string) x ${value.length}(bytes)`, async () => { - await rdb.del(key); - }) - .on('cycle', event => { - console.log(String(event.target)); - }) - .on('complete', async function () { - console.log('Fastest is ' + this.filter('fastest').map('name')); - await ldb.clear(); - await rdb.clear(); - }) - .run({ async: true }); -}; - -module.exports.delSuite = delSuite; diff --git a/elements/lisk-db/benchmark/tests/fixtures.js b/elements/lisk-db/benchmark/tests/fixtures.js deleted file mode 100644 index f4010e62626..00000000000 --- a/elements/lisk-db/benchmark/tests/fixtures.js +++ /dev/null @@ -1,9 +0,0 @@ -const crypto = require('crypto'); -const randomize = require('randomatic'); - -const getFakeBlock = payload_size => ({ - key: `blocks:id:${randomize('0', 10)}`, - value: crypto.randomBytes(payload_size), -}); - -module.exports.getFakeBlock = getFakeBlock; diff --git a/elements/lisk-db/benchmark/tests/get.js b/elements/lisk-db/benchmark/tests/get.js deleted file mode 100644 index cbbced8be11..00000000000 --- a/elements/lisk-db/benchmark/tests/get.js +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright © 2020 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - */ - -const { Suite } = require('benchmark'); - -const getSuite = async (ldb, rdb, { key, value }) => { - const suite = new Suite(); - await ldb.put(key, value); - await rdb.put(key, value); - - suite - .add(`LevelDB: get(key: string):Buffer x ${value.length}(bytes)`, async () => { - await ldb.get(key); - }) - .add(`RocksDB: get(key: string):Buffer x ${value.length}(bytes)`, async () => { - await rdb.get(key); - }) - .on('cycle', event => { - console.log(String(event.target)); - }) - .on('complete', async function () { - console.log('Fastest is ' + this.filter('fastest').map('name')); - await ldb.clear(); - await rdb.clear(); - }) - .run({ async: true }); -}; - -module.exports.getSuite = getSuite; diff --git a/elements/lisk-db/benchmark/tests/put.js b/elements/lisk-db/benchmark/tests/put.js deleted file mode 100644 index 98de8879b8a..00000000000 --- a/elements/lisk-db/benchmark/tests/put.js +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright © 2020 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - */ - -const { Suite } = require('benchmark'); - -const putSuite = async (ldb, rdb, { key, value }) => { - const suite = new Suite(); - - suite - .add(`LevelDB: put(key: string):Buffer x ${value.length}(bytes)`, async () => { - await ldb.put(key, value); - }) - .add(`RocksDB: put(key: string):Buffer x ${value.length}(bytes)`, async () => { - await rdb.put(key, value); - }) - .on('cycle', event => { - console.log(String(event.target)); - }) - .on('complete', async function () { - console.log('Fastest is ' + this.filter('fastest').map('name')); - await ldb.clear(); - await rdb.clear(); - }) - .run({ async: true }); -}; - -module.exports.putSuite = putSuite; diff --git a/elements/lisk-db/jest.config.js b/elements/lisk-db/jest.config.js deleted file mode 120000 index 475ff02b18a..00000000000 --- a/elements/lisk-db/jest.config.js +++ /dev/null @@ -1 +0,0 @@ -../../templates/jest.config.js.tmpl \ No newline at end of file diff --git a/elements/lisk-db/package.json b/elements/lisk-db/package.json deleted file mode 100644 index 3a0db898ccd..00000000000 --- a/elements/lisk-db/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "@liskhq/lisk-db", - "version": "0.2.1", - "description": "A database access implementation for use with Lisk-related software", - "author": "Lisk Foundation , lightcurve GmbH ", - "license": "Apache-2.0", - "keywords": [ - "lisk", - "blockchain" - ], - "homepage": "https://github.com/LiskHQ/lisk-sdk/tree/master/elements/lisk-db#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/LiskHQ/lisk-sdk.git" - }, - "bugs": { - "url": "https://github.com/LiskHQ/lisk-sdk/issues" - }, - "engines": { - "node": ">=16.14.1 <=16", - "npm": ">=8.1.0" - }, - "main": "dist-node/index.js", - "scripts": { - "clean": "./scripts/clean.sh", - "format": "prettier --write '**/*'", - "lint": "eslint --ext .js,.ts .", - "lint:fix": "eslint --fix --ext .js,.ts .", - "test": "jest", - "test:coverage": "jest --coverage=true --coverage-reporters=text", - "test:ci": "jest --coverage=true --coverage-reporters=json --verbose", - "test:watch": "npm test -- --watch", - "prebuild": "rm -r dist-node/* || mkdir dist-node || true", - "build": "tsc", - "build:check": "node -e \"require('./dist-node')\"", - "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" - }, - "dependencies": { - "debug": "4.3.4", - "levelup": "4.4.0", - "rocksdb": "5.1.1" - }, - "devDependencies": { - "@types/debug": "4.1.7", - "@types/encoding-down": "5.0.0", - "@types/jest": "26.0.21", - "@types/jest-when": "2.7.2", - "@types/levelup": "4.3.0", - "@types/node": "16.11.26", - "@types/rocksdb": "3.0.1", - "@typescript-eslint/eslint-plugin": "4.19.0", - "@typescript-eslint/parser": "4.19.0", - "benchmark": "2.1.4", - "eslint": "7.22.0", - "eslint-config-lisk-base": "2.0.1", - "eslint-plugin-import": "2.22.1", - "eslint-plugin-jest": "24.3.2", - "jest": "26.6.3", - "jest-extended": "0.11.5", - "jest-when": "3.2.1", - "leveldown": "6.0.0", - "prettier": "2.2.1", - "randomatic": "3.1.1", - "source-map-support": "0.5.19", - "ts-jest": "26.5.4", - "ts-node": "9.1.1", - "tsconfig-paths": "3.9.0", - "typescript": "4.2.3" - } -} diff --git a/elements/lisk-db/scripts b/elements/lisk-db/scripts deleted file mode 120000 index f81ccd0a763..00000000000 --- a/elements/lisk-db/scripts +++ /dev/null @@ -1 +0,0 @@ -../../templates/scripts.tmpl \ No newline at end of file diff --git a/elements/lisk-db/src/errors.ts b/elements/lisk-db/src/errors.ts deleted file mode 100644 index c67c08f6683..00000000000 --- a/elements/lisk-db/src/errors.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright © 2020 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - */ -import { smartConvert } from './utils'; - -export class NotFoundError extends Error { - public constructor(key: string) { - super(`Specified key ${smartConvert(key, ':', 'hex')} does not exist`); - } -} diff --git a/elements/lisk-db/src/index.ts b/elements/lisk-db/src/index.ts deleted file mode 100644 index 859fbdbb2e7..00000000000 --- a/elements/lisk-db/src/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright © 2020 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - */ - -export * from './kv_store'; -export * from './errors'; -export * from './utils'; diff --git a/elements/lisk-db/src/kv_store.ts b/elements/lisk-db/src/kv_store.ts deleted file mode 100644 index b9e1d8aaadd..00000000000 --- a/elements/lisk-db/src/kv_store.ts +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright © 2020 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - */ -import * as fs from 'fs'; -import * as path from 'path'; -import { debug } from 'debug'; -import levelup, { LevelUp } from 'levelup'; -import { NotFoundError } from './errors'; - -// rocksdb removed the default export. However, @types/rocksdb still only exposes default. -// Therefore, temporarily require with below syntax. -// eslint-disable-next-line import/order -import rocksDB = require('rocksdb'); - -const logger = debug('db'); - -export interface Options { - readonly gt?: string; - readonly gte?: string; - readonly lt?: string; - readonly lte?: string; - readonly reverse?: boolean; - readonly limit?: number; -} - -export interface BatchChain { - put: (key: string, value: Buffer) => this; - del: (key: string) => this; - clear: () => this; - write: () => Promise; - readonly length: number; -} - -export interface ReadStreamOptions extends Options { - readonly keys?: boolean; - readonly values?: boolean; - keyAsBuffer?: boolean; -} - -export class KVStore { - private readonly _db: LevelUp; - - public constructor(filePath: string) { - logger('opening file', { filePath }); - const parentDir = path.resolve(path.join(filePath, '../')); - if (!fs.existsSync(parentDir)) { - throw new Error(`${parentDir} does not exist`); - } - // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-explicit-any - this._db = levelup((rocksDB as any)(filePath)); - } - - public async close(): Promise { - await this._db.close(); - } - - public async get(key: string): Promise { - logger('get', { key }); - try { - const result = (await this._db.get(key)) as Buffer; - return result; - } catch (error) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - if (error.notFound) { - throw new NotFoundError(key); - } - throw error; - } - } - - public async exists(key: string): Promise { - try { - logger('exists', { key }); - await this._db.get(key); - - return true; - } catch (error) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - if (error.notFound) { - return false; - } - throw error; - } - } - - public async clear(options?: Options): Promise { - await this._db.clear(options); - } - - public async put(key: string, val: Buffer): Promise { - logger('put', { key }); - - await this._db.put(key, val); - } - - public async del(key: string): Promise { - logger('del', { key }); - - await this._db.del(key); - } - - public createReadStream(options?: ReadStreamOptions): NodeJS.ReadableStream { - logger('readStream', { options }); - - // Treat key as string - const updatedOption = options ? { ...options, keyAsBuffer: false } : { keyAsBuffer: false }; - - return this._db.createReadStream(updatedOption); - } - - public batch(): BatchChain { - return this._db.batch(); - } -} diff --git a/elements/lisk-db/src/utils.ts b/elements/lisk-db/src/utils.ts deleted file mode 100644 index 47694841466..00000000000 --- a/elements/lisk-db/src/utils.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright © 2020 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - */ - -export const formatInt = (num: number | bigint): string => { - let buf: Buffer; - if (typeof num === 'bigint') { - if (num < BigInt(0)) { - throw new Error('Negative number cannot be formatted'); - } - buf = Buffer.alloc(8); - buf.writeBigUInt64BE(num); - } else { - if (num < 0) { - throw new Error('Negative number cannot be formatted'); - } - buf = Buffer.alloc(4); - buf.writeUInt32BE(num, 0); - } - return buf.toString('binary'); -}; - -export const getFirstPrefix = (prefix: string): string => `${prefix}\x00`; -export const getLastPrefix = (prefix: string): string => `${prefix}\xFF`; - -export const isASCIIChar = (val: string): boolean => /^[\x21-\x7F]*$/.test(val); - -export const smartConvert = (message: string, delimiter: string, format: string): string => - message - .split(delimiter) - .map(s => { - if (isASCIIChar(s)) { - return s; - } - return Buffer.from(s, 'binary').toString(format as BufferEncoding); - }) - .join(delimiter); diff --git a/elements/lisk-db/test/.eslintrc.js b/elements/lisk-db/test/.eslintrc.js deleted file mode 100644 index a98dfb6d823..00000000000 --- a/elements/lisk-db/test/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - extends: '../../../.eslintrc.test.js', - parserOptions: { - project: './tsconfig.json', - tsconfigRootDir: __dirname, - }, -}; diff --git a/elements/lisk-db/test/_setup.js b/elements/lisk-db/test/_setup.js deleted file mode 100644 index e2a8f3c32b8..00000000000 --- a/elements/lisk-db/test/_setup.js +++ /dev/null @@ -1,3 +0,0 @@ -require('jest-extended'); - -process.env.NODE_ENV = 'test'; diff --git a/elements/lisk-db/test/kv_store.spec.ts b/elements/lisk-db/test/kv_store.spec.ts deleted file mode 100644 index 8bd39a6b482..00000000000 --- a/elements/lisk-db/test/kv_store.spec.ts +++ /dev/null @@ -1,431 +0,0 @@ -/* - * Copyright © 2020 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - */ -import * as path from 'path'; -import * as fs from 'fs'; -import { KVStore } from '../src/kv_store'; -import { NotFoundError } from '../src/errors'; - -interface KeyValuePair { - key: string; - value: Buffer; -} - -describe('KVStore', () => { - let db: KVStore; - beforeAll(async () => { - const parentPath = path.join(__dirname, '../tmp'); - if (!fs.existsSync(parentPath)) { - await fs.promises.mkdir(parentPath); - } - db = new KVStore(path.join(parentPath, '/test.db')); - }); - - afterEach(async () => { - await db.clear(); - }); - - describe('constructor', () => { - it('should throw error if the parent folder does not exist', () => { - expect(() => new KVStore('./random-folder/sample.db')).toThrow( - 'random-folder does not exist', - ); - }); - }); - - describe('get', () => { - it('should reject with NotFoundError if the key does not exist', async () => { - await expect(db.get('Random value')).rejects.toThrow(NotFoundError); - }); - - it('should return JSON object if exists', async () => { - const defaultKey = 'random'; - const defaultValue = Buffer.from( - JSON.stringify({ - key: 'something', - balance: 1000000, - }), - 'binary', - ); - await db['_db'].put(defaultKey, defaultValue); - - const value = await db.get(defaultKey); - expect(value).toEqual(defaultValue); - }); - }); - - describe('exists', () => { - it('should return false if key does not exist', async () => { - await expect(db.exists('Random value')).resolves.toBeFalse(); - }); - - it('should return true if key exists', async () => { - const defaultKey = 'random'; - const defaultValue = Buffer.from( - JSON.stringify({ - key: 'something', - balance: 1000000, - }), - 'binary', - ); - await db['_db'].put(defaultKey, defaultValue); - - await expect(db.exists(defaultKey)).resolves.toBeTrue(); - }); - }); - - describe('put', () => { - it('should put the JSON object to the database', async () => { - const defaultKey = 'random'; - const defaultValue = Buffer.from( - JSON.stringify({ - key: 'something', - balance: 1000000, - }), - 'binary', - ); - await db.put(defaultKey, defaultValue); - - const value = await db['_db'].get(defaultKey); - expect(value).toEqual(defaultValue); - }); - }); - - describe('del', () => { - it('should delete the key if exists', async () => { - const defaultKey = 'random'; - const defaultValue = Buffer.from( - JSON.stringify({ - key: 'something', - balance: 1000000, - }), - 'binary', - ); - await db['_db'].put(defaultKey, defaultValue); - - await db.del(defaultKey); - await expect(db.get(defaultKey)).rejects.toThrow(NotFoundError); - }); - - it('should not throw error if key does not exist', async () => { - const defaultKey = 'random'; - await expect(db.del(defaultKey)).not.toReject(); - }); - }); - - describe('createReadStream', () => { - let expectedValues: KeyValuePair[]; - - beforeEach(async () => { - expectedValues = [ - { - key: '001', - value: Buffer.from(JSON.stringify([4, 5, 6]), 'binary'), - }, - { - key: '103', - value: Buffer.from(JSON.stringify(3), 'binary'), - }, - { - key: '010', - value: Buffer.from(JSON.stringify([19, 5, 6]), 'binary'), - }, - { - key: '321', - value: Buffer.from(JSON.stringify('string'), 'binary'), - }, - ]; - const batch = db.batch(); - for (const expected of expectedValues) { - batch.put(expected.key, expected.value); - } - await batch.write(); - }); - - it('should return all the entries in lexicographical order', async () => { - const stream = db.createReadStream(); - const result = await new Promise((resolve, reject) => { - const data: KeyValuePair[] = []; - stream - .on('data', ({ key, value }) => { - data.push({ key, value }); - }) - .on('error', error => { - reject(error); - }) - .on('end', () => { - resolve(data); - }); - }); - - expect(result).toHaveLength(expectedValues.length); - expect(result[0].key).toEqual(expectedValues[0].key); - expect(result[1].key).toEqual(expectedValues[2].key); - expect(result[2].key).toEqual(expectedValues[1].key); - }); - - it('should return all the entries in reverse lexicographical order when reverse is specified', async () => { - const stream = db.createReadStream({ reverse: true }); - const result = await new Promise((resolve, reject) => { - const data: KeyValuePair[] = []; - stream - .on('data', ({ key, value }) => { - data.push({ key, value }); - }) - .on('error', error => { - reject(error); - }) - .on('end', () => { - resolve(data); - }); - }); - - expect(result).toHaveLength(expectedValues.length); - expect(result[0].key).toEqual(expectedValues[3].key); - expect(result[1].key).toEqual(expectedValues[1].key); - expect(result[2].key).toEqual(expectedValues[2].key); - }); - - it('should return limited number of entries when limit is specified', async () => { - const stream = db.createReadStream({ limit: 2 }); - const result = await new Promise((resolve, reject) => { - const data: KeyValuePair[] = []; - stream - .on('data', ({ key, value }) => { - data.push({ key, value }); - }) - .on('error', error => { - reject(error); - }) - .on('end', () => { - resolve(data); - }); - }); - - expect(result).toHaveLength(2); - expect(result[0].key).toEqual(expectedValues[0].key); - expect(result[1].key).toEqual(expectedValues[2].key); - }); - - it('should return limited number of entries in reverse order when limit and reverse are specified', async () => { - const stream = db.createReadStream({ limit: 2, reverse: true }); - const result = await new Promise((resolve, reject) => { - const data: KeyValuePair[] = []; - stream - .on('data', ({ key, value }) => { - data.push({ key, value }); - }) - .on('error', error => { - reject(error); - }) - .on('end', () => { - resolve(data); - }); - }); - - expect(result).toHaveLength(2); - expect(result[0].key).toEqual(expectedValues[3].key); - expect(result[1].key).toEqual(expectedValues[1].key); - }); - - it('should return ranged value if gte and lte is specified', async () => { - const stream = db.createReadStream({ gte: '001', lte: '010' }); - const result = await new Promise((resolve, reject) => { - const data: KeyValuePair[] = []; - stream - .on('data', ({ key, value }) => { - data.push({ key, value }); - }) - .on('error', error => { - reject(error); - }) - .on('end', () => { - resolve(data); - }); - }); - - expect(result).toHaveLength(2); - expect(result[0].key).toEqual(expectedValues[0].key); - expect(result[1].key).toEqual(expectedValues[2].key); - }); - - it('should return ranged value if gte and lte is specified in reverse order', async () => { - const stream = db.createReadStream({ - gte: '001', - lte: '010', - reverse: true, - }); - const result = await new Promise((resolve, reject) => { - const data: KeyValuePair[] = []; - stream - .on('data', ({ key, value }) => { - data.push({ key, value }); - }) - .on('error', error => { - reject(error); - }) - .on('end', () => { - resolve(data); - }); - }); - - expect(result).toHaveLength(2); - expect(result[0].key).toEqual(expectedValues[2].key); - expect(result[1].key).toEqual(expectedValues[0].key); - }); - - it('should return ranged value if gt and lt is specified', async () => { - const stream = db.createReadStream({ gte: '000', lt: '010' }); - const result = await new Promise((resolve, reject) => { - const data: KeyValuePair[] = []; - stream - .on('data', ({ key, value }) => { - data.push({ key, value }); - }) - .on('error', error => { - reject(error); - }) - .on('end', () => { - resolve(data); - }); - }); - - expect(result).toHaveLength(1); - expect(result[0].key).toEqual(expectedValues[0].key); - }); - }); - - describe('batch', () => { - it('should put the batched operation', async () => { - const expectedValues = [ - { - key: '1', - value: Buffer.from(JSON.stringify([4, 5, 6]), 'binary'), - }, - { - key: '3', - value: Buffer.from(JSON.stringify([4, 5, 6]), 'binary'), - }, - { - key: '2', - value: Buffer.from(JSON.stringify([4, 5, 6]), 'binary'), - }, - ]; - const batch = db.batch(); - for (const expected of expectedValues) { - batch.put(expected.key, expected.value); - } - await batch.write(); - - expect.assertions(expectedValues.length); - for (const expected of expectedValues) { - const result = await db['_db'].get(expected.key); - expect(result).toEqual(expected.value); - } - }); - - it('should update and delete in the same batch', async () => { - const deletingKey = 'random'; - const deletingValue = Buffer.from( - JSON.stringify({ - key: 'something', - balance: 1000000, - }), - 'binary', - ); - await db['_db'].put(deletingKey, deletingValue); - const updatingKey = '1'; - const updatingValue = Buffer.from( - JSON.stringify({ - key: 'something', - balance: 1000000, - }), - 'binary', - ); - await db['_db'].put(updatingKey, updatingValue); - - const expectedValues = [ - { - key: '1', - value: Buffer.from(JSON.stringify([4, 5, 6]), 'binary'), - }, - { - key: '3', - value: Buffer.from(JSON.stringify([4, 5, 6]), 'binary'), - }, - { - key: '2', - value: Buffer.from(JSON.stringify([4, 5, 6]), 'binary'), - }, - ]; - const batch = db.batch(); - for (const expected of expectedValues) { - batch.put(expected.key, expected.value); - } - batch.del(deletingKey); - await batch.write(); - - expect.assertions(expectedValues.length + 1); - for (const expected of expectedValues) { - const result = await db['_db'].get(expected.key); - expect(result).toEqual(expected.value); - } - await expect(db.get(deletingKey)).rejects.toThrow(NotFoundError); - }); - }); - - describe('clear', () => { - it('should remove all data existed', async () => { - const defaultKey = 'random'; - const defaultValue = Buffer.from( - JSON.stringify({ - key: 'something', - balance: 1000000, - }), - 'binary', - ); - await db['_db'].put(defaultKey, defaultValue); - - await db.clear(); - - await expect(db.get(defaultKey)).rejects.toThrow(NotFoundError); - }); - - it('should only remove specified data', async () => { - const expectedValues = [ - { - key: '001', - value: Buffer.from(JSON.stringify([4, 5, 6]), 'binary'), - }, - { - key: '103', - value: Buffer.from(JSON.stringify(3), 'binary'), - }, - { - key: '010', - value: Buffer.from(JSON.stringify([19, 5, 6]), 'binary'), - }, - ]; - const batch = db.batch(); - for (const expected of expectedValues) { - batch.put(expected.key, expected.value); - } - await batch.write(); - await db.clear({ gt: '001', lt: '103', limit: 2 }); - - await expect(db.get(expectedValues[0].key)).toResolve(); - await expect(db.get(expectedValues[1].key)).toResolve(); - await expect(db.get(expectedValues[2].key)).rejects.toThrow(NotFoundError); - }); - }); -}); diff --git a/elements/lisk-db/test/tsconfig.json b/elements/lisk-db/test/tsconfig.json deleted file mode 120000 index c73c54e77b4..00000000000 --- a/elements/lisk-db/test/tsconfig.json +++ /dev/null @@ -1 +0,0 @@ -../../../templates/test/tsconfig.json.tmpl \ No newline at end of file diff --git a/elements/lisk-db/test/utils.spec.ts b/elements/lisk-db/test/utils.spec.ts deleted file mode 100644 index afc997f0a25..00000000000 --- a/elements/lisk-db/test/utils.spec.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright © 2020 Lisk Foundation - * - * See the LICENSE file at the top-level directory of this distribution - * for licensing information. - * - * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, - * no part of this software, including this file, may be copied, modified, - * propagated, or distributed except according to the terms contained in the - * LICENSE file. - * - * Removal or modification of this copyright notice is prohibited. - */ - -import { formatInt, getFirstPrefix, getLastPrefix } from '../src/utils'; - -describe('utils', () => { - describe('formatInt', () => { - describe('when bigint is provided', () => { - it('should return string which can be sorted lexicographically', () => { - const str1 = formatInt(BigInt(100)); - const str2 = formatInt(BigInt(10)); - const str3 = formatInt(BigInt(11)); - const stringArray = [str1, str2, str3]; - // eslint-disable-next-line @typescript-eslint/require-array-sort-compare - stringArray.sort(); - expect(Buffer.from(stringArray[0], 'binary').toString('hex')).toEqual('000000000000000a'); - expect(Buffer.from(stringArray[1], 'binary').toString('hex')).toEqual('000000000000000b'); - expect(Buffer.from(stringArray[2], 'binary').toString('hex')).toEqual('0000000000000064'); - }); - }); - - describe('when number is provided', () => { - it('should return string which can be sorted lexicographically', () => { - const str1 = formatInt(100); - const str2 = formatInt(10); - const str3 = formatInt(11); - const stringArray = [str1, str2, str3]; - // eslint-disable-next-line @typescript-eslint/require-array-sort-compare - stringArray.sort(); - expect(Buffer.from(stringArray[0], 'binary').toString('hex')).toEqual('0000000a'); - expect(Buffer.from(stringArray[1], 'binary').toString('hex')).toEqual('0000000b'); - expect(Buffer.from(stringArray[2], 'binary').toString('hex')).toEqual('00000064'); - }); - }); - }); - - describe('getFirstPrefix', () => { - it('should return string which is the next ascii string by binary', () => { - const prefix = 'block:id'; - const defaultKey = '0000000000000000000000000000000000000000000000000000000000000000'; - const startPrefix = getFirstPrefix(prefix); - // start prefix should come before the expected value - expect(`${prefix}:${defaultKey}`.localeCompare(startPrefix, 'en')).toEqual(1); - // start prefix should come after the expected value - expect(`block:ic:${defaultKey}`.localeCompare(startPrefix, 'en')).toEqual(-1); - }); - }); - - describe('getLastPrefix', () => { - it('should return next ascii string by binary', () => { - const prefix = 'block:id'; - const defaultKey = 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz'; - const endPrefix = getLastPrefix(prefix); - // end prefix should come after the expected value - expect(`${prefix}:${defaultKey}`.localeCompare(endPrefix, 'en')).toEqual(-1); - // end prefix should come before the expected value - expect(`block:iz:${defaultKey}`.localeCompare(endPrefix, 'en')).toEqual(1); - }); - }); -}); diff --git a/elements/lisk-db/tsconfig.json b/elements/lisk-db/tsconfig.json deleted file mode 120000 index 900bb05c680..00000000000 --- a/elements/lisk-db/tsconfig.json +++ /dev/null @@ -1 +0,0 @@ -../../templates/tsconfig.json.tmpl \ No newline at end of file diff --git a/elements/lisk-elements/package.json b/elements/lisk-elements/package.json index 456a0da71a8..0f4f314cb97 100644 --- a/elements/lisk-elements/package.json +++ b/elements/lisk-elements/package.json @@ -1,6 +1,6 @@ { "name": "lisk-elements", - "version": "5.2.2", + "version": "5.3.0-rc.0", "description": "Libraries to support building blockchain applications according to the Lisk protocol", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -36,25 +36,24 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-api-client": "^5.1.6", - "@liskhq/lisk-bft": "^0.3.4", - "@liskhq/lisk-chain": "^0.3.4", - "@liskhq/lisk-codec": "^0.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-db": "^0.2.1", - "@liskhq/lisk-genesis": "^0.2.4", - "@liskhq/lisk-p2p": "^0.7.3", - "@liskhq/lisk-passphrase": "^3.1.1", - "@liskhq/lisk-transaction-pool": "^0.5.3", - "@liskhq/lisk-transactions": "^5.2.2", - "@liskhq/lisk-tree": "^0.2.2", - "@liskhq/lisk-utils": "^0.2.1", - "@liskhq/lisk-validator": "^0.6.2" + "@liskhq/lisk-api-client": "^5.2.0-rc.0", + "@liskhq/lisk-bft": "^0.4.0-rc.0", + "@liskhq/lisk-chain": "^0.4.0-rc.0", + "@liskhq/lisk-codec": "^0.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-genesis": "^0.3.0-rc.0", + "@liskhq/lisk-p2p": "^0.8.0-rc.0", + "@liskhq/lisk-passphrase": "^3.2.0-rc.0", + "@liskhq/lisk-transaction-pool": "^0.6.0-rc.0", + "@liskhq/lisk-transactions": "^5.3.0-rc.0", + "@liskhq/lisk-tree": "^0.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0" }, "devDependencies": { "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "eslint": "7.22.0", diff --git a/elements/lisk-elements/src/index.ts b/elements/lisk-elements/src/index.ts index 422a171142b..6a9a9f60cdb 100644 --- a/elements/lisk-elements/src/index.ts +++ b/elements/lisk-elements/src/index.ts @@ -22,7 +22,6 @@ export * as utils from '@liskhq/lisk-utils'; export * as tree from '@liskhq/lisk-tree'; export * as validator from '@liskhq/lisk-validator'; export * as codec from '@liskhq/lisk-codec'; -export * as db from '@liskhq/lisk-db'; export * as chain from '@liskhq/lisk-chain'; export * as bft from '@liskhq/lisk-bft'; export * as genesis from '@liskhq/lisk-genesis'; diff --git a/elements/lisk-elements/test/__snapshots__/index.spec.ts.snap b/elements/lisk-elements/test/__snapshots__/index.spec.ts.snap index e89206489ca..dea8d90b499 100644 --- a/elements/lisk-elements/test/__snapshots__/index.spec.ts.snap +++ b/elements/lisk-elements/test/__snapshots__/index.spec.ts.snap @@ -12,7 +12,6 @@ Array [ "tree", "validator", "codec", - "db", "chain", "bft", "genesis", diff --git a/elements/lisk-genesis/package.json b/elements/lisk-genesis/package.json index 6ce6e5be5b3..6519e637ad5 100644 --- a/elements/lisk-genesis/package.json +++ b/elements/lisk-genesis/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-genesis", - "version": "0.2.4", + "version": "0.3.0-rc.0", "description": "Library containing genesis block creation functions according to the Lisk protocol", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -36,17 +36,17 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-chain": "^0.3.4", - "@liskhq/lisk-codec": "^0.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-utils": "^0.2.1", - "@liskhq/lisk-validator": "^0.6.2", + "@liskhq/lisk-chain": "^0.4.0-rc.0", + "@liskhq/lisk-codec": "^0.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0", "lodash.clonedeep": "4.5.0" }, "devDependencies": { "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "eslint": "7.22.0", diff --git a/elements/lisk-p2p/package.json b/elements/lisk-p2p/package.json index 75d39342a21..37a0bf2c69c 100644 --- a/elements/lisk-p2p/package.json +++ b/elements/lisk-p2p/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-p2p", - "version": "0.7.3", + "version": "0.8.0-rc.0", "description": "Unstructured P2P library for use with Lisk-related software", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -18,7 +18,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -42,9 +42,9 @@ "disableLocalIPs": "./scripts/disableTestLocalIPs.sh 2 19" }, "dependencies": { - "@liskhq/lisk-codec": "^0.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-validator": "^0.6.2", + "@liskhq/lisk-codec": "^0.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0", "lodash.shuffle": "4.2.0", "semver": "7.3.5", "socketcluster-client": "14.3.1", @@ -56,7 +56,7 @@ "@types/jest-when": "2.7.2", "@types/jsonwebtoken": "8.3.8", "@types/lodash.shuffle": "4.2.6", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@types/semver": "7.1.0", "@types/socketcluster-client": "13.0.0", "@types/socketcluster-server": "14.2.2", diff --git a/elements/lisk-p2p/src/utils/network.ts b/elements/lisk-p2p/src/utils/network.ts index bbd7644d270..a970ff0d8f5 100644 --- a/elements/lisk-p2p/src/utils/network.ts +++ b/elements/lisk-p2p/src/utils/network.ts @@ -142,14 +142,14 @@ export const expirePeerFromBucket = ( thresholdTime: number, ): P2PEnhancedPeerInfo | undefined => { for (const [peerId, peer] of bucket) { - const timeDifference = Math.round( - Math.abs((peer.dateAdded as Date).getTime() - new Date().getTime()), - ); + if (peer.dateAdded) { + const timeDifference = Math.round(Math.abs(new Date().getTime() - peer.dateAdded.getTime())); - if (timeDifference >= thresholdTime) { - bucket.delete(peerId); + if (timeDifference >= thresholdTime) { + bucket.delete(peerId); - return peer; + return peer; + } } } diff --git a/elements/lisk-p2p/test/unit/utils/network.spec.ts b/elements/lisk-p2p/test/unit/utils/network.spec.ts index a7da1147d66..b643439f8c7 100644 --- a/elements/lisk-p2p/test/unit/utils/network.spec.ts +++ b/elements/lisk-p2p/test/unit/utils/network.spec.ts @@ -22,8 +22,11 @@ import { NETWORK, getBucketId, PEER_TYPE, + expirePeerFromBucket, } from '../../../src/utils'; -import { DEFAULT_RANDOM_SECRET } from '../../../src/constants'; +import { DEFAULT_EVICTION_THRESHOLD_TIME, DEFAULT_RANDOM_SECRET } from '../../../src/constants'; +import { initPeerInfoList } from '../../utils/peers'; +import { P2PEnhancedPeerInfo } from '../../../src/types'; describe('utils/network', () => { const MAX_GROUP_NUM = 255; @@ -140,11 +143,51 @@ describe('utils/network', () => { }); describe('#expirePeerFromBucket', () => { - describe('when bucket contains old peers', () => { - it.todo('should return the evicted peer info'); + let peerBucket: Map; + const peers = initPeerInfoList(); + + beforeEach(() => { + peerBucket = new Map(); + + for (const p of peers) { + peerBucket.set(p?.peerId, { + ...p, + dateAdded: new Date(), + }); + } + }); + + it('should return the evicted peer info when bucket contains old peers', () => { + const peer1 = peerBucket.get(peers[0].peerId) as P2PEnhancedPeerInfo; + const timeNow = new Date(); + const oneDayOldTime = new Date(timeNow.getTime() - (DEFAULT_EVICTION_THRESHOLD_TIME + 1000)); + const oldPeer = { + ...peer1, + dateAdded: oneDayOldTime, + }; + peerBucket.set(peer1?.peerId, oldPeer); + expect(expirePeerFromBucket(peerBucket, DEFAULT_EVICTION_THRESHOLD_TIME)).toEqual(oldPeer); + }); + + it('should return undefined when bucket does not contains old peers', () => { + for (const p of peers) { + peerBucket.set(p?.peerId, { + ...p, + dateAdded: new Date(), + }); + } + expect(expirePeerFromBucket(peerBucket, DEFAULT_EVICTION_THRESHOLD_TIME)).toBeUndefined(); }); - describe('when bucket does not contains old peers', () => { - it.todo('should return undefined'); + + it("should return undefined when peers don't have dateAdded field", () => { + const peerBucketWithoutDateAdded = new Map(); + const peers2 = initPeerInfoList(); + for (const p of peers2) { + peerBucketWithoutDateAdded.set(p?.peerId, p); + } + expect( + expirePeerFromBucket(peerBucketWithoutDateAdded, DEFAULT_EVICTION_THRESHOLD_TIME), + ).toBeUndefined(); }); }); diff --git a/elements/lisk-passphrase/package.json b/elements/lisk-passphrase/package.json index 37ce36609c5..0fa41a7752d 100644 --- a/elements/lisk-passphrase/package.json +++ b/elements/lisk-passphrase/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-passphrase", - "version": "3.1.1", + "version": "3.2.0-rc.0", "description": "Mnemonic passphrase helpers for use with Lisk-related software", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -42,7 +42,7 @@ "@types/bip39": "3.0.0", "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "eslint": "7.22.0", diff --git a/elements/lisk-transaction-pool/package.json b/elements/lisk-transaction-pool/package.json index c73bfbef64f..2f267434245 100644 --- a/elements/lisk-transaction-pool/package.json +++ b/elements/lisk-transaction-pool/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-transaction-pool", - "version": "0.5.3", + "version": "0.6.0-rc.0", "description": "Transaction pool library for use with Lisk-related software", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -37,15 +37,15 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-utils": "^0.2.1", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", "debug": "4.3.4" }, "devDependencies": { "@types/debug": "4.1.7", "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "eslint": "7.22.0", diff --git a/elements/lisk-transactions/package.json b/elements/lisk-transactions/package.json index 736611d38ba..98f55660e09 100644 --- a/elements/lisk-transactions/package.json +++ b/elements/lisk-transactions/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-transactions", - "version": "5.2.2", + "version": "5.3.0-rc.0", "description": "Utility functions related to transactions according to the Lisk protocol", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -36,14 +36,14 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-codec": "^0.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-validator": "^0.6.2" + "@liskhq/lisk-codec": "^0.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0" }, "devDependencies": { "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "eslint": "7.22.0", diff --git a/elements/lisk-tree/package.json b/elements/lisk-tree/package.json index 53ab8c4c6bb..575885bb549 100644 --- a/elements/lisk-tree/package.json +++ b/elements/lisk-tree/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-tree", - "version": "0.2.2", + "version": "0.3.0-rc.0", "description": "Library containing Merkle tree implementations for use with Lisk-related software", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -36,13 +36,13 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-utils": "^0.2.1" + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0" }, "devDependencies": { "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "benchmark": "2.1.4", diff --git a/elements/lisk-utils/package.json b/elements/lisk-utils/package.json index a1069f2915f..9027aae3dc3 100644 --- a/elements/lisk-utils/package.json +++ b/elements/lisk-utils/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-utils", - "version": "0.2.1", + "version": "0.3.0-rc.0", "description": "Library containing generic utility functions for use with Lisk-related software", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -42,7 +42,7 @@ "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", "@types/lodash.clonedeep": "4.5.6", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "eslint": "7.22.0", diff --git a/elements/lisk-validator/package.json b/elements/lisk-validator/package.json index 99bbb0467b8..8a60275e67f 100644 --- a/elements/lisk-validator/package.json +++ b/elements/lisk-validator/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-validator", - "version": "0.6.2", + "version": "0.7.0-rc.0", "description": "Validation library according to the Lisk protocol", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -18,7 +18,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -37,7 +37,7 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-cryptography": "^3.2.1", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", "ajv": "8.1.0", "ajv-formats": "2.0.2", "debug": "4.3.4", @@ -47,7 +47,7 @@ "devDependencies": { "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@types/semver": "7.3.4", "@types/validator": "13.1.3", "@typescript-eslint/eslint-plugin": "4.19.0", diff --git a/framework-plugins/lisk-framework-dashboard-plugin/package.json b/framework-plugins/lisk-framework-dashboard-plugin/package.json index f4ca5ce4397..bd9dd54fb88 100644 --- a/framework-plugins/lisk-framework-dashboard-plugin/package.json +++ b/framework-plugins/lisk-framework-dashboard-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-framework-dashboard-plugin", - "version": "0.1.7", + "version": "0.2.0-rc.0", "description": "A plugin for interacting with a newly developed blockchain application.", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -18,7 +18,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -34,18 +34,18 @@ "prebuild": "rm -r dist-node/* || mkdir dist-node || true", "build": "npm run build:node && npm run build:web", "build:node": "tsc", - "build:web": "node scripts/build.js --jsx react", + "build:web": "NODE_OPTIONS='--openssl-legacy-provider' node scripts/build.js --jsx react", "start:web": "NODE_ENV=development node scripts/start.js", "build:check": "node -e \"require('./dist-node')\"", "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-client": "^5.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-utils": "^0.2.1", + "@liskhq/lisk-client": "^5.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", "express": "4.17.3", "json-format-highlight": "1.0.4", - "lisk-framework": "^0.9.2", + "lisk-framework": "^0.10.0-rc.0", "react": "^17.0.1", "react-dom": "^17.0.1", "react-router-dom": "^5.2.0", @@ -62,7 +62,7 @@ "@types/ip": "1.1.0", "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", "@types/react-router-dom": "5.1.7", diff --git a/framework-plugins/lisk-framework-faucet-plugin/package.json b/framework-plugins/lisk-framework-faucet-plugin/package.json index 46e0b8c7daf..f72c6c33bf8 100644 --- a/framework-plugins/lisk-framework-faucet-plugin/package.json +++ b/framework-plugins/lisk-framework-faucet-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-framework-faucet-plugin", - "version": "0.1.7", + "version": "0.2.0-rc.0", "description": "A plugin for distributing testnet tokens from a newly developed blockchain application.", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -18,7 +18,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -35,21 +35,21 @@ "prebuild": "rm -r dist-node/* || mkdir dist-node || true", "build": "npm run build:node && npm run build:web", "build:node": "tsc", - "build:web": "node scripts/build.js --jsx react", + "build:web": "NODE_OPTIONS='--openssl-legacy-provider' node scripts/build.js --jsx react", "start:web": "NODE_ENV=development node scripts/start.js", "build:check": "node -e \"require('./dist-node')\"", "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-api-client": "^5.1.6", - "@liskhq/lisk-client": "^5.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-transactions": "^5.2.2", - "@liskhq/lisk-utils": "^0.2.1", - "@liskhq/lisk-validator": "^0.6.2", - "axios": "0.21.1", + "@liskhq/lisk-api-client": "^5.2.0-rc.0", + "@liskhq/lisk-client": "^5.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-transactions": "^5.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0", + "axios": "1.3.2", "express": "4.17.3", - "lisk-framework": "^0.9.2", + "lisk-framework": "^0.10.0-rc.0", "react": "^17.0.1", "react-dom": "^17.0.1", "react-router-dom": "^5.2.0" @@ -65,7 +65,7 @@ "@types/ip": "1.1.0", "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", "@types/react-router-dom": "5.1.7", diff --git a/framework-plugins/lisk-framework-forger-plugin/package.json b/framework-plugins/lisk-framework-forger-plugin/package.json index 473139f9793..398305254f6 100644 --- a/framework-plugins/lisk-framework-forger-plugin/package.json +++ b/framework-plugins/lisk-framework-forger-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-framework-forger-plugin", - "version": "0.2.7", + "version": "0.3.0-rc.0", "description": "A plugin for lisk-framework that monitors configured delegates forging activity and voters information.", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -18,7 +18,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -38,25 +38,25 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-chain": "^0.3.4", - "@liskhq/lisk-codec": "^0.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-db": "^0.2.1", - "@liskhq/lisk-transactions": "^5.2.2", - "@liskhq/lisk-utils": "^0.2.1", - "@liskhq/lisk-validator": "^0.6.2", - "axios": "0.21.1", + "@liskhq/lisk-chain": "^0.4.0-rc.0", + "@liskhq/lisk-codec": "^0.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-db": "^0.3.6", + "@liskhq/lisk-transactions": "^5.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0", + "axios": "1.3.2", "cors": "2.8.5", "debug": "4.3.4", "express": "4.17.3", "express-rate-limit": "5.1.3", "fs-extra": "9.1.0", "ip": "1.1.5", - "lisk-framework": "^0.9.2" + "lisk-framework": "^0.10.0-rc.0" }, "devDependencies": { - "@liskhq/lisk-api-client": "^5.1.6", - "@liskhq/lisk-genesis": "^0.2.4", + "@liskhq/lisk-api-client": "^5.2.0-rc.0", + "@liskhq/lisk-genesis": "^0.3.0-rc.0", "@types/cors": "2.8.6", "@types/debug": "4.1.7", "@types/express": "4.17.6", @@ -64,10 +64,10 @@ "@types/ip": "1.1.0", "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", - "axios": "0.21.1", + "axios": "1.3.2", "eslint": "7.22.0", "eslint-config-lisk-base": "2.0.1", "eslint-plugin-import": "2.22.1", diff --git a/framework-plugins/lisk-framework-forger-plugin/src/controllers/forging_info.ts b/framework-plugins/lisk-framework-forger-plugin/src/controllers/forging_info.ts index 84713cfa9bb..05f6937d87b 100644 --- a/framework-plugins/lisk-framework-forger-plugin/src/controllers/forging_info.ts +++ b/framework-plugins/lisk-framework-forger-plugin/src/controllers/forging_info.ts @@ -13,7 +13,7 @@ */ import { BaseChannel, PluginCodec } from 'lisk-framework'; -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { getForgerInfo } from '../db'; import { Forger, DPoSAccountJSON } from '../types'; @@ -29,7 +29,7 @@ interface ForgerInfo extends Forger { export const getForgingInfo = async ( channel: BaseChannel, codec: PluginCodec, - db: KVStore, + db: Database, ): Promise => { const forgingDelegates = await channel.invoke>('app:getForgingStatus'); const encodedAccounts = await channel.invoke('app:getAccounts', { diff --git a/framework-plugins/lisk-framework-forger-plugin/src/controllers/voters.ts b/framework-plugins/lisk-framework-forger-plugin/src/controllers/voters.ts index 05faaa2c52b..79c974a2eb3 100644 --- a/framework-plugins/lisk-framework-forger-plugin/src/controllers/voters.ts +++ b/framework-plugins/lisk-framework-forger-plugin/src/controllers/voters.ts @@ -13,7 +13,7 @@ */ import { BaseChannel, PluginCodec } from 'lisk-framework'; -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { Forger, DPoSAccountJSON } from '../types'; import { getForgerInfo } from '../db'; @@ -30,7 +30,7 @@ interface Voter { export const getVoters = async ( channel: BaseChannel, codec: PluginCodec, - db: KVStore, + db: Database, ): Promise => { const forgersList = await channel.invoke('app:getForgingStatus'); const forgerAccounts = ( diff --git a/framework-plugins/lisk-framework-forger-plugin/src/db.ts b/framework-plugins/lisk-framework-forger-plugin/src/db.ts index df31b24e860..56a62b0a6fd 100644 --- a/framework-plugins/lisk-framework-forger-plugin/src/db.ts +++ b/framework-plugins/lisk-framework-forger-plugin/src/db.ts @@ -13,7 +13,7 @@ */ import * as createDebug from 'debug'; -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { codec } from '@liskhq/lisk-codec'; import * as os from 'os'; import { join } from 'path'; @@ -27,16 +27,16 @@ const debug = createDebug('plugin:forger:db'); export const getDBInstance = async ( dataPath: string, dbName = 'lisk-framework-forger-plugin.db', -): Promise => { +): Promise => { const dirPath = join(dataPath.replace('~', os.homedir()), 'plugins/data', dbName); await ensureDir(dirPath); - return new KVStore(dirPath); + return new Database(dirPath); }; -export const getForgerSyncInfo = async (db: KVStore): Promise => { +export const getForgerSyncInfo = async (db: Database): Promise => { try { - const encodedSyncInfo = await db.get(DB_KEY_FORGER_SYNC_INFO); + const encodedSyncInfo = await db.get(Buffer.from(DB_KEY_FORGER_SYNC_INFO)); return codec.decode(forgerSyncSchema, encodedSyncInfo); } catch (error) { debug('Forger sync info does not exists'); @@ -46,24 +46,24 @@ export const getForgerSyncInfo = async (db: KVStore): Promise => } }; -export const setForgerSyncInfo = async (db: KVStore, blockHeight: number): Promise => { +export const setForgerSyncInfo = async (db: Database, blockHeight: number): Promise => { const encodedSyncInfo = codec.encode(forgerSyncSchema, { syncUptoHeight: blockHeight }); - await db.put(DB_KEY_FORGER_SYNC_INFO, encodedSyncInfo); + await db.set(Buffer.from(DB_KEY_FORGER_SYNC_INFO), encodedSyncInfo); }; export const setForgerInfo = async ( - db: KVStore, + db: Database, forgerAddress: string, forgerInfo: ForgerInfo, ): Promise => { const encodedForgerInfo = codec.encode(forgerInfoSchema, forgerInfo); - await db.put(`${DB_KEY_FORGER_INFO}:${forgerAddress}`, encodedForgerInfo); + await db.set(Buffer.from(`${DB_KEY_FORGER_INFO}:${forgerAddress}`), encodedForgerInfo); }; -export const getForgerInfo = async (db: KVStore, forgerAddress: string): Promise => { +export const getForgerInfo = async (db: Database, forgerAddress: string): Promise => { let forgerInfo; try { - forgerInfo = await db.get(`${DB_KEY_FORGER_INFO}:${forgerAddress}`); + forgerInfo = await db.get(Buffer.from(`${DB_KEY_FORGER_INFO}:${forgerAddress}`)); } catch (error) { debug(`Forger info does not exists for delegate: ${forgerAddress}`); return { diff --git a/framework-plugins/lisk-framework-forger-plugin/src/forger_plugin.ts b/framework-plugins/lisk-framework-forger-plugin/src/forger_plugin.ts index 07968d607e1..b15ddb3db35 100644 --- a/framework-plugins/lisk-framework-forger-plugin/src/forger_plugin.ts +++ b/framework-plugins/lisk-framework-forger-plugin/src/forger_plugin.ts @@ -13,7 +13,7 @@ */ import { getAddressFromPublicKey } from '@liskhq/lisk-cryptography'; -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { ActionsDefinition, BasePlugin, @@ -79,7 +79,7 @@ const getBinaryAddress = (hexAddressStr: string) => const getAddressBuffer = (hexAddressStr: string) => Buffer.from(hexAddressStr, 'hex'); export class ForgerPlugin extends BasePlugin { - private _forgerPluginDB!: KVStore; + private _forgerPluginDB!: Database; private _channel!: BaseChannel; private _forgersList!: dataStructures.BufferMap; private _transactionFees!: TransactionFees; @@ -146,8 +146,9 @@ export class ForgerPlugin extends BasePlugin { }); } + // eslint-disable-next-line @typescript-eslint/require-await public async unload(): Promise { - await this._forgerPluginDB.close(); + this._forgerPluginDB.close(); } private async _setForgersList(): Promise { diff --git a/framework-plugins/lisk-framework-http-api-plugin/package.json b/framework-plugins/lisk-framework-http-api-plugin/package.json index dde20b32358..122d5f0a703 100644 --- a/framework-plugins/lisk-framework-http-api-plugin/package.json +++ b/framework-plugins/lisk-framework-http-api-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-framework-http-api-plugin", - "version": "0.2.7", + "version": "0.3.0-rc.0", "description": "A plugin for lisk-framework that provides basic HTTP API endpoints to get running node information.", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -37,28 +37,28 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-chain": "^0.3.4", - "@liskhq/lisk-utils": "^0.2.1", - "@liskhq/lisk-validator": "^0.6.2", + "@liskhq/lisk-chain": "^0.4.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0", "cors": "2.8.5", "express": "4.17.3", "express-rate-limit": "5.1.3", "ip": "1.1.5", - "lisk-framework": "^0.9.2" + "lisk-framework": "^0.10.0-rc.0" }, "devDependencies": { - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-transactions": "^5.2.2", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-transactions": "^5.3.0-rc.0", "@types/cors": "2.8.6", "@types/express": "4.17.6", "@types/express-rate-limit": "5.0.0", "@types/ip": "1.1.0", "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", - "axios": "0.26.1", + "axios": "1.3.2", "eslint": "7.22.0", "eslint-config-lisk-base": "2.0.1", "eslint-plugin-import": "2.22.1", diff --git a/framework-plugins/lisk-framework-monitor-plugin/package.json b/framework-plugins/lisk-framework-monitor-plugin/package.json index 5b8575bf37c..e315df05678 100644 --- a/framework-plugins/lisk-framework-monitor-plugin/package.json +++ b/framework-plugins/lisk-framework-monitor-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-framework-monitor-plugin", - "version": "0.2.7", + "version": "0.3.0-rc.0", "description": "A plugin for lisk-framework that provides network statistics of the running node", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -37,16 +37,16 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-chain": "^0.3.4", - "@liskhq/lisk-codec": "^0.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-utils": "^0.2.1", - "@liskhq/lisk-validator": "^0.6.2", + "@liskhq/lisk-chain": "^0.4.0-rc.0", + "@liskhq/lisk-codec": "^0.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0", "cors": "2.8.5", "express": "4.17.3", "express-rate-limit": "5.1.3", "ip": "1.1.5", - "lisk-framework": "^0.9.2" + "lisk-framework": "^0.10.0-rc.0" }, "devDependencies": { "@types/cors": "2.8.6", @@ -55,7 +55,7 @@ "@types/ip": "1.1.0", "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "eslint": "7.22.0", diff --git a/framework-plugins/lisk-framework-report-misbehavior-plugin/package.json b/framework-plugins/lisk-framework-report-misbehavior-plugin/package.json index f401dcba9c6..0be5a556fa4 100644 --- a/framework-plugins/lisk-framework-report-misbehavior-plugin/package.json +++ b/framework-plugins/lisk-framework-report-misbehavior-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@liskhq/lisk-framework-report-misbehavior-plugin", - "version": "0.2.7", + "version": "0.3.0-rc.0", "description": "A plugin for lisk-framework that provides automatic detection of delegate misbehavior and sends a reportDelegateMisbehaviorTransaction to the running node", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -38,17 +38,17 @@ "prepublishOnly": "npm run lint && npm test && npm run build && npm run build:check" }, "dependencies": { - "@liskhq/lisk-bft": "^0.3.4", - "@liskhq/lisk-chain": "^0.3.4", - "@liskhq/lisk-codec": "^0.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-db": "^0.2.1", - "@liskhq/lisk-transactions": "^5.2.2", - "@liskhq/lisk-utils": "^0.2.1", - "@liskhq/lisk-validator": "^0.6.2", + "@liskhq/lisk-bft": "^0.4.0-rc.0", + "@liskhq/lisk-chain": "^0.4.0-rc.0", + "@liskhq/lisk-codec": "^0.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-db": "^0.3.6", + "@liskhq/lisk-transactions": "^5.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0", "debug": "4.3.4", "fs-extra": "9.1.0", - "lisk-framework": "^0.9.2" + "lisk-framework": "^0.10.0-rc.0" }, "devDependencies": { "@types/cors": "2.8.6", @@ -57,10 +57,10 @@ "@types/ip": "1.1.0", "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", - "axios": "0.26.1", + "axios": "1.3.2", "eslint": "7.22.0", "eslint-config-lisk-base": "2.0.1", "eslint-plugin-import": "2.22.1", diff --git a/framework-plugins/lisk-framework-report-misbehavior-plugin/src/db.ts b/framework-plugins/lisk-framework-report-misbehavior-plugin/src/db.ts index 4fadef559c6..fe961091e21 100644 --- a/framework-plugins/lisk-framework-report-misbehavior-plugin/src/db.ts +++ b/framework-plugins/lisk-framework-report-misbehavior-plugin/src/db.ts @@ -12,7 +12,7 @@ * Removal or modification of this copyright notice is prohibited. */ -import { formatInt, KVStore, getFirstPrefix, getLastPrefix } from '@liskhq/lisk-db'; +import { Batch, Database } from '@liskhq/lisk-db'; import { codec } from '@liskhq/lisk-codec'; import { RawBlockHeader, BlockHeader } from '@liskhq/lisk-chain'; import { areHeadersContradicting } from '@liskhq/lisk-bft'; @@ -47,22 +47,43 @@ interface BlockHeaders { readonly blockHeaders: Buffer[]; } +const formatInt = (num: number | bigint): string => { + let buf: Buffer; + if (typeof num === 'bigint') { + if (num < BigInt(0)) { + throw new Error('Negative number cannot be formatted'); + } + buf = Buffer.alloc(8); + buf.writeBigUInt64BE(num); + } else { + if (num < 0) { + throw new Error('Negative number cannot be formatted'); + } + buf = Buffer.alloc(4); + buf.writeUInt32BE(num, 0); + } + return buf.toString('binary'); +}; + +const getFirstPrefix = (prefix: string): Buffer => Buffer.from(`${prefix}\x00`); +const getLastPrefix = (prefix: string): Buffer => Buffer.from(`${prefix}\xFF`); + export const getDBInstance = async ( dataPath: string, dbName = 'lisk-framework-report-misbehavior-plugin.db', -): Promise => { +): Promise => { const dirPath = join(dataPath.replace('~', os.homedir()), 'plugins/data', dbName); await ensureDir(dirPath); - return new KVStore(dirPath); + return new Database(dirPath); }; export const getBlockHeaders = async ( - db: KVStore, + db: Database, dbKeyBlockHeader: string, ): Promise => { try { - const encodedBlockHeaders = await db.get(dbKeyBlockHeader); + const encodedBlockHeaders = await db.get(Buffer.from(dbKeyBlockHeader)); return codec.decode(blockHeadersSchema, encodedBlockHeaders); } catch (error) { return { blockHeaders: [] as Buffer[] }; @@ -82,7 +103,7 @@ export const decodeBlockHeader = (encodedHeader: Buffer, schema: RegisteredSchem }; export const saveBlockHeaders = async ( - db: KVStore, + db: Database, schemas: RegisteredSchema, header: Buffer, ): Promise => { @@ -92,8 +113,8 @@ export const saveBlockHeaders = async ( const { blockHeaders } = await getBlockHeaders(db, dbKey); if (!blockHeaders.find(blockHeader => hash(blockHeader).equals(blockId))) { - await db.put( - dbKey, + await db.set( + Buffer.from(dbKey), codec.encode(blockHeadersSchema, { blockHeaders: [...blockHeaders, header], }), @@ -106,7 +127,7 @@ export const saveBlockHeaders = async ( type IteratableStream = NodeJS.ReadableStream & { destroy: (err?: Error) => void }; export const getContradictingBlockHeader = async ( - db: KVStore, + db: Database, blockHeader: BlockHeader, schemas: RegisteredSchema, ): Promise => @@ -135,7 +156,7 @@ export const getContradictingBlockHeader = async ( }); export const clearBlockHeaders = async ( - db: KVStore, + db: Database, schemas: RegisteredSchema, currentHeight: number, ): Promise => { @@ -159,9 +180,9 @@ export const clearBlockHeaders = async ( resolve(res); }); }); - const batch = db.batch(); + const batch = new Batch(); for (const k of keys) { - batch.del(k); + batch.del(Buffer.from(k)); } - await batch.write(); + await db.write(batch); }; diff --git a/framework-plugins/lisk-framework-report-misbehavior-plugin/src/report_misbehavior_plugin.ts b/framework-plugins/lisk-framework-report-misbehavior-plugin/src/report_misbehavior_plugin.ts index 2f4815d396e..9dbe3996b4b 100644 --- a/framework-plugins/lisk-framework-report-misbehavior-plugin/src/report_misbehavior_plugin.ts +++ b/framework-plugins/lisk-framework-report-misbehavior-plugin/src/report_misbehavior_plugin.ts @@ -12,7 +12,7 @@ * Removal or modification of this copyright notice is prohibited. */ import { validator, LiskValidationError } from '@liskhq/lisk-validator'; -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { codec } from '@liskhq/lisk-codec'; import { BlockHeader, RawBlock, Transaction } from '@liskhq/lisk-chain'; import { @@ -59,7 +59,7 @@ const actionParamsSchema = { }; export class ReportMisbehaviorPlugin extends BasePlugin { - private _pluginDB!: KVStore; + private _pluginDB!: Database; private _options!: Options; private readonly _state: State = { currentHeight: 0 }; private _channel!: BaseChannel; @@ -153,10 +153,11 @@ export class ReportMisbehaviorPlugin extends BasePlugin { }, this._clearBlockHeadersInterval); } + // eslint-disable-next-line @typescript-eslint/require-await public async unload(): Promise { clearInterval(this._clearBlockHeadersIntervalId as NodeJS.Timer); - await this._pluginDB.close(); + this._pluginDB.close(); } private _subscribeToChannel(): void { diff --git a/framework/package.json b/framework/package.json index df200a9f236..61dfbc81fab 100644 --- a/framework/package.json +++ b/framework/package.json @@ -1,6 +1,6 @@ { "name": "lisk-framework", - "version": "0.9.2", + "version": "0.10.0-rc.0", "description": "Framework to build blockchain applications according to the Lisk protocol", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -20,7 +20,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -40,19 +40,19 @@ "test:functional": "jest --config=./test/functional/jest.config.js --runInBand" }, "dependencies": { - "@liskhq/lisk-api-client": "^5.1.6", - "@liskhq/lisk-bft": "^0.3.4", - "@liskhq/lisk-chain": "^0.3.4", - "@liskhq/lisk-codec": "^0.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-db": "^0.2.1", - "@liskhq/lisk-genesis": "^0.2.4", - "@liskhq/lisk-p2p": "^0.7.3", - "@liskhq/lisk-transaction-pool": "^0.5.3", - "@liskhq/lisk-transactions": "^5.2.2", - "@liskhq/lisk-tree": "^0.2.2", - "@liskhq/lisk-utils": "^0.2.1", - "@liskhq/lisk-validator": "^0.6.2", + "@liskhq/lisk-api-client": "^5.2.0-rc.0", + "@liskhq/lisk-bft": "^0.4.0-rc.0", + "@liskhq/lisk-chain": "^0.4.0-rc.0", + "@liskhq/lisk-codec": "^0.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-db": "^0.3.6", + "@liskhq/lisk-genesis": "^0.3.0-rc.0", + "@liskhq/lisk-p2p": "^0.8.0-rc.0", + "@liskhq/lisk-transaction-pool": "^0.6.0-rc.0", + "@liskhq/lisk-transactions": "^5.3.0-rc.0", + "@liskhq/lisk-tree": "^0.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0", "bunyan": "1.8.15", "debug": "4.3.4", "eventemitter2": "6.4.5", @@ -64,11 +64,11 @@ "ws": "7.5.7" }, "devDependencies": { - "@liskhq/lisk-passphrase": "^3.1.1", + "@liskhq/lisk-passphrase": "^3.2.0-rc.0", "@types/bunyan": "1.8.6", "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "16.11.26", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "copyfiles": "2.2.0", diff --git a/framework/src/application.ts b/framework/src/application.ts index 8e12e28269c..7a2b1c1d9cc 100644 --- a/framework/src/application.ts +++ b/framework/src/application.ts @@ -17,7 +17,7 @@ import * as path from 'path'; import * as psList from 'ps-list'; import * as assert from 'assert'; import { promisify } from 'util'; -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { validator, LiskValidationError } from '@liskhq/lisk-validator'; import { objects, jobHandlers } from '@liskhq/lisk-utils'; import { @@ -125,9 +125,9 @@ export class Application { private _channel!: InMemoryChannel; private _genesisBlock!: Record | undefined; - private _blockchainDB!: KVStore; - private _nodeDB!: KVStore; - private _forgerDB!: KVStore; + private _blockchainDB!: Database; + private _nodeDB!: Database; + private _forgerDB!: Database; private readonly _mutex = new jobHandlers.Mutex(); @@ -304,9 +304,9 @@ export class Application { this._channel.publish(APP_EVENT_SHUTDOWN); await this._node.cleanup(); await this._controller.cleanup(errorCode, message); - await this._blockchainDB.close(); - await this._forgerDB.close(); - await this._nodeDB.close(); + this._blockchainDB.close(); + this._forgerDB.close(); + this._nodeDB.close(); await this._emptySocketsDirectory(); this._clearControllerPidFile(); this.logger.info({ errorCode, message }, 'Application shutdown completed'); @@ -531,10 +531,10 @@ export class Application { fs.unlinkSync(path.join(dirs.pids, 'controller.pid')); } - private _getDBInstance(options: ApplicationConfig, dbName: string): KVStore { + private _getDBInstance(options: ApplicationConfig, dbName: string): Database { const dirs = systemDirs(options.label, options.rootPath); const dbPath = `${dirs.data}/${dbName}`; this.logger.debug({ dbName, dbPath }, 'Create database instance.'); - return new KVStore(dbPath); + return new Database(dbPath); } } diff --git a/framework/src/node/forger/data_access.ts b/framework/src/node/forger/data_access.ts index cc76c592496..45a3d48fc51 100644 --- a/framework/src/node/forger/data_access.ts +++ b/framework/src/node/forger/data_access.ts @@ -15,7 +15,7 @@ import { BlockHeader } from '@liskhq/lisk-chain'; import { codec } from '@liskhq/lisk-codec'; import { getAddressFromPublicKey } from '@liskhq/lisk-cryptography'; -import { KVStore, NotFoundError } from '@liskhq/lisk-db'; +import { Database, NotFoundError } from '@liskhq/lisk-db'; import { dataStructures } from '@liskhq/lisk-utils'; import { DB_KEY_FORGER_PREVIOUSLY_FORGED, @@ -159,12 +159,12 @@ export interface PreviouslyForgedInfoStoreObject { } export const getRegisteredHashOnionSeeds = async ( - db: KVStore, + db: Database, ): Promise> => { try { const registeredHashes = codec.decode( registeredHashOnionsStoreSchema, - await db.get(DB_KEY_FORGER_REGISTERED_HASH_ONION_SEEDS), + await db.get(Buffer.from(DB_KEY_FORGER_REGISTERED_HASH_ONION_SEEDS)), ); const result = new dataStructures.BufferMap(); @@ -179,7 +179,7 @@ export const getRegisteredHashOnionSeeds = async ( }; export const setRegisteredHashOnionSeeds = async ( - db: KVStore, + db: Database, registeredHashOnionSeeds: dataStructures.BufferMap, ): Promise => { const savingData: RegisteredHashOnionStoreObject = { @@ -194,14 +194,17 @@ export const setRegisteredHashOnionSeeds = async ( } const registeredHashOnionSeedsBuffer = codec.encode(registeredHashOnionsStoreSchema, savingData); - await db.put(DB_KEY_FORGER_REGISTERED_HASH_ONION_SEEDS, registeredHashOnionSeedsBuffer); + await db.set( + Buffer.from(DB_KEY_FORGER_REGISTERED_HASH_ONION_SEEDS), + registeredHashOnionSeedsBuffer, + ); }; -export const getUsedHashOnions = async (db: KVStore): Promise => { +export const getUsedHashOnions = async (db: Database): Promise => { try { return codec.decode( usedHashOnionsStoreSchema, - await db.get(DB_KEY_FORGER_USED_HASH_ONION), + await db.get(Buffer.from(DB_KEY_FORGER_USED_HASH_ONION)), ).usedHashOnions; } catch (error) { return []; @@ -209,22 +212,22 @@ export const getUsedHashOnions = async (db: KVStore): Promise = }; export const setUsedHashOnions = async ( - db: KVStore, + db: Database, usedHashOnions: UsedHashOnion[], ): Promise => { const usedHashOnionObject: UsedHashOnionStoreObject = { usedHashOnions }; - await db.put( - DB_KEY_FORGER_USED_HASH_ONION, + await db.set( + Buffer.from(DB_KEY_FORGER_USED_HASH_ONION), codec.encode(usedHashOnionsStoreSchema, usedHashOnionObject), ); }; export const getPreviouslyForgedMap = async ( - db: KVStore, + db: Database, ): Promise> => { try { - const previouslyForgedBuffer = await db.get(DB_KEY_FORGER_PREVIOUSLY_FORGED); + const previouslyForgedBuffer = await db.get(Buffer.from(DB_KEY_FORGER_PREVIOUSLY_FORGED)); const parsedMap = codec.decode( previouslyForgedInfoSchema, previouslyForgedBuffer, @@ -244,7 +247,7 @@ export const getPreviouslyForgedMap = async ( }; export const setPreviouslyForgedMap = async ( - db: KVStore, + db: Database, previouslyForgedMap: dataStructures.BufferMap, ): Promise => { const previouslyForgedStoreObject: PreviouslyForgedInfoStoreObject = { previouslyForgedInfo: [] }; @@ -256,8 +259,8 @@ export const setPreviouslyForgedMap = async ( a.generatorAddress.compare(b.generatorAddress), ); - await db.put( - DB_KEY_FORGER_PREVIOUSLY_FORGED, + await db.set( + Buffer.from(DB_KEY_FORGER_PREVIOUSLY_FORGED), codec.encode(previouslyForgedInfoSchema, previouslyForgedStoreObject), ); }; @@ -267,7 +270,7 @@ export const setPreviouslyForgedMap = async ( * so it needs to be outside of the DB transaction */ export const saveMaxHeightPreviouslyForged = async ( - db: KVStore, + db: Database, header: BlockHeader, previouslyForgedMap: dataStructures.BufferMap, ): Promise => { diff --git a/framework/src/node/forger/forger.ts b/framework/src/node/forger/forger.ts index 5f1c11de129..153c2cd077b 100644 --- a/framework/src/node/forger/forger.ts +++ b/framework/src/node/forger/forger.ts @@ -28,7 +28,7 @@ import { BFT } from '@liskhq/lisk-bft'; import { MerkleTree } from '@liskhq/lisk-tree'; import { dataStructures } from '@liskhq/lisk-utils'; import { TransactionPool } from '@liskhq/lisk-transaction-pool'; -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { HighFeeForgingStrategy } from './strategies'; import { Processor } from '../processor'; import { Logger } from '../../logger'; @@ -69,7 +69,7 @@ export interface RegisteredDelegate { interface ForgerConstructor { readonly forgingStrategy?: HighFeeForgingStrategy; readonly logger: Logger; - readonly db: KVStore; + readonly db: Database; readonly processorModule: Processor; readonly bftModule: BFT; readonly transactionPoolModule: TransactionPool; @@ -120,7 +120,7 @@ const IsEqualForgingInfo = (info1: ForgingInfo, info2: ForgingInfo): boolean => export class Forger { private readonly _logger: Logger; - private readonly _db: KVStore; + private readonly _db: Database; private readonly _processorModule: Processor; private readonly _bftModule: BFT; private readonly _transactionPoolModule: TransactionPool; diff --git a/framework/src/node/network/network.ts b/framework/src/node/network/network.ts index 0d46cf92b6a..10dcd2faa38 100644 --- a/framework/src/node/network/network.ts +++ b/framework/src/node/network/network.ts @@ -14,7 +14,7 @@ import { codec } from '@liskhq/lisk-codec'; import { getRandomBytes } from '@liskhq/lisk-cryptography'; -import { KVStore, NotFoundError } from '@liskhq/lisk-db'; +import { Database, NotFoundError } from '@liskhq/lisk-db'; import { EventEmitter } from 'events'; import * as liskP2P from '@liskhq/lisk-p2p'; @@ -74,7 +74,7 @@ interface NetworkConstructor { readonly options: NetworkConfig; readonly channel: InMemoryChannel; readonly logger: Logger; - readonly nodeDB: KVStore; + readonly nodeDB: Database; readonly networkVersion: string; } @@ -106,7 +106,7 @@ export class Network { private readonly _options: NetworkConfig; private readonly _channel: InMemoryChannel; private readonly _logger: Logger; - private readonly _nodeDB: KVStore; + private readonly _nodeDB: Database; private readonly _networkVersion: string; private _networkID!: string; private _secret: number | undefined; @@ -129,7 +129,9 @@ export class Network { let previousPeers: ReadonlyArray = []; try { // Load peers from the database that were tried or connected the last time node was running - const previousPeersBuffer = await this._nodeDB.get(DB_KEY_NETWORK_TRIED_PEERS_LIST); + const previousPeersBuffer = await this._nodeDB.get( + Buffer.from(DB_KEY_NETWORK_TRIED_PEERS_LIST), + ); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment previousPeers = JSON.parse(previousPeersBuffer.toString('utf8')); } catch (error) { @@ -141,7 +143,7 @@ export class Network { // Get previous secret if exists let secret: Buffer | undefined; try { - secret = await this._nodeDB.get(DB_KEY_NETWORK_NODE_SECRET); + secret = await this._nodeDB.get(Buffer.from(DB_KEY_NETWORK_NODE_SECRET)); } catch (error) { if (!(error instanceof NotFoundError)) { this._logger.error({ err: error as Error }, 'Error while querying nodeDB'); @@ -150,7 +152,7 @@ export class Network { if (!secret) { secret = getRandomBytes(4); - await this._nodeDB.put(DB_KEY_NETWORK_NODE_SECRET, secret); + await this._nodeDB.set(Buffer.from(DB_KEY_NETWORK_NODE_SECRET), secret); } this._secret = secret?.readUInt32BE(0); @@ -353,7 +355,7 @@ export class Network { { err: error as Error, procedure: request.procedure }, 'Peer request not fulfilled event: Could not respond to peer request', ); - request.error(error); // Send an error back to the peer. + request.error(error as Error); // Send an error back to the peer. } }); @@ -394,8 +396,8 @@ export class Network { setInterval(async () => { const triedPeers = this._p2p.getTriedPeers(); if (triedPeers.length) { - await this._nodeDB.put( - DB_KEY_NETWORK_TRIED_PEERS_LIST, + await this._nodeDB.set( + Buffer.from(DB_KEY_NETWORK_TRIED_PEERS_LIST), Buffer.from(JSON.stringify(triedPeers), 'utf8'), ); } diff --git a/framework/src/node/node.ts b/framework/src/node/node.ts index cffb05e1849..4358b9fe8b1 100644 --- a/framework/src/node/node.ts +++ b/framework/src/node/node.ts @@ -33,7 +33,7 @@ import { import { EVENT_BFT_BLOCK_FINALIZED, BFT } from '@liskhq/lisk-bft'; import { getNetworkIdentifier, hash } from '@liskhq/lisk-cryptography'; import { TransactionPool, events as txPoolEvents } from '@liskhq/lisk-transaction-pool'; -import { KVStore, NotFoundError } from '@liskhq/lisk-db'; +import { Database, NotFoundError } from '@liskhq/lisk-db'; import { jobHandlers } from '@liskhq/lisk-utils'; import { codec } from '@liskhq/lisk-codec'; import { @@ -71,6 +71,7 @@ import { EVENT_SYNCHRONIZER_SYNC_REQUIRED } from './synchronizer/base_synchroniz import { Network } from './network'; import { BaseAsset, BaseModule } from '../modules'; import { Bus } from '../controller/bus'; +import { backupDatabase } from './utils/backup'; const forgeInterval = 1000; const { EVENT_NEW_BLOCK, EVENT_DELETE_BLOCK, EVENT_VALIDATORS_CHANGED } = chainEvents; @@ -88,9 +89,9 @@ interface NodeInitInput { readonly genesisBlockJSON: Record; readonly logger: Logger; readonly channel: InMemoryChannel; - readonly forgerDB: KVStore; - readonly blockchainDB: KVStore; - readonly nodeDB: KVStore; + readonly forgerDB: Database; + readonly blockchainDB: Database; + readonly nodeDB: Database; readonly bus: Bus; } @@ -104,11 +105,12 @@ export class Node { private readonly _options: NodeOptions; private readonly _registeredModules: BaseModule[] = []; private _bus!: Bus; + private _dataPath!: string; private _channel!: InMemoryChannel; private _logger!: Logger; - private _nodeDB!: KVStore; - private _forgerDB!: KVStore; - private _blockchainDB!: KVStore; + private _nodeDB!: Database; + private _forgerDB!: Database; + private _blockchainDB!: Database; private _networkIdentifier!: Buffer; private _registeredAccountSchemas: { [moduleName: string]: AccountSchema } = {}; private _networkModule!: Network; @@ -240,6 +242,7 @@ export class Node { this._forgerDB = forgerDB; this._nodeDB = nodeDB; this._bus = bus; + this._dataPath = configPath; // read from compiled genesis block if exist const genesisBlock = this._readGenesisBlock(genesisBlockJSON, configPath); @@ -511,6 +514,9 @@ export class Node { ...this._options.genesisConfig, }, registeredModules: this.getRegisteredModules(), + backup: { + height: this._options.backup.height, + }, network: { port: this._options.network.port, hostIp: this._options.network.hostIp, @@ -589,9 +595,9 @@ export class Node { return this._processor.verifyTransactions(transactions, stateStore); }, ...this._options.transactionPool, - minEntranceFeePriority: BigInt(this._options.transactionPool.minEntranceFeePriority), + minEntranceFeePriority: BigInt(this._options.transactionPool.minEntranceFeePriority ?? 0), minReplacementFeeDifference: BigInt( - this._options.transactionPool.minReplacementFeeDifference, + this._options.transactionPool.minReplacementFeeDifference ?? 0, ), maxPayloadLength: this._options.genesisConfig.maxPayloadLength, }); @@ -724,6 +730,18 @@ export class Node { ), }); + if ( + this._options.backup.height > 0 && + this._options.backup.height === block.header.height + ) { + backupDatabase(this._dataPath, this._blockchainDB).catch(err => + this._logger.fatal( + { err: err as Error, heght: this._options.backup.height }, + 'Failed to create backup', + ), + ); + } + // Remove any transactions from the pool on new block if (block.payload.length) { for (const transaction of block.payload) { diff --git a/framework/src/node/processor/processor.ts b/framework/src/node/processor/processor.ts index 0bf92036046..f0826028058 100644 --- a/framework/src/node/processor/processor.ts +++ b/framework/src/node/processor/processor.ts @@ -349,7 +349,7 @@ export class Processor { throw new TransactionApplyError( (err as Error).message ?? 'Transaction verification failed', transaction.id, - err, + err as Error, ); } } diff --git a/framework/src/node/utils/backup.ts b/framework/src/node/utils/backup.ts new file mode 100644 index 00000000000..96a764750e6 --- /dev/null +++ b/framework/src/node/utils/backup.ts @@ -0,0 +1,25 @@ +/* + * Copyright © 2023 Lisk Foundation + * + * See the LICENSE file at the top-level directory of this distribution + * for licensing information. + * + * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, + * no part of this software, including this file, may be copied, modified, + * propagated, or distributed except according to the terms contained in the + * LICENSE file. + * + * Removal or modification of this copyright notice is prohibited. + */ +import * as path from 'path'; +import * as fs from 'fs'; +import { Database } from '@liskhq/lisk-db'; + +export const backupDatabase = async (dataPath: string, db: Database) => { + const backupPath = path.resolve(dataPath, 'backup'); + // if backup already exist, it should remove the directory and create a new checkpoint + if (fs.existsSync(backupPath)) { + fs.rmSync(backupPath, { recursive: true, force: true }); + } + await db.checkpoint(backupPath); +}; diff --git a/framework/src/schema/application_config_schema.ts b/framework/src/schema/application_config_schema.ts index 2074c14d386..10e9782ce34 100644 --- a/framework/src/schema/application_config_schema.ts +++ b/framework/src/schema/application_config_schema.ts @@ -15,7 +15,16 @@ export const applicationConfigSchema = { $id: '#/config', type: 'object', - required: ['version', 'networkVersion', 'rpc', 'genesisConfig', 'forging', 'network', 'plugins'], + required: [ + 'version', + 'networkVersion', + 'backup', + 'rpc', + 'genesisConfig', + 'forging', + 'network', + 'plugins', + ], properties: { label: { type: 'string', @@ -41,6 +50,17 @@ export const applicationConfigSchema = { description: 'The root path for storing temporary pid and socket file and data. Restricted length due to unix domain socket path length limitations.', }, + backup: { + type: 'object', + required: ['height'], + properties: { + height: { + type: 'integer', + minimum: 0, + description: 'Height at which the DB backup should be taken.', + }, + }, + }, logger: { type: 'object', required: ['fileLogLevel', 'logFileName', 'consoleLogLevel'], @@ -380,6 +400,9 @@ export const applicationConfigSchema = { port: 8080, host: '127.0.0.1', }, + backup: { + height: 0, + }, genesisConfig: { blockTime: 10, communityIdentifier: 'sdk', diff --git a/framework/src/testing/block_processing_env.ts b/framework/src/testing/block_processing_env.ts index b8d829b5120..dc78a29f1ad 100644 --- a/framework/src/testing/block_processing_env.ts +++ b/framework/src/testing/block_processing_env.ts @@ -30,7 +30,7 @@ import { getPrivateAndPublicKeyFromPassphrase, getAddressAndPublicKeyFromPassphrase, } from '@liskhq/lisk-cryptography'; -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { objects } from '@liskhq/lisk-utils'; import { TokenModule, SequenceModule, KeysModule, DPoSModule } from '../modules'; @@ -68,7 +68,7 @@ export interface BlockProcessingEnv { createBlock: (payload?: Transaction[], timestamp?: number) => Promise; getProcessor: () => Processor; getChain: () => Chain; - getBlockchainDB: () => KVStore; + getBlockchainDB: () => Database; process: (block: Block) => Promise; processUntilHeight: (height: number) => Promise; getLastBlock: () => Block; @@ -97,7 +97,7 @@ const getAppConfig = (genesisConfig?: GenesisConfig): ApplicationConfig => { }; const getProcessor = ( - db: KVStore, + db: Database, appConfig: ApplicationConfig, genesisBlock: GenesisBlock, networkIdentifier: Buffer, @@ -290,7 +290,7 @@ export const getBlockProcessingEnv = async ( getDataAccess: () => processor['_chain'].dataAccess, cleanup: async ({ databasePath }): Promise => { await processor.stop(); - await db.close(); + db.close(); removeDB(databasePath); }, }; diff --git a/framework/src/testing/utils.ts b/framework/src/testing/utils.ts index 280da0a6ef4..7ab23c98e83 100644 --- a/framework/src/testing/utils.ts +++ b/framework/src/testing/utils.ts @@ -15,7 +15,7 @@ import * as fs from 'fs-extra'; import { AccountDefaultProps, AccountSchema, Block, BlockHeaderAsset } from '@liskhq/lisk-chain'; -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { Logger } from '../logger'; import { BaseModule, BaseModuleChannel } from '../modules'; @@ -226,10 +226,10 @@ const defaultDatabasePath = '/tmp/lisk-framework/test'; export const getDBPath = (name: string, dbPath = defaultDatabasePath): string => `${dbPath}/${name}.db`; -export const createDB = (name: string, dbPath = defaultDatabasePath): KVStore => { +export const createDB = (name: string, dbPath = defaultDatabasePath): Database => { fs.ensureDirSync(dbPath); const filePath = getDBPath(name, dbPath); - return new KVStore(filePath); + return new Database(filePath); }; export const removeDB = (dbPath = defaultDatabasePath): void => diff --git a/framework/src/types.ts b/framework/src/types.ts index af89faaeb7f..d805f5efce9 100644 --- a/framework/src/types.ts +++ b/framework/src/types.ts @@ -172,6 +172,9 @@ export interface ApplicationConfig { force?: boolean; defaultPassword?: string; }; + backup: { + height: number; + }; network: NetworkConfig; logger: { logFileName: string; diff --git a/framework/test/functional/actions/application.spec.ts b/framework/test/functional/actions/application.spec.ts index a412759e4eb..f2632100538 100644 --- a/framework/test/functional/actions/application.spec.ts +++ b/framework/test/functional/actions/application.spec.ts @@ -43,6 +43,9 @@ describe('Application related actions', () => { networkIdentifier: expect.any(String), networkVersion: expect.any(String), lastBlockID: expect.any(String), + backup: { + height: expect.any(Number), + }, finalizedHeight: expect.any(Number), unconfirmedTransactions: expect.any(Number), }), diff --git a/framework/test/integration/node/forger/seed_reveal.spec.ts b/framework/test/integration/node/forger/seed_reveal.spec.ts index 4501be86ecd..7f4241fec99 100644 --- a/framework/test/integration/node/forger/seed_reveal.spec.ts +++ b/framework/test/integration/node/forger/seed_reveal.spec.ts @@ -41,11 +41,11 @@ describe('seed reveal', () => { afterEach(async () => { await forgerDB.forgerDB.clear(); - await forgerDB.forgerDB.close(); + forgerDB.forgerDB.close(); removeDB(dbName); }); - it('should pass for selecting the next seed reveal', async () => { + it('should pass for selecting the next seed reveal', () => { const address = '9cabee3d27426676b852ce6b804cb2fdff7cd0b5'; // 2nd and 3rd Hash onion from config file for address 9cabee3d27426676b852ce6b804cb2fdff7cd0b5 const secondCheckpointStart = Buffer.from('f7a3fb976e50d882c709edb63bde4d9c', 'hex'); diff --git a/framework/test/integration/node/forger/transaction_pool.spec.ts b/framework/test/integration/node/forger/transaction_pool.spec.ts index 67f1262846c..561755ce54d 100644 --- a/framework/test/integration/node/forger/transaction_pool.spec.ts +++ b/framework/test/integration/node/forger/transaction_pool.spec.ts @@ -12,7 +12,7 @@ * Removal or modification of this copyright notice is prohibited. */ -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { Transaction } from '@liskhq/lisk-chain'; import { nodeUtils } from '../../../utils'; import { createDB, removeDB } from '../../../utils/kv_store'; @@ -22,8 +22,8 @@ import { createTransferTransaction } from '../../../utils/node/transaction'; describe('Transaction pool', () => { const dbName = 'transaction_pool'; let node: any; - let blockchainDB: KVStore; - let forgerDB: KVStore; + let blockchainDB: Database; + let forgerDB: Database; beforeAll(async () => { ({ blockchainDB, forgerDB } = createDB(dbName)); @@ -32,8 +32,8 @@ describe('Transaction pool', () => { afterAll(async () => { await node.cleanup(); - await blockchainDB.close(); - await forgerDB.close(); + blockchainDB.close(); + forgerDB.close(); removeDB(dbName); }); diff --git a/framework/test/integration/node/genesis_block.spec.ts b/framework/test/integration/node/genesis_block.spec.ts index 339f8032ace..372de0c9752 100644 --- a/framework/test/integration/node/genesis_block.spec.ts +++ b/framework/test/integration/node/genesis_block.spec.ts @@ -12,7 +12,7 @@ * Removal or modification of this copyright notice is prohibited. */ -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { Account } from '@liskhq/lisk-chain'; import { validator } from '@liskhq/lisk-validator'; import { nodeUtils } from '../../utils'; @@ -25,8 +25,8 @@ describe('genesis block', () => { const dbName = 'genesis_block'; const genesisBlock = getGenesisBlock(); let node: Node; - let blockchainDB: KVStore; - let forgerDB: KVStore; + let blockchainDB: Database; + let forgerDB: Database; beforeAll(async () => { ({ blockchainDB, forgerDB } = createDB(dbName)); @@ -38,8 +38,8 @@ describe('genesis block', () => { afterAll(async () => { await node.cleanup(); - await blockchainDB.close(); - await forgerDB.close(); + blockchainDB.close(); + forgerDB.close(); removeDB(dbName); }); diff --git a/framework/test/integration/node/processor/delete_block.spec.ts b/framework/test/integration/node/processor/delete_block.spec.ts index 89354423375..d5dbcbedf16 100644 --- a/framework/test/integration/node/processor/delete_block.spec.ts +++ b/framework/test/integration/node/processor/delete_block.spec.ts @@ -12,7 +12,7 @@ * Removal or modification of this copyright notice is prohibited. */ -import { formatInt, NotFoundError } from '@liskhq/lisk-db'; +import { NotFoundError } from '@liskhq/lisk-db'; import { Block, stateDiffSchema, @@ -27,6 +27,7 @@ import { genesis, DefaultAccountProps } from '../../../fixtures'; import { createTransferTransaction } from '../../../utils/node/transaction'; import * as testing from '../../../../src/testing'; import { Processor } from '../../../../src/node/processor'; +import { formatInt } from '../../../utils/kv_store'; describe('Delete block', () => { let processEnv: testing.BlockProcessingEnv; @@ -89,7 +90,7 @@ describe('Delete block', () => { newBlock = await processEnv.createBlock([transaction]); await processEnv .getBlockchainDB() - .put(`diff:${formatInt(newBlock.header.height)}`, emptyDiffState); + .set(Buffer.from(`diff:${formatInt(newBlock.header.height)}`), emptyDiffState); await processEnv.process(newBlock); await processor.deleteLastBlock(); }); @@ -123,7 +124,9 @@ describe('Delete block', () => { it('should not persist the state diff for that block height', async () => { await expect( - processEnv.getBlockchainDB().get(`diff:${formatInt(newBlock.header.height)}`), + processEnv + .getBlockchainDB() + .get(Buffer.from(`diff:${formatInt(newBlock.header.height)}`)), ).rejects.toBeInstanceOf(NotFoundError); }); }); @@ -151,7 +154,7 @@ describe('Delete block', () => { // Assert await expect( processEnv.getDataAccess().getAccountByAddress(recipientAccount.address), - ).rejects.toThrow('Specified key accounts:address'); + ).rejects.toThrow('Specified key 6163636f756e74733a61646472657373'); const revertedGenesisAccount = await processEnv .getDataAccess() .getAccountByAddress(genesisAccount.address); diff --git a/framework/test/unit/__snapshots__/application.spec.ts.snap b/framework/test/unit/__snapshots__/application.spec.ts.snap index 2235c193001..d74f5d92fb3 100644 --- a/framework/test/unit/__snapshots__/application.spec.ts.snap +++ b/framework/test/unit/__snapshots__/application.spec.ts.snap @@ -2,6 +2,9 @@ exports[`Application #constructor should set internal variables 1`] = ` Object { + "backup": Object { + "height": 0, + }, "forging": Object { "defaultPassword": "elephant tree paris dragon chair galaxy", "delegates": Array [ diff --git a/framework/test/unit/node/forger/forger.spec.ts b/framework/test/unit/node/forger/forger.spec.ts index 31f2132e8bb..48612f37823 100644 --- a/framework/test/unit/node/forger/forger.spec.ts +++ b/framework/test/unit/node/forger/forger.spec.ts @@ -71,7 +71,7 @@ describe('forger', () => { }; dbStub = { get: jest.fn(), - put: jest.fn(), + set: jest.fn(), }; bftModuleStub = { getMaxHeightPrevoted: jest.fn().mockReturnValue(5), @@ -151,7 +151,7 @@ describe('forger', () => { maxHeightPrevoted: 10, }); when(dbStub.get) - .calledWith(DB_KEY_FORGER_PREVIOUSLY_FORGED) + .calledWith(Buffer.from(DB_KEY_FORGER_PREVIOUSLY_FORGED)) .mockResolvedValue( codec.encode(previouslyForgedInfoSchema, previouslyForgedStoreObject) as never, ); @@ -253,7 +253,7 @@ describe('forger', () => { describe('overwrite=false', () => { it('should fail when forger info does not exist', async () => { when(dbStub.get) - .calledWith(DB_KEY_FORGER_PREVIOUSLY_FORGED) + .calledWith(Buffer.from(DB_KEY_FORGER_PREVIOUSLY_FORGED)) .mockRejectedValue(new NotFoundError('data not found') as never); await expect( @@ -348,8 +348,8 @@ describe('forger', () => { true, ); - expect(dbStub.put).toHaveBeenCalledWith( - DB_KEY_FORGER_PREVIOUSLY_FORGED, + expect(dbStub.set).toHaveBeenCalledWith( + Buffer.from(DB_KEY_FORGER_PREVIOUSLY_FORGED), codec.encode(previouslyForgedInfoSchema, previouslyForgedStoreObject), ); @@ -832,7 +832,7 @@ describe('forger', () => { (forgeModule as any)._config.forging.delegates = delegates; when(dbStub.get) - .calledWith(DB_KEY_FORGER_REGISTERED_HASH_ONION_SEEDS) + .calledWith(Buffer.from(DB_KEY_FORGER_REGISTERED_HASH_ONION_SEEDS)) .mockResolvedValue(registeredHashOnionsBuffer as never); // Act @@ -851,8 +851,8 @@ describe('forger', () => { expect(loggerStub.warn).toHaveBeenCalledWith( expect.stringContaining('Overwriting with new hash onion'), ); - expect(dbStub.put).toHaveBeenCalledWith( - DB_KEY_FORGER_REGISTERED_HASH_ONION_SEEDS, + expect(dbStub.set).toHaveBeenCalledWith( + Buffer.from(DB_KEY_FORGER_REGISTERED_HASH_ONION_SEEDS), codec.encode(registeredHashOnionsStoreSchema, originalKey), ); }); @@ -869,7 +869,7 @@ describe('forger', () => { ], }; when(dbStub.get) - .calledWith(DB_KEY_FORGER_USED_HASH_ONION) + .calledWith(Buffer.from(DB_KEY_FORGER_USED_HASH_ONION)) .mockResolvedValue(codec.encode(usedHashOnionsStoreSchema, usedHashOnions) as never); // Act @@ -895,7 +895,7 @@ describe('forger', () => { ], }; when(dbStub.get) - .calledWith(DB_KEY_FORGER_USED_HASH_ONION) + .calledWith(Buffer.from(DB_KEY_FORGER_USED_HASH_ONION)) .mockResolvedValue(codec.encode(usedHashOnionsStoreSchema, usedHashOnion) as never); // Act @@ -931,7 +931,7 @@ describe('forger', () => { getSlotNumberStub = chainModuleStub.slots.getSlotNumber; when(dbStub.get) - .calledWith(DB_KEY_FORGER_PREVIOUSLY_FORGED) + .calledWith(Buffer.from(DB_KEY_FORGER_PREVIOUSLY_FORGED)) .mockRejectedValue(new NotFoundError('not found') as never); when(getSlotNumberStub).calledWith().mockReturnValue(currentSlot); when(getSlotNumberStub) @@ -979,7 +979,7 @@ describe('forger', () => { chainModuleStub.slots.getSlotTime.mockReturnValue(futureSlotTime); await expect(forgeModule.forge()).toResolve(); - expect(dbStub.put).not.toHaveBeenCalled(); + expect(dbStub.set).not.toHaveBeenCalled(); dateNowMockFn.mockRestore(); }); @@ -1096,7 +1096,7 @@ describe('forger', () => { }; when(dbStub.get) - .calledWith(DB_KEY_FORGER_USED_HASH_ONION) + .calledWith(Buffer.from(DB_KEY_FORGER_USED_HASH_ONION)) .mockResolvedValue(codec.encode(usedHashOnionsStoreSchema, usedHashOnion) as never); // Act @@ -1164,14 +1164,14 @@ describe('forger', () => { ); when(dbStub.get) - .calledWith(DB_KEY_FORGER_USED_HASH_ONION) + .calledWith(Buffer.from(DB_KEY_FORGER_USED_HASH_ONION)) .mockResolvedValue(usedHashOnionInputBuffer as never); // Act await forgeModule.forge(); // Assert - expect(dbStub.put).toHaveBeenCalledWith( - DB_KEY_FORGER_USED_HASH_ONION, + expect(dbStub.set).toHaveBeenCalledWith( + Buffer.from(DB_KEY_FORGER_USED_HASH_ONION), usedHashOnionOutputBuffer, ); }); @@ -1233,14 +1233,14 @@ describe('forger', () => { ); when(dbStub.get) - .calledWith(DB_KEY_FORGER_USED_HASH_ONION) + .calledWith(Buffer.from(DB_KEY_FORGER_USED_HASH_ONION)) .mockResolvedValue(usedHashOnionInputBuffer as never); // Act await forgeModule.forge(); // Assert - expect(dbStub.put).toHaveBeenCalledWith( - DB_KEY_FORGER_USED_HASH_ONION, + expect(dbStub.set).toHaveBeenCalledWith( + Buffer.from(DB_KEY_FORGER_USED_HASH_ONION), usedHashOnionOutputBuffer, ); }); @@ -1294,15 +1294,15 @@ describe('forger', () => { ); when(dbStub.get) - .calledWith(DB_KEY_FORGER_USED_HASH_ONION) + .calledWith(Buffer.from(DB_KEY_FORGER_USED_HASH_ONION)) .mockResolvedValue(usedHashOnionInputBuffer as never); (forgeModule as any)._bftModule.finalizedHeight = 318; // Act await forgeModule.forge(); // Assert - expect(dbStub.put).toHaveBeenCalledWith( - DB_KEY_FORGER_USED_HASH_ONION, + expect(dbStub.set).toHaveBeenCalledWith( + Buffer.from(DB_KEY_FORGER_USED_HASH_ONION), usedHashOnionOutputBuffer, ); }); @@ -1353,7 +1353,7 @@ describe('forger', () => { ); when(dbStub.get) - .calledWith(DB_KEY_FORGER_USED_HASH_ONION) + .calledWith(Buffer.from(DB_KEY_FORGER_USED_HASH_ONION)) .mockResolvedValue(usedHashOnionInputBuffer as never); // Act @@ -1362,8 +1362,8 @@ describe('forger', () => { expect(loggerStub.warn).toHaveBeenCalledWith( 'All of the hash onion has been used already. Please update to the new hash onion.', ); - expect(dbStub.put).toHaveBeenCalledWith( - DB_KEY_FORGER_USED_HASH_ONION, + expect(dbStub.set).toHaveBeenCalledWith( + Buffer.from(DB_KEY_FORGER_USED_HASH_ONION), usedHashOnionOutputBuffer, ); }); @@ -1406,7 +1406,7 @@ describe('forger', () => { } as unknown) as Block, }); // Assert - expect(dbStub.get).toHaveBeenCalledWith('forger:previouslyForged'); + expect(dbStub.get).toHaveBeenCalledWith(Buffer.from('forger:previouslyForged')); // previousBlock.height + 1 expect(block.header.asset.maxHeightPreviouslyForged).toBe(0); }); @@ -1429,7 +1429,7 @@ describe('forger', () => { } as Block, }); // Assert - expect(dbStub.get).toHaveBeenCalledWith('forger:previouslyForged'); + expect(dbStub.get).toHaveBeenCalledWith(Buffer.from('forger:previouslyForged')); expect(block.header.asset.maxHeightPreviouslyForged).toBe(previouslyForgedHeight); }); @@ -1493,7 +1493,10 @@ describe('forger', () => { }, ], }); - expect(dbStub.put).toHaveBeenCalledWith('forger:previouslyForged', maxHeightResult); + expect(dbStub.set).toHaveBeenCalledWith( + Buffer.from('forger:previouslyForged'), + maxHeightResult, + ); }); it('should set maxPreviouslyForgedHeight to forging height', async () => { @@ -1518,7 +1521,10 @@ describe('forger', () => { }, ], }); - expect(dbStub.put).toHaveBeenCalledWith('forger:previouslyForged', maxHeightResult); + expect(dbStub.set).toHaveBeenCalledWith( + Buffer.from('forger:previouslyForged'), + maxHeightResult, + ); }); it('should not set maxPreviouslyForgedHeight to next height if lower', async () => { @@ -1545,7 +1551,7 @@ describe('forger', () => { header: { height: 10 }, } as Block, }); - expect(dbStub.put).not.toHaveBeenCalled(); + expect(dbStub.set).not.toHaveBeenCalled(); }); it('should include seed reveal as specified in the block', async () => { diff --git a/framework/test/unit/node/network/network.spec.ts b/framework/test/unit/node/network/network.spec.ts index c2b21ba800d..30eb42fc7b1 100644 --- a/framework/test/unit/node/network/network.spec.ts +++ b/framework/test/unit/node/network/network.spec.ts @@ -12,7 +12,7 @@ * Removal or modification of this copyright notice is prohibited. */ -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { P2P } from '@liskhq/lisk-p2p'; import { Network } from '../../../../src/node/network'; import { Logger } from '../../../../src/logger'; @@ -26,7 +26,7 @@ describe('network', () => { let network: Network; jest.useFakeTimers(); beforeEach(() => { - const db = new KVStore('~/.lisk/stubbed'); + const db = new Database('~/.lisk/stubbed'); network = new Network({ nodeDB: db, networkVersion: '2.0', @@ -165,7 +165,7 @@ describe('network', () => { describe('previousPeers', () => { const getDBStub = jest.fn(); - const putDBStub = jest.fn(); + const setDBStub = jest.fn(); const previousPeers = [ { @@ -181,10 +181,10 @@ describe('network', () => { const previousPeersBuffer = Buffer.from(JSON.stringify(previousPeers), 'utf8'); beforeEach(() => { - const db = new KVStore('~/.lisk/stubbed'); + const db = new Database('~/.lisk/stubbed'); db.get = getDBStub; - db.put = putDBStub; + db.set = setDBStub; getDBStub.mockResolvedValue(previousPeersBuffer); @@ -218,7 +218,7 @@ describe('network', () => { } as any; jest.advanceTimersByTime(600000); - expect(putDBStub).toHaveBeenCalledTimes(1); + expect(setDBStub).toHaveBeenCalledTimes(1); }); }); }); diff --git a/framework/test/unit/node/node.spec.ts b/framework/test/unit/node/node.spec.ts index 8fbe0989d72..1cb5eab8cee 100644 --- a/framework/test/unit/node/node.spec.ts +++ b/framework/test/unit/node/node.spec.ts @@ -14,7 +14,7 @@ import { BFT } from '@liskhq/lisk-bft'; import { codec } from '@liskhq/lisk-codec'; -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { TransactionPool } from '@liskhq/lisk-transaction-pool'; import { when } from 'jest-when'; import { InMemoryChannel } from '../../../src/controller/channels'; @@ -35,9 +35,9 @@ describe('Node', () => { let node: Node; let subscribedEvents: any; const stubs: any = {}; - let blockchainDB: KVStore; - let forgerDB: KVStore; - let nodeDB: KVStore; + let blockchainDB: Database; + let forgerDB: Database; + let nodeDB: Database; let tokenModule: BaseModule; let dposModule: BaseModule; @@ -53,9 +53,9 @@ describe('Node', () => { jest.spyOn(Processor.prototype, 'init').mockResolvedValue(undefined); jest.spyOn(Synchronizer.prototype, 'init').mockResolvedValue(undefined); - blockchainDB = new KVStore('blockchain.db'); - forgerDB = new KVStore('forger.db'); - nodeDB = new KVStore('node.db'); + blockchainDB = new Database('blockchain.db'); + forgerDB = new Database('forger.db'); + nodeDB = new Database('node.db'); tokenModule = new TokenModule(nodeOptions.genesisConfig); dposModule = new DPoSModule(nodeOptions.genesisConfig); diff --git a/framework/test/unit/node/synchronizer/block_synchronization_mechanism/block_synchronization_mechanism.spec.ts b/framework/test/unit/node/synchronizer/block_synchronization_mechanism/block_synchronization_mechanism.spec.ts index c45df3f3c3b..fe169a87620 100644 --- a/framework/test/unit/node/synchronizer/block_synchronization_mechanism/block_synchronization_mechanism.spec.ts +++ b/framework/test/unit/node/synchronizer/block_synchronization_mechanism/block_synchronization_mechanism.spec.ts @@ -12,7 +12,7 @@ * Removal or modification of this copyright notice is prohibited. */ -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { when } from 'jest-when'; import { codec } from '@liskhq/lisk-codec'; import { Block, Chain, BlockHeader } from '@liskhq/lisk-chain'; @@ -81,7 +81,7 @@ describe('block_synchronization_mechanism', () => { channelMock = new ChannelMock(); - const blockchainDB = new KVStore('blockchain.db'); + const blockchainDB = new Database('blockchain.db'); networkMock = { requestFromPeer: jest.fn(), diff --git a/framework/test/unit/node/synchronizer/fast_chain_switching_mechanism/fast_chain_switching_mechanism.spec.ts b/framework/test/unit/node/synchronizer/fast_chain_switching_mechanism/fast_chain_switching_mechanism.spec.ts index 371bfd95636..3a4b2a2cbd0 100644 --- a/framework/test/unit/node/synchronizer/fast_chain_switching_mechanism/fast_chain_switching_mechanism.spec.ts +++ b/framework/test/unit/node/synchronizer/fast_chain_switching_mechanism/fast_chain_switching_mechanism.spec.ts @@ -13,7 +13,7 @@ */ import { when } from 'jest-when'; -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { codec } from '@liskhq/lisk-codec'; import { Block, Chain } from '@liskhq/lisk-chain'; import { BFT } from '@liskhq/lisk-bft'; @@ -73,7 +73,7 @@ describe('fast_chain_switching_mechanism', () => { channelMock = new ChannelMock(); - const blockchainDB = new KVStore('blockchain.db'); + const blockchainDB = new Database('blockchain.db'); chainModule = new Chain({ networkIdentifier: defaultNetworkIdentifier, diff --git a/framework/test/unit/node/synchronizer/synchronizer.spec.ts b/framework/test/unit/node/synchronizer/synchronizer.spec.ts index a0c90834dd9..0ecc4c1fdba 100644 --- a/framework/test/unit/node/synchronizer/synchronizer.spec.ts +++ b/framework/test/unit/node/synchronizer/synchronizer.spec.ts @@ -16,7 +16,7 @@ import { when } from 'jest-when'; import { codec } from '@liskhq/lisk-codec'; import { Block, Chain, Transaction } from '@liskhq/lisk-chain'; import { BFT } from '@liskhq/lisk-bft'; -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { getAddressAndPublicKeyFromPassphrase, signDataWithPassphrase, @@ -73,7 +73,7 @@ describe('Synchronizer', () => { }; channelMock = new ChannelMock(); - const blockchainDB = new KVStore('blockchain.db'); + const blockchainDB = new Database('blockchain.db'); chainModule = new Chain({ networkIdentifier: defaultNetworkIdentifier, diff --git a/framework/test/unit/node/utils/backup.spec.ts b/framework/test/unit/node/utils/backup.spec.ts new file mode 100644 index 00000000000..aad1462521d --- /dev/null +++ b/framework/test/unit/node/utils/backup.spec.ts @@ -0,0 +1,60 @@ +/* + * Copyright © 2023 Lisk Foundation + * + * See the LICENSE file at the top-level directory of this distribution + * for licensing information. + * + * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, + * no part of this software, including this file, may be copied, modified, + * propagated, or distributed except according to the terms contained in the + * LICENSE file. + * + * Removal or modification of this copyright notice is prohibited. + */ + +import * as os from 'os'; +import * as path from 'path'; +import * as fs from 'fs'; +import { Database } from '@liskhq/lisk-db'; +import { getRandomBytes } from '@liskhq/lisk-cryptography'; +import { backupDatabase } from '../../../../src/node/utils/backup'; + +describe('backup', () => { + const getDataPath = (name: string) => path.join(os.tmpdir(), Date.now().toString(), name); + + it('should create backup', async () => { + const dbName = 'db-1'; + const dataPath = getDataPath(dbName); + const db = new Database(path.join(dataPath, dbName)); + const key = getRandomBytes(10); + await db.set(key, getRandomBytes(20)); + + await backupDatabase(dataPath, db); + + expect(fs.existsSync(path.join(dataPath, 'backup'))).toBeTrue(); + db.close(); + }); + + it('should remove old backup and create new one if exist', async () => { + const dbName = 'db-2'; + const dataPath = getDataPath(dbName); + const db = new Database(path.join(dataPath, dbName)); + const key = getRandomBytes(10); + await db.set(key, getRandomBytes(20)); + + await backupDatabase(dataPath, db); + const key2 = getRandomBytes(10); + await db.set(key2, getRandomBytes(20)); + + expect(fs.existsSync(path.join(dataPath, 'backup'))).toBeTrue(); + + await backupDatabase(dataPath, db); + + expect(fs.existsSync(path.join(dataPath, 'backup'))).toBeTrue(); + db.close(); + const backupDB = new Database(path.join(dataPath, 'backup')); + + await expect(backupDB.has(key2)).resolves.toBeTrue(); + backupDB.close(); + }); +}); diff --git a/framework/test/unit/schema/__snapshots__/application_schema.spec.ts.snap b/framework/test/unit/schema/__snapshots__/application_schema.spec.ts.snap index abe0fe65e2e..5c3ff51ec9d 100644 --- a/framework/test/unit/schema/__snapshots__/application_schema.spec.ts.snap +++ b/framework/test/unit/schema/__snapshots__/application_schema.spec.ts.snap @@ -6,6 +6,9 @@ Object { "$id": "#/config", "additionalProperties": false, "default": Object { + "backup": Object { + "height": 0, + }, "forging": Object { "delegates": Array [], "force": false, @@ -60,6 +63,19 @@ Object { "version": "0.0.0", }, "properties": Object { + "backup": Object { + "properties": Object { + "height": Object { + "description": "Height at which the DB backup should be taken.", + "minimum": 0, + "type": "integer", + }, + }, + "required": Array [ + "height", + ], + "type": "object", + }, "forging": Object { "properties": Object { "defaultPassword": Object { @@ -451,6 +467,7 @@ Object { "required": Array [ "version", "networkVersion", + "backup", "rpc", "genesisConfig", "forging", diff --git a/framework/test/utils/kv_store.ts b/framework/test/utils/kv_store.ts index 4ee0dda2e2f..550e21ecf4e 100644 --- a/framework/test/utils/kv_store.ts +++ b/framework/test/utils/kv_store.ts @@ -12,7 +12,7 @@ * Removal or modification of this copyright notice is prohibited. */ import * as fs from 'fs-extra'; -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; export const defaultPath = '/tmp/lisk-framework/test'; @@ -24,11 +24,29 @@ export const createDB = (name: string) => { const forgerDBPath = getPath(name); return { path, - nodeDB: new KVStore(`${path}/node.db`), - blockchainDB: new KVStore(`${path}/blockchain.db`), + nodeDB: new Database(`${path}/node.db`), + blockchainDB: new Database(`${path}/blockchain.db`), forgerDBPath, - forgerDB: new KVStore(`${path}/forger.db`), + forgerDB: new Database(`${path}/forger.db`), }; }; +export const formatInt = (num: number | bigint): string => { + let buf: Buffer; + if (typeof num === 'bigint') { + if (num < BigInt(0)) { + throw new Error('Negative number cannot be formatted'); + } + buf = Buffer.alloc(8); + buf.writeBigUInt64BE(num); + } else { + if (num < 0) { + throw new Error('Negative number cannot be formatted'); + } + buf = Buffer.alloc(4); + buf.writeUInt32BE(num, 0); + } + return buf.toString('binary'); +}; + export const removeDB = (name: string): void => fs.removeSync(getPath(name)); diff --git a/framework/test/utils/node/node.ts b/framework/test/utils/node/node.ts index 95458c3dde0..60357d674b2 100644 --- a/framework/test/utils/node/node.ts +++ b/framework/test/utils/node/node.ts @@ -13,7 +13,7 @@ * */ -import { KVStore } from '@liskhq/lisk-db'; +import { Database } from '@liskhq/lisk-db'; import { objects } from '@liskhq/lisk-utils'; import { nodeConfig } from '../configs'; import { createMockChannel, createMockBus } from '../channel'; @@ -53,8 +53,8 @@ export const fakeLogger = createLogger({ /* eslint-enable @typescript-eslint/no-empty-function, @typescript-eslint/explicit-module-boundary-types */ export const createAndLoadNode = async ( - blockchainDB: KVStore, - forgerDB: KVStore, + blockchainDB: Database, + forgerDB: Database, logger: Logger = fakeLogger, channel?: InMemoryChannel, options?: NodeOptions, @@ -64,8 +64,8 @@ export const createAndLoadNode = async ( }); const nodeDB = ({ get: jest.fn(), - put: jest.fn(), - } as unknown) as KVStore; + set: jest.fn(), + } as unknown) as Database; await chainModule.init({ genesisBlockJSON, dataPath: defaultPath, diff --git a/package.json b/package.json index 06c5bbc888e..d64b7790cd0 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "workspaces": { @@ -58,7 +58,7 @@ } }, "devDependencies": { - "@types/node": "12.20.6", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "eslint": "7.22.0", @@ -69,7 +69,7 @@ "istanbul-lib-coverage": "3.0.0", "istanbul-lib-report": "3.0.0", "istanbul-reports": "3.0.0", - "lerna": "4.0.0", + "lerna": "6.4.1", "lint-staged": "10.5.4", "prettier": "2.2.1", "typescript": "4.2.3", diff --git a/protocol-specs/package.json b/protocol-specs/package.json index f650e47ca95..b5017858cf7 100644 --- a/protocol-specs/package.json +++ b/protocol-specs/package.json @@ -14,15 +14,15 @@ "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "dependencies": { "@liskhq/bignum": "1.3.1", - "@liskhq/lisk-codec": "0.2.2", - "@liskhq/lisk-cryptography": "3.2.1", - "@liskhq/lisk-passphrase": "3.1.1", - "@liskhq/lisk-validator": "0.6.2", + "@liskhq/lisk-codec": "0.3.0-rc.0", + "@liskhq/lisk-cryptography": "3.3.0-rc.0", + "@liskhq/lisk-passphrase": "3.2.0-rc.0", + "@liskhq/lisk-validator": "0.7.0-rc.0", "protobufjs": "6.9.0" }, "devDependencies": { diff --git a/sdk/package.json b/sdk/package.json index 5e4aa532cc7..c73c5f81f68 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "lisk-sdk", - "version": "5.2.2", + "version": "5.3.0-rc.0", "description": "Official SDK for the Lisk blockchain application platform", "author": "Lisk Foundation , lightcurve GmbH ", "license": "Apache-2.0", @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -29,25 +29,25 @@ "build": "tsc" }, "dependencies": { - "@liskhq/lisk-api-client": "^5.1.6", - "@liskhq/lisk-bft": "^0.3.4", - "@liskhq/lisk-chain": "^0.3.4", - "@liskhq/lisk-codec": "^0.2.2", - "@liskhq/lisk-cryptography": "^3.2.1", - "@liskhq/lisk-db": "^0.2.1", - "@liskhq/lisk-framework-forger-plugin": "^0.2.7", - "@liskhq/lisk-framework-http-api-plugin": "^0.2.7", - "@liskhq/lisk-framework-monitor-plugin": "^0.2.7", - "@liskhq/lisk-framework-report-misbehavior-plugin": "^0.2.7", - "@liskhq/lisk-genesis": "^0.2.4", - "@liskhq/lisk-p2p": "^0.7.3", - "@liskhq/lisk-passphrase": "^3.1.1", - "@liskhq/lisk-transaction-pool": "^0.5.3", - "@liskhq/lisk-transactions": "^5.2.2", - "@liskhq/lisk-tree": "^0.2.2", - "@liskhq/lisk-utils": "^0.2.1", - "@liskhq/lisk-validator": "^0.6.2", - "lisk-framework": "^0.9.2" + "@liskhq/lisk-api-client": "^5.2.0-rc.0", + "@liskhq/lisk-bft": "^0.4.0-rc.0", + "@liskhq/lisk-chain": "^0.4.0-rc.0", + "@liskhq/lisk-codec": "^0.3.0-rc.0", + "@liskhq/lisk-cryptography": "^3.3.0-rc.0", + "@liskhq/lisk-db": "^0.3.6", + "@liskhq/lisk-framework-forger-plugin": "^0.3.0-rc.0", + "@liskhq/lisk-framework-http-api-plugin": "^0.3.0-rc.0", + "@liskhq/lisk-framework-monitor-plugin": "^0.3.0-rc.0", + "@liskhq/lisk-framework-report-misbehavior-plugin": "^0.3.0-rc.0", + "@liskhq/lisk-genesis": "^0.3.0-rc.0", + "@liskhq/lisk-p2p": "^0.8.0-rc.0", + "@liskhq/lisk-passphrase": "^3.2.0-rc.0", + "@liskhq/lisk-transaction-pool": "^0.6.0-rc.0", + "@liskhq/lisk-transactions": "^5.3.0-rc.0", + "@liskhq/lisk-tree": "^0.3.0-rc.0", + "@liskhq/lisk-utils": "^0.3.0-rc.0", + "@liskhq/lisk-validator": "^0.7.0-rc.0", + "lisk-framework": "^0.10.0-rc.0" }, "devDependencies": { "eslint": "7.22.0", diff --git a/templates/package.json.tmpl b/templates/package.json.tmpl index c5ee8fe837e..24aea10a93a 100644 --- a/templates/package.json.tmpl +++ b/templates/package.json.tmpl @@ -17,7 +17,7 @@ "url": "https://github.com/LiskHQ/lisk-sdk/issues" }, "engines": { - "node": ">=16.14.1 <=16", + "node": ">=18.12.0 <=18", "npm": ">=8.1.0" }, "main": "dist-node/index.js", @@ -40,7 +40,7 @@ "devDependencies": { "@types/jest": "26.0.21", "@types/jest-when": "2.7.2", - "@types/node": "12.20.6", + "@types/node": "18.15.3", "@typescript-eslint/eslint-plugin": "4.19.0", "@typescript-eslint/parser": "4.19.0", "eslint": "7.22.0", diff --git a/yarn.lock b/yarn.lock index f297348a9ef..1ccd44c92de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1504,6 +1504,11 @@ resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" integrity "sha1-MKqCXxHUOGcdWFvUTn/VZFNfwhA= sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==" +"@gar/promisify@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + "@hapi/address@2.x.x": version "2.1.4" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -1548,7 +1553,12 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@isaacs/string-locale-compare@^1.0.1": +"@hutson/parse-repository-url@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" + integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== + +"@isaacs/string-locale-compare@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" integrity "sha1-KRwifpP9QHqW7NWYeaNYCRIOQys= sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==" @@ -1837,676 +1847,690 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@lerna/add@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-4.0.0.tgz#c36f57d132502a57b9e7058d1548b7a565ef183f" - integrity sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng== - dependencies: - "@lerna/bootstrap" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/validation-error" "4.0.0" +"@lerna/add@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-6.4.1.tgz#fa20fe9ff875dc5758141262c8cde0d9a6481ec4" + integrity sha512-YSRnMcsdYnQtQQK0NSyrS9YGXvB3jzvx183o+JTH892MKzSlBqwpBHekCknSibyxga1HeZ0SNKQXgsHAwWkrRw== + dependencies: + "@lerna/bootstrap" "6.4.1" + "@lerna/command" "6.4.1" + "@lerna/filter-options" "6.4.1" + "@lerna/npm-conf" "6.4.1" + "@lerna/validation-error" "6.4.1" dedent "^0.7.0" - npm-package-arg "^8.1.0" + npm-package-arg "8.1.1" p-map "^4.0.0" - pacote "^11.2.6" + pacote "^13.6.1" semver "^7.3.4" -"@lerna/bootstrap@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-4.0.0.tgz#5f5c5e2c6cfc8fcec50cb2fbe569a8c607101891" - integrity sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/has-npm-version" "4.0.0" - "@lerna/npm-install" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/rimraf-dir" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/symlink-binary" "4.0.0" - "@lerna/symlink-dependencies" "4.0.0" - "@lerna/validation-error" "4.0.0" +"@lerna/bootstrap@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-6.4.1.tgz#a76ff22c3160d134fb60bcfddb3f8b0759b4f1ff" + integrity sha512-64cm0mnxzxhUUjH3T19ZSjPdn28vczRhhTXhNAvOhhU0sQgHrroam1xQC1395qbkV3iosSertlu8e7xbXW033w== + dependencies: + "@lerna/command" "6.4.1" + "@lerna/filter-options" "6.4.1" + "@lerna/has-npm-version" "6.4.1" + "@lerna/npm-install" "6.4.1" + "@lerna/package-graph" "6.4.1" + "@lerna/pulse-till-done" "6.4.1" + "@lerna/rimraf-dir" "6.4.1" + "@lerna/run-lifecycle" "6.4.1" + "@lerna/run-topologically" "6.4.1" + "@lerna/symlink-binary" "6.4.1" + "@lerna/symlink-dependencies" "6.4.1" + "@lerna/validation-error" "6.4.1" + "@npmcli/arborist" "5.3.0" dedent "^0.7.0" get-port "^5.1.1" multimatch "^5.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" + npm-package-arg "8.1.1" + npmlog "^6.0.2" p-map "^4.0.0" p-map-series "^2.1.0" p-waterfall "^2.1.1" - read-package-tree "^5.3.1" semver "^7.3.4" -"@lerna/changed@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-4.0.0.tgz#b9fc76cea39b9292a6cd263f03eb57af85c9270b" - integrity sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ== +"@lerna/changed@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-6.4.1.tgz#4da6d08df7c53bc90c0c0d9d04839f91dd6d70a9" + integrity sha512-Z/z0sTm3l/iZW0eTSsnQpcY5d6eOpNO0g4wMOK+hIboWG0QOTc8b28XCnfCUO+33UisKl8PffultgoaHMKkGgw== dependencies: - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/listable" "4.0.0" - "@lerna/output" "4.0.0" + "@lerna/collect-updates" "6.4.1" + "@lerna/command" "6.4.1" + "@lerna/listable" "6.4.1" + "@lerna/output" "6.4.1" -"@lerna/check-working-tree@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz#257e36a602c00142e76082a19358e3e1ae8dbd58" - integrity sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q== +"@lerna/check-working-tree@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-6.4.1.tgz#c0dcb5c474faf214865058e2fedda44962367a4e" + integrity sha512-EnlkA1wxaRLqhJdn9HX7h+JYxqiTK9aWEFOPqAE8lqjxHn3RpM9qBp1bAdL7CeUk3kN1lvxKwDEm0mfcIyMbPA== dependencies: - "@lerna/collect-uncommitted" "4.0.0" - "@lerna/describe-ref" "4.0.0" - "@lerna/validation-error" "4.0.0" + "@lerna/collect-uncommitted" "6.4.1" + "@lerna/describe-ref" "6.4.1" + "@lerna/validation-error" "6.4.1" -"@lerna/child-process@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-4.0.0.tgz#341b96a57dffbd9705646d316e231df6fa4df6e1" - integrity sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q== +"@lerna/child-process@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-6.4.1.tgz#d697fb769f4c5b57c59f87471eb9b3d65be904a3" + integrity sha512-dvEKK0yKmxOv8pccf3I5D/k+OGiLxQp5KYjsrDtkes2pjpCFfQAMbmpol/Tqx6w/2o2rSaRrLsnX8TENo66FsA== dependencies: chalk "^4.1.0" execa "^5.0.0" strong-log-transformer "^2.1.0" -"@lerna/clean@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-4.0.0.tgz#8f778b6f2617aa2a936a6b5e085ae62498e57dc5" - integrity sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/rimraf-dir" "4.0.0" +"@lerna/clean@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-6.4.1.tgz#e9ee365ee6879ee998b78b3269fad02b5f385771" + integrity sha512-FuVyW3mpos5ESCWSkQ1/ViXyEtsZ9k45U66cdM/HnteHQk/XskSQw0sz9R+whrZRUDu6YgYLSoj1j0YAHVK/3A== + dependencies: + "@lerna/command" "6.4.1" + "@lerna/filter-options" "6.4.1" + "@lerna/prompt" "6.4.1" + "@lerna/pulse-till-done" "6.4.1" + "@lerna/rimraf-dir" "6.4.1" p-map "^4.0.0" p-map-series "^2.1.0" p-waterfall "^2.1.1" -"@lerna/cli@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-4.0.0.tgz#8eabd334558836c1664df23f19acb95e98b5bbf3" - integrity sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA== +"@lerna/cli@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-6.4.1.tgz#2b2d093baace40e822caee8c90f698e98a437a2f" + integrity sha512-2pNa48i2wzFEd9LMPKWI3lkW/3widDqiB7oZUM1Xvm4eAOuDWc9I3RWmAUIVlPQNf3n4McxJCvsZZ9BpQN50Fg== dependencies: - "@lerna/global-options" "4.0.0" + "@lerna/global-options" "6.4.1" dedent "^0.7.0" - npmlog "^4.1.2" + npmlog "^6.0.2" yargs "^16.2.0" -"@lerna/collect-uncommitted@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz#855cd64612969371cfc2453b90593053ff1ba779" - integrity sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g== +"@lerna/collect-uncommitted@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-6.4.1.tgz#ae62bcaa5ecaa5b7fbc41eb9ae90b6711be156ec" + integrity sha512-5IVQGhlLrt7Ujc5ooYA1Xlicdba/wMcDSnbQwr8ufeqnzV2z4729pLCVk55gmi6ZienH/YeBPHxhB5u34ofE0Q== dependencies: - "@lerna/child-process" "4.0.0" + "@lerna/child-process" "6.4.1" chalk "^4.1.0" - npmlog "^4.1.2" + npmlog "^6.0.2" -"@lerna/collect-updates@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-4.0.0.tgz#8e208b1bafd98a372ff1177f7a5e288f6bea8041" - integrity sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw== +"@lerna/collect-updates@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-6.4.1.tgz#4f7cf1c411f3253d0104e7b64cb0aa315a5dfc81" + integrity sha512-pzw2/FC+nIqYkknUHK9SMmvP3MsLEjxI597p3WV86cEDN3eb1dyGIGuHiKShtjvT08SKSwpTX+3bCYvLVxtC5Q== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/describe-ref" "4.0.0" + "@lerna/child-process" "6.4.1" + "@lerna/describe-ref" "6.4.1" minimatch "^3.0.4" - npmlog "^4.1.2" + npmlog "^6.0.2" slash "^3.0.0" -"@lerna/command@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-4.0.0.tgz#991c7971df8f5bf6ae6e42c808869a55361c1b98" - integrity sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/project" "4.0.0" - "@lerna/validation-error" "4.0.0" - "@lerna/write-log-file" "4.0.0" +"@lerna/command@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-6.4.1.tgz#96c4f5d88792c6c638738c66fcc3a7ad0d2487e2" + integrity sha512-3Lifj8UTNYbRad8JMP7IFEEdlIyclWyyvq/zvNnTS9kCOEymfmsB3lGXr07/AFoi6qDrvN64j7YSbPZ6C6qonw== + dependencies: + "@lerna/child-process" "6.4.1" + "@lerna/package-graph" "6.4.1" + "@lerna/project" "6.4.1" + "@lerna/validation-error" "6.4.1" + "@lerna/write-log-file" "6.4.1" clone-deep "^4.0.1" dedent "^0.7.0" execa "^5.0.0" is-ci "^2.0.0" - npmlog "^4.1.2" + npmlog "^6.0.2" -"@lerna/conventional-commits@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz#660fb2c7b718cb942ead70110df61f18c6f99750" - integrity sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw== +"@lerna/conventional-commits@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-6.4.1.tgz#b8d44a8a71865b4d37b900137acef623f3a0a11b" + integrity sha512-NIvCOjStjQy5O8VojB7/fVReNNDEJOmzRG2sTpgZ/vNS4AzojBQZ/tobzhm7rVkZZ43R9srZeuhfH9WgFsVUSA== dependencies: - "@lerna/validation-error" "4.0.0" + "@lerna/validation-error" "6.4.1" conventional-changelog-angular "^5.0.12" - conventional-changelog-core "^4.2.2" + conventional-changelog-core "^4.2.4" conventional-recommended-bump "^6.1.0" fs-extra "^9.1.0" get-stream "^6.0.0" - lodash.template "^4.5.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" + npm-package-arg "8.1.1" + npmlog "^6.0.2" pify "^5.0.0" semver "^7.3.4" -"@lerna/create-symlink@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-4.0.0.tgz#8c5317ce5ae89f67825443bd7651bf4121786228" - integrity sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig== +"@lerna/create-symlink@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-6.4.1.tgz#0efec22d78dd814a70d8345ced52c39beb05874b" + integrity sha512-rNivHFYV1GAULxnaTqeGb2AdEN2OZzAiZcx5CFgj45DWXQEGwPEfpFmCSJdXhFZbyd3K0uiDlAXjAmV56ov3FQ== dependencies: - cmd-shim "^4.1.0" + cmd-shim "^5.0.0" fs-extra "^9.1.0" - npmlog "^4.1.2" + npmlog "^6.0.2" -"@lerna/create@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-4.0.0.tgz#b6947e9b5dfb6530321952998948c3e63d64d730" - integrity sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag== +"@lerna/create@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-6.4.1.tgz#3fc8556adadff1265432a6cee69ee14465798e71" + integrity sha512-qfQS8PjeGDDlxEvKsI/tYixIFzV2938qLvJohEKWFn64uvdLnXCamQ0wvRJST8p1ZpHWX4AXrB+xEJM3EFABrA== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/validation-error" "4.0.0" + "@lerna/child-process" "6.4.1" + "@lerna/command" "6.4.1" + "@lerna/npm-conf" "6.4.1" + "@lerna/validation-error" "6.4.1" dedent "^0.7.0" fs-extra "^9.1.0" - globby "^11.0.2" - init-package-json "^2.0.2" - npm-package-arg "^8.1.0" + init-package-json "^3.0.2" + npm-package-arg "8.1.1" p-reduce "^2.1.0" - pacote "^11.2.6" + pacote "^13.6.1" pify "^5.0.0" semver "^7.3.4" slash "^3.0.0" validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" - whatwg-url "^8.4.0" + validate-npm-package-name "^4.0.0" yargs-parser "20.2.4" -"@lerna/describe-ref@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-4.0.0.tgz#53c53b4ea65fdceffa072a62bfebe6772c45d9ec" - integrity sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ== +"@lerna/describe-ref@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-6.4.1.tgz#c0a0beca5dfeada3a39b030f69c8c98f5623bb13" + integrity sha512-MXGXU8r27wl355kb1lQtAiu6gkxJ5tAisVJvFxFM1M+X8Sq56icNoaROqYrvW6y97A9+3S8Q48pD3SzkFv31Xw== dependencies: - "@lerna/child-process" "4.0.0" - npmlog "^4.1.2" + "@lerna/child-process" "6.4.1" + npmlog "^6.0.2" -"@lerna/diff@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-4.0.0.tgz#6d3071817aaa4205a07bf77cfc6e932796d48b92" - integrity sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag== +"@lerna/diff@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-6.4.1.tgz#ca9e62a451ce199faaa7ef5990ded3fad947e2f9" + integrity sha512-TnzJsRPN2fOjUrmo5Boi43fJmRtBJDsVgwZM51VnLoKcDtO1kcScXJ16Od2Xx5bXbp5dES5vGDLL/USVVWfeAg== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/validation-error" "4.0.0" - npmlog "^4.1.2" + "@lerna/child-process" "6.4.1" + "@lerna/command" "6.4.1" + "@lerna/validation-error" "6.4.1" + npmlog "^6.0.2" -"@lerna/exec@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-4.0.0.tgz#eb6cb95cb92d42590e9e2d628fcaf4719d4a8be6" - integrity sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/profiler" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" +"@lerna/exec@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-6.4.1.tgz#493ce805b6959e8299ec58fab8d31fd01ed209ba" + integrity sha512-KAWfuZpoyd3FMejHUORd0GORMr45/d9OGAwHitfQPVs4brsxgQFjbbBEEGIdwsg08XhkDb4nl6IYVASVTq9+gA== + dependencies: + "@lerna/child-process" "6.4.1" + "@lerna/command" "6.4.1" + "@lerna/filter-options" "6.4.1" + "@lerna/profiler" "6.4.1" + "@lerna/run-topologically" "6.4.1" + "@lerna/validation-error" "6.4.1" p-map "^4.0.0" -"@lerna/filter-options@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-4.0.0.tgz#ac94cc515d7fa3b47e2f7d74deddeabb1de5e9e6" - integrity sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw== +"@lerna/filter-options@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-6.4.1.tgz#571d37436878fab8b2ac84ca1c3863acd3515cfb" + integrity sha512-efJh3lP2T+9oyNIP2QNd9EErf0Sm3l3Tz8CILMsNJpjSU6kO43TYWQ+L/ezu2zM99KVYz8GROLqDcHRwdr8qUA== dependencies: - "@lerna/collect-updates" "4.0.0" - "@lerna/filter-packages" "4.0.0" + "@lerna/collect-updates" "6.4.1" + "@lerna/filter-packages" "6.4.1" dedent "^0.7.0" - npmlog "^4.1.2" + npmlog "^6.0.2" -"@lerna/filter-packages@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-4.0.0.tgz#b1f70d70e1de9cdd36a4e50caa0ac501f8d012f2" - integrity sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA== +"@lerna/filter-packages@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-6.4.1.tgz#e138b182816a049c81de094069cad12aaa41a236" + integrity sha512-LCMGDGy4b+Mrb6xkcVzp4novbf5MoZEE6ZQF1gqG0wBWqJzNcKeFiOmf352rcDnfjPGZP6ct5+xXWosX/q6qwg== dependencies: - "@lerna/validation-error" "4.0.0" + "@lerna/validation-error" "6.4.1" multimatch "^5.0.0" - npmlog "^4.1.2" + npmlog "^6.0.2" -"@lerna/get-npm-exec-opts@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz#dc955be94a4ae75c374ef9bce91320887d34608f" - integrity sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ== +"@lerna/get-npm-exec-opts@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-6.4.1.tgz#42681f6db4238277889b3423f87308eda5dc01ec" + integrity sha512-IvN/jyoklrWcjssOf121tZhOc16MaFPOu5ii8a+Oy0jfTriIGv929Ya8MWodj75qec9s+JHoShB8yEcMqZce4g== dependencies: - npmlog "^4.1.2" + npmlog "^6.0.2" -"@lerna/get-packed@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-4.0.0.tgz#0989d61624ac1f97e393bdad2137c49cd7a37823" - integrity sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w== +"@lerna/get-packed@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-6.4.1.tgz#b3b8b907002d50bf8792dd97e2729249c0b0e0cd" + integrity sha512-uaDtYwK1OEUVIXn84m45uPlXShtiUcw6V9TgB3rvHa3rrRVbR7D4r+JXcwVxLGrAS7LwxVbYWEEO/Z/bX7J/Lg== dependencies: fs-extra "^9.1.0" - ssri "^8.0.1" + ssri "^9.0.1" tar "^6.1.0" -"@lerna/github-client@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-4.0.0.tgz#2ced67721363ef70f8e12ffafce4410918f4a8a4" - integrity sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw== +"@lerna/github-client@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-6.4.1.tgz#25d19b440395a6039b9162ee58dadb9dce990ff0" + integrity sha512-ridDMuzmjMNlcDmrGrV9mxqwUKzt9iYqCPwVYJlRYrnE3jxyg+RdooquqskVFj11djcY6xCV2Q2V1lUYwF+PmA== dependencies: - "@lerna/child-process" "4.0.0" + "@lerna/child-process" "6.4.1" "@octokit/plugin-enterprise-rest" "^6.0.1" - "@octokit/rest" "^18.1.0" - git-url-parse "^11.4.4" - npmlog "^4.1.2" + "@octokit/rest" "^19.0.3" + git-url-parse "^13.1.0" + npmlog "^6.0.2" -"@lerna/gitlab-client@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz#00dad73379c7b38951d4b4ded043504c14e2b67d" - integrity sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA== +"@lerna/gitlab-client@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-6.4.1.tgz#a01d962dc52a55b8272ea52bc54d72c5fd9db6f9" + integrity sha512-AdLG4d+jbUvv0jQyygQUTNaTCNSMDxioJso6aAjQ/vkwyy3fBJ6FYzX74J4adSfOxC2MQZITFyuG+c9ggp7pyQ== dependencies: node-fetch "^2.6.1" - npmlog "^4.1.2" - whatwg-url "^8.4.0" + npmlog "^6.0.2" -"@lerna/global-options@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-4.0.0.tgz#c7d8b0de6a01d8a845e2621ea89e7f60f18c6a5f" - integrity sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ== +"@lerna/global-options@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-6.4.1.tgz#7df76b1d38500606a8dc3ce0804bab6894c4f4a3" + integrity sha512-UTXkt+bleBB8xPzxBPjaCN/v63yQdfssVjhgdbkQ//4kayaRA65LyEtJTi9rUrsLlIy9/rbeb+SAZUHg129fJg== -"@lerna/has-npm-version@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz#d3fc3292c545eb28bd493b36e6237cf0279f631c" - integrity sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg== +"@lerna/has-npm-version@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-6.4.1.tgz#04eba7df687e665294834253b659430efc1e01bb" + integrity sha512-vW191w5iCkwNWWWcy4542ZOpjKYjcP/pU3o3+w6NM1J3yBjWZcNa8lfzQQgde2QkGyNi+i70o6wIca1o0sdKwg== dependencies: - "@lerna/child-process" "4.0.0" + "@lerna/child-process" "6.4.1" semver "^7.3.4" -"@lerna/import@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-4.0.0.tgz#bde656c4a451fa87ae41733ff8a8da60547c5465" - integrity sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/validation-error" "4.0.0" +"@lerna/import@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-6.4.1.tgz#b5696fed68a32d32398d66f95192267f1da5110e" + integrity sha512-oDg8g1PNrCM1JESLsG3rQBtPC+/K9e4ohs0xDKt5E6p4l7dc0Ib4oo0oCCT/hGzZUlNwHxrc2q9JMRzSAn6P/Q== + dependencies: + "@lerna/child-process" "6.4.1" + "@lerna/command" "6.4.1" + "@lerna/prompt" "6.4.1" + "@lerna/pulse-till-done" "6.4.1" + "@lerna/validation-error" "6.4.1" dedent "^0.7.0" fs-extra "^9.1.0" p-map-series "^2.1.0" -"@lerna/info@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-4.0.0.tgz#b9fb0e479d60efe1623603958a831a88b1d7f1fc" - integrity sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q== +"@lerna/info@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/info/-/info-6.4.1.tgz#30354fcb82c99b1f0ed753f957fbaca5b250c3fa" + integrity sha512-Ks4R7IndIr4vQXz+702gumPVhH6JVkshje0WKA3+ew2qzYZf68lU1sBe1OZsQJU3eeY2c60ax+bItSa7aaIHGw== dependencies: - "@lerna/command" "4.0.0" - "@lerna/output" "4.0.0" + "@lerna/command" "6.4.1" + "@lerna/output" "6.4.1" envinfo "^7.7.4" -"@lerna/init@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-4.0.0.tgz#dadff67e6dfb981e8ccbe0e6a310e837962f6c7a" - integrity sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ== +"@lerna/init@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-6.4.1.tgz#ea4905ca976189db4b0bf04d78919060146bf684" + integrity sha512-CXd/s/xgj0ZTAoOVyolOTLW2BG7uQOhWW4P/ktlwwJr9s3c4H/z+Gj36UXw3q5X1xdR29NZt7Vc6fvROBZMjUQ== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" + "@lerna/child-process" "6.4.1" + "@lerna/command" "6.4.1" + "@lerna/project" "6.4.1" fs-extra "^9.1.0" p-map "^4.0.0" write-json-file "^4.3.0" -"@lerna/link@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-4.0.0.tgz#c3a38aabd44279d714e90f2451e31b63f0fb65ba" - integrity sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w== +"@lerna/link@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-6.4.1.tgz#f31ed1f6aea1581e358a9ff545be78b61e923175" + integrity sha512-O8Rt7MAZT/WT2AwrB/+HY76ktnXA9cDFO9rhyKWZGTHdplbzuJgfsGzu8Xv0Ind+w+a8xLfqtWGPlwiETnDyrw== dependencies: - "@lerna/command" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/symlink-dependencies" "4.0.0" + "@lerna/command" "6.4.1" + "@lerna/package-graph" "6.4.1" + "@lerna/symlink-dependencies" "6.4.1" + "@lerna/validation-error" "6.4.1" p-map "^4.0.0" slash "^3.0.0" -"@lerna/list@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-4.0.0.tgz#24b4e6995bd73f81c556793fe502b847efd9d1d7" - integrity sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg== +"@lerna/list@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-6.4.1.tgz#12ad83902e148d1e5ba007149b72b14636f9f1ba" + integrity sha512-7a6AKgXgC4X7nK6twVPNrKCiDhrCiAhL/FE4u9HYhHqw9yFwyq8Qe/r1RVOkAOASNZzZ8GuBvob042bpunupCw== dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/listable" "4.0.0" - "@lerna/output" "4.0.0" + "@lerna/command" "6.4.1" + "@lerna/filter-options" "6.4.1" + "@lerna/listable" "6.4.1" + "@lerna/output" "6.4.1" -"@lerna/listable@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-4.0.0.tgz#d00d6cb4809b403f2b0374fc521a78e318b01214" - integrity sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ== +"@lerna/listable@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-6.4.1.tgz#6f5c83865391c6beeb41802951c674e2de119bde" + integrity sha512-L8ANeidM10aoF8aL3L/771Bb9r/TRkbEPzAiC8Iy2IBTYftS87E3rT/4k5KBEGYzMieSKJaskSFBV0OQGYV1Cw== dependencies: - "@lerna/query-graph" "4.0.0" + "@lerna/query-graph" "6.4.1" chalk "^4.1.0" - columnify "^1.5.4" + columnify "^1.6.0" -"@lerna/log-packed@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-4.0.0.tgz#95168fe2e26ac6a71e42f4be857519b77e57a09f" - integrity sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ== +"@lerna/log-packed@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-6.4.1.tgz#43eae50d5c0cd906b1977a58b62b35541cf89ec1" + integrity sha512-Pwv7LnIgWqZH4vkM1rWTVF+pmWJu7d0ZhVwyhCaBJUsYbo+SyB2ZETGygo3Z/A+vZ/S7ImhEEKfIxU9bg5lScQ== dependencies: byte-size "^7.0.0" - columnify "^1.5.4" + columnify "^1.6.0" has-unicode "^2.0.1" - npmlog "^4.1.2" + npmlog "^6.0.2" -"@lerna/npm-conf@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-4.0.0.tgz#b259fd1e1cee2bf5402b236e770140ff9ade7fd2" - integrity sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw== +"@lerna/npm-conf@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-6.4.1.tgz#64dba237ff41472a24f96192669c1bc0dce15edb" + integrity sha512-Q+83uySGXYk3n1pYhvxtzyGwBGijYgYecgpiwRG1YNyaeGy+Mkrj19cyTWubT+rU/kM5c6If28+y9kdudvc7zQ== dependencies: config-chain "^1.1.12" pify "^5.0.0" -"@lerna/npm-dist-tag@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz#d1e99b4eccd3414142f0548ad331bf2d53f3257a" - integrity sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw== +"@lerna/npm-dist-tag@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-6.4.1.tgz#f14e7176f7e323284e8aa8636b44818a61738fd1" + integrity sha512-If1Hn4q9fn0JWuBm455iIZDWE6Fsn4Nv8Tpqb+dYf0CtoT5Hn+iT64xSiU5XJw9Vc23IR7dIujkEXm2MVbnvZw== dependencies: - "@lerna/otplease" "4.0.0" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - npmlog "^4.1.2" + "@lerna/otplease" "6.4.1" + npm-package-arg "8.1.1" + npm-registry-fetch "^13.3.0" + npmlog "^6.0.2" -"@lerna/npm-install@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-4.0.0.tgz#31180be3ab3b7d1818a1a0c206aec156b7094c78" - integrity sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg== +"@lerna/npm-install@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-6.4.1.tgz#99f5748cb43de9786ea2b538c94a7183d38fc476" + integrity sha512-7gI1txMA9qTaT3iiuk/8/vL78wIhtbbOLhMf8m5yQ2G+3t47RUA8MNgUMsq4Zszw9C83drayqesyTf0u8BzVRg== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/get-npm-exec-opts" "4.0.0" + "@lerna/child-process" "6.4.1" + "@lerna/get-npm-exec-opts" "6.4.1" fs-extra "^9.1.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" + npm-package-arg "8.1.1" + npmlog "^6.0.2" signal-exit "^3.0.3" write-pkg "^4.0.0" -"@lerna/npm-publish@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-4.0.0.tgz#84eb62e876fe949ae1fd62c60804423dbc2c4472" - integrity sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w== +"@lerna/npm-publish@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-6.4.1.tgz#baf07b108ae8b32932612db63206bcd5b5ee0e88" + integrity sha512-lbNEg+pThPAD8lIgNArm63agtIuCBCF3umxvgTQeLzyqUX6EtGaKJFyz/6c2ANcAuf8UfU7WQxFFbOiolibXTQ== dependencies: - "@lerna/otplease" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" + "@lerna/otplease" "6.4.1" + "@lerna/run-lifecycle" "6.4.1" fs-extra "^9.1.0" - libnpmpublish "^4.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" + libnpmpublish "^6.0.4" + npm-package-arg "8.1.1" + npmlog "^6.0.2" pify "^5.0.0" - read-package-json "^3.0.0" + read-package-json "^5.0.1" -"@lerna/npm-run-script@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz#dfebf4f4601442e7c0b5214f9fb0d96c9350743b" - integrity sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA== +"@lerna/npm-run-script@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-6.4.1.tgz#86db4f15d359b8a371db666aa51c9b2b87b602f3" + integrity sha512-HyvwuyhrGqDa1UbI+pPbI6v+wT6I34R0PW3WCADn6l59+AyqLOCUQQr+dMW7jdYNwjO6c/Ttbvj4W58EWsaGtQ== dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/get-npm-exec-opts" "4.0.0" - npmlog "^4.1.2" + "@lerna/child-process" "6.4.1" + "@lerna/get-npm-exec-opts" "6.4.1" + npmlog "^6.0.2" -"@lerna/otplease@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-4.0.0.tgz#84972eb43448f8a1077435ba1c5e59233b725850" - integrity sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw== +"@lerna/otplease@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-6.4.1.tgz#9573e053c43e7139442da96fe655aa02749cb8a3" + integrity sha512-ePUciFfFdythHNMp8FP5K15R/CoGzSLVniJdD50qm76c4ATXZHnGCW2PGwoeAZCy4QTzhlhdBq78uN0wAs75GA== dependencies: - "@lerna/prompt" "4.0.0" + "@lerna/prompt" "6.4.1" -"@lerna/output@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-4.0.0.tgz#b1d72215c0e35483e4f3e9994debc82c621851f2" - integrity sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w== +"@lerna/output@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-6.4.1.tgz#327baf768b8fb63db9d52f68288d387379f814f7" + integrity sha512-A1yRLF0bO+lhbIkrryRd6hGSD0wnyS1rTPOWJhScO/Zyv8vIPWhd2fZCLR1gI2d/Kt05qmK3T/zETTwloK7Fww== dependencies: - npmlog "^4.1.2" + npmlog "^6.0.2" -"@lerna/pack-directory@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-4.0.0.tgz#8b617db95d20792f043aaaa13a9ccc0e04cb4c74" - integrity sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ== - dependencies: - "@lerna/get-packed" "4.0.0" - "@lerna/package" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - npm-packlist "^2.1.4" - npmlog "^4.1.2" +"@lerna/pack-directory@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-6.4.1.tgz#e78aae4e7944057d8fc6cb4dd8ae50be7a95c2fd" + integrity sha512-kBtDL9bPP72/Nl7Gqa2CA3Odb8CYY1EF2jt801f+B37TqRLf57UXQom7yF3PbWPCPmhoU+8Fc4RMpUwSbFC46Q== + dependencies: + "@lerna/get-packed" "6.4.1" + "@lerna/package" "6.4.1" + "@lerna/run-lifecycle" "6.4.1" + "@lerna/temp-write" "6.4.1" + npm-packlist "^5.1.1" + npmlog "^6.0.2" tar "^6.1.0" - temp-write "^4.0.0" -"@lerna/package-graph@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-4.0.0.tgz#16a00253a8ac810f72041481cb46bcee8d8123dd" - integrity sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw== +"@lerna/package-graph@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-6.4.1.tgz#7a18024d531f0bd88609944e572b4861f0f8868f" + integrity sha512-fQvc59stRYOqxT3Mn7g/yI9/Kw5XetJoKcW5l8XeqKqcTNDURqKnN0qaNBY6lTTLOe4cR7gfXF2l1u3HOz0qEg== dependencies: - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/validation-error" "4.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" + "@lerna/prerelease-id-from-version" "6.4.1" + "@lerna/validation-error" "6.4.1" + npm-package-arg "8.1.1" + npmlog "^6.0.2" semver "^7.3.4" -"@lerna/package@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-4.0.0.tgz#1b4c259c4bcff45c876ee1d591a043aacbc0d6b7" - integrity sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q== +"@lerna/package@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-6.4.1.tgz#ebbd4c5f58f4b6cf77019271a686be9585272a3b" + integrity sha512-TrOah58RnwS9R8d3+WgFFTu5lqgZs7M+e1dvcRga7oSJeKscqpEK57G0xspvF3ycjfXQwRMmEtwPmpkeEVLMzA== dependencies: load-json-file "^6.2.0" - npm-package-arg "^8.1.0" + npm-package-arg "8.1.1" write-pkg "^4.0.0" -"@lerna/prerelease-id-from-version@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz#c7e0676fcee1950d85630e108eddecdd5b48c916" - integrity sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg== +"@lerna/prerelease-id-from-version@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-6.4.1.tgz#65eb1835cdfd112783eea6b596812c64f535386b" + integrity sha512-uGicdMFrmfHXeC0FTosnUKRgUjrBJdZwrmw7ZWMb5DAJGOuTzrvJIcz5f0/eL3XqypC/7g+9DoTgKjX3hlxPZA== dependencies: semver "^7.3.4" -"@lerna/profiler@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-4.0.0.tgz#8a53ab874522eae15d178402bff90a14071908e9" - integrity sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q== +"@lerna/profiler@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-6.4.1.tgz#0d5e017e1389e35960d671f43db7eb16337fda1b" + integrity sha512-dq2uQxcu0aq6eSoN+JwnvHoAnjtZAVngMvywz5bTAfzz/sSvIad1v8RCpJUMBQHxaPtbfiNvOIQgDZOmCBIM4g== dependencies: fs-extra "^9.1.0" - npmlog "^4.1.2" + npmlog "^6.0.2" upath "^2.0.1" -"@lerna/project@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-4.0.0.tgz#ff84893935833533a74deff30c0e64ddb7f0ba6b" - integrity sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg== +"@lerna/project@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-6.4.1.tgz#0519323aa8bde5b73fc0bf1c428385a556a445f0" + integrity sha512-BPFYr4A0mNZ2jZymlcwwh7PfIC+I6r52xgGtJ4KIrIOB6mVKo9u30dgYJbUQxmSuMRTOnX7PJZttQQzSda4gEg== dependencies: - "@lerna/package" "4.0.0" - "@lerna/validation-error" "4.0.0" + "@lerna/package" "6.4.1" + "@lerna/validation-error" "6.4.1" cosmiconfig "^7.0.0" dedent "^0.7.0" dot-prop "^6.0.1" glob-parent "^5.1.1" globby "^11.0.2" + js-yaml "^4.1.0" load-json-file "^6.2.0" - npmlog "^4.1.2" + npmlog "^6.0.2" p-map "^4.0.0" resolve-from "^5.0.0" write-json-file "^4.3.0" -"@lerna/prompt@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-4.0.0.tgz#5ec69a803f3f0db0ad9f221dad64664d3daca41b" - integrity sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ== +"@lerna/prompt@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-6.4.1.tgz#5ede06b4c8e17ec3045180b10ec5bd313cbc8585" + integrity sha512-vMxCIgF9Vpe80PnargBGAdS/Ib58iYEcfkcXwo7mYBCxEVcaUJFKZ72FEW8rw+H5LkxBlzrBJyfKRoOe0ks9gQ== dependencies: - inquirer "^7.3.3" - npmlog "^4.1.2" + inquirer "^8.2.4" + npmlog "^6.0.2" -"@lerna/publish@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-4.0.0.tgz#f67011305adeba120066a3b6d984a5bb5fceef65" - integrity sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg== - dependencies: - "@lerna/check-working-tree" "4.0.0" - "@lerna/child-process" "4.0.0" - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/describe-ref" "4.0.0" - "@lerna/log-packed" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/npm-dist-tag" "4.0.0" - "@lerna/npm-publish" "4.0.0" - "@lerna/otplease" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/pack-directory" "4.0.0" - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - "@lerna/version" "4.0.0" +"@lerna/publish@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-6.4.1.tgz#e1bdfa67297ca4a3054863e7acfc8482bf613c35" + integrity sha512-/D/AECpw2VNMa1Nh4g29ddYKRIqygEV1ftV8PYXVlHpqWN7VaKrcbRU6pn0ldgpFlMyPtESfv1zS32F5CQ944w== + dependencies: + "@lerna/check-working-tree" "6.4.1" + "@lerna/child-process" "6.4.1" + "@lerna/collect-updates" "6.4.1" + "@lerna/command" "6.4.1" + "@lerna/describe-ref" "6.4.1" + "@lerna/log-packed" "6.4.1" + "@lerna/npm-conf" "6.4.1" + "@lerna/npm-dist-tag" "6.4.1" + "@lerna/npm-publish" "6.4.1" + "@lerna/otplease" "6.4.1" + "@lerna/output" "6.4.1" + "@lerna/pack-directory" "6.4.1" + "@lerna/prerelease-id-from-version" "6.4.1" + "@lerna/prompt" "6.4.1" + "@lerna/pulse-till-done" "6.4.1" + "@lerna/run-lifecycle" "6.4.1" + "@lerna/run-topologically" "6.4.1" + "@lerna/validation-error" "6.4.1" + "@lerna/version" "6.4.1" fs-extra "^9.1.0" - libnpmaccess "^4.0.1" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - npmlog "^4.1.2" + libnpmaccess "^6.0.3" + npm-package-arg "8.1.1" + npm-registry-fetch "^13.3.0" + npmlog "^6.0.2" p-map "^4.0.0" p-pipe "^3.1.0" - pacote "^11.2.6" + pacote "^13.6.1" semver "^7.3.4" -"@lerna/pulse-till-done@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz#04bace7d483a8205c187b806bcd8be23d7bb80a3" - integrity sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg== +"@lerna/pulse-till-done@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-6.4.1.tgz#85c38a43939bf5e21b61091d0bcf73a1109a59db" + integrity sha512-efAkOC1UuiyqYBfrmhDBL6ufYtnpSqAG+lT4d/yk3CzJEJKkoCwh2Hb692kqHHQ5F74Uusc8tcRB7GBcfNZRWA== dependencies: - npmlog "^4.1.2" + npmlog "^6.0.2" -"@lerna/query-graph@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-4.0.0.tgz#09dd1c819ac5ee3f38db23931143701f8a6eef63" - integrity sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg== +"@lerna/query-graph@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-6.4.1.tgz#3c224a49ff392d08ce8aeeaa1af4458f522a2b78" + integrity sha512-gBGZLgu2x6L4d4ZYDn4+d5rxT9RNBC+biOxi0QrbaIq83I+JpHVmFSmExXK3rcTritrQ3JT9NCqb+Yu9tL9adQ== dependencies: - "@lerna/package-graph" "4.0.0" + "@lerna/package-graph" "6.4.1" -"@lerna/resolve-symlink@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz#6d006628a210c9b821964657a9e20a8c9a115e14" - integrity sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA== +"@lerna/resolve-symlink@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-6.4.1.tgz#ab42dcbd03bc4028ec77ee481c5db8884ebaf40a" + integrity sha512-gnqltcwhWVLUxCuwXWe/ch9WWTxXRI7F0ZvCtIgdfOpbosm3f1g27VO1LjXeJN2i6ks03qqMowqy4xB4uMR9IA== dependencies: fs-extra "^9.1.0" - npmlog "^4.1.2" - read-cmd-shim "^2.0.0" + npmlog "^6.0.2" + read-cmd-shim "^3.0.0" -"@lerna/rimraf-dir@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz#2edf3b62d4eb0ef4e44e430f5844667d551ec25a" - integrity sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg== +"@lerna/rimraf-dir@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-6.4.1.tgz#116e379f653135b3ae955dcba703bdf212cab51a" + integrity sha512-5sDOmZmVj0iXIiEgdhCm0Prjg5q2SQQKtMd7ImimPtWKkV0IyJWxrepJFbeQoFj5xBQF7QB5jlVNEfQfKhD6pQ== dependencies: - "@lerna/child-process" "4.0.0" - npmlog "^4.1.2" + "@lerna/child-process" "6.4.1" + npmlog "^6.0.2" path-exists "^4.0.0" rimraf "^3.0.2" -"@lerna/run-lifecycle@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz#e648a46f9210a9bcd7c391df6844498cb5079334" - integrity sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ== +"@lerna/run-lifecycle@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-6.4.1.tgz#1eac136afae97e197bdb564e67fb385f4d346685" + integrity sha512-42VopI8NC8uVCZ3YPwbTycGVBSgukJltW5Saein0m7TIqFjwSfrcP0n7QJOr+WAu9uQkk+2kBstF5WmvKiqgEA== dependencies: - "@lerna/npm-conf" "4.0.0" - npm-lifecycle "^3.1.5" - npmlog "^4.1.2" + "@lerna/npm-conf" "6.4.1" + "@npmcli/run-script" "^4.1.7" + npmlog "^6.0.2" + p-queue "^6.6.2" -"@lerna/run-topologically@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-4.0.0.tgz#af846eeee1a09b0c2be0d1bfb5ef0f7b04bb1827" - integrity sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA== +"@lerna/run-topologically@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-6.4.1.tgz#640b07d83f1d1e6d3bc36f81a74957839bb1672f" + integrity sha512-gXlnAsYrjs6KIUGDnHM8M8nt30Amxq3r0lSCNAt+vEu2sMMEOh9lffGGaJobJZ4bdwoXnKay3uER/TU8E9owMw== dependencies: - "@lerna/query-graph" "4.0.0" + "@lerna/query-graph" "6.4.1" p-queue "^6.6.2" -"@lerna/run@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-4.0.0.tgz#4bc7fda055a729487897c23579694f6183c91262" - integrity sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/npm-run-script" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/profiler" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/timer" "4.0.0" - "@lerna/validation-error" "4.0.0" +"@lerna/run@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-6.4.1.tgz#985279f071ff23ae15f92837f85f979a1352fc01" + integrity sha512-HRw7kS6KNqTxqntFiFXPEeBEct08NjnL6xKbbOV6pXXf+lXUQbJlF8S7t6UYqeWgTZ4iU9caIxtZIY+EpW93mQ== + dependencies: + "@lerna/command" "6.4.1" + "@lerna/filter-options" "6.4.1" + "@lerna/npm-run-script" "6.4.1" + "@lerna/output" "6.4.1" + "@lerna/profiler" "6.4.1" + "@lerna/run-topologically" "6.4.1" + "@lerna/timer" "6.4.1" + "@lerna/validation-error" "6.4.1" + fs-extra "^9.1.0" + nx ">=15.4.2 < 16" p-map "^4.0.0" -"@lerna/symlink-binary@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz#21009f62d53a425f136cb4c1a32c6b2a0cc02d47" - integrity sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA== +"@lerna/symlink-binary@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-6.4.1.tgz#d8e1b653a7ae9fe38834851c66c92278e3bb25ae" + integrity sha512-poZX90VmXRjL/JTvxaUQPeMDxFUIQvhBkHnH+dwW0RjsHB/2Tu4QUAsE0OlFnlWQGsAtXF4FTtW8Xs57E/19Kw== dependencies: - "@lerna/create-symlink" "4.0.0" - "@lerna/package" "4.0.0" + "@lerna/create-symlink" "6.4.1" + "@lerna/package" "6.4.1" fs-extra "^9.1.0" p-map "^4.0.0" -"@lerna/symlink-dependencies@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz#8910eca084ae062642d0490d8972cf2d98e9ebbd" - integrity sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw== +"@lerna/symlink-dependencies@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-6.4.1.tgz#988203cc260406b64d61294367821a0f26419ee6" + integrity sha512-43W2uLlpn3TTYuHVeO/2A6uiTZg6TOk/OSKi21ujD7IfVIYcRYCwCV+8LPP12R3rzyab0JWkWnhp80Z8A2Uykw== dependencies: - "@lerna/create-symlink" "4.0.0" - "@lerna/resolve-symlink" "4.0.0" - "@lerna/symlink-binary" "4.0.0" + "@lerna/create-symlink" "6.4.1" + "@lerna/resolve-symlink" "6.4.1" + "@lerna/symlink-binary" "6.4.1" fs-extra "^9.1.0" p-map "^4.0.0" p-map-series "^2.1.0" -"@lerna/timer@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-4.0.0.tgz#a52e51bfcd39bfd768988049ace7b15c1fd7a6da" - integrity sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg== +"@lerna/temp-write@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/temp-write/-/temp-write-6.4.1.tgz#1c46d05b633597c77b0c5f5ab46c1315195f7786" + integrity sha512-7uiGFVoTyos5xXbVQg4bG18qVEn9dFmboXCcHbMj5mc/+/QmU9QeNz/Cq36O5TY6gBbLnyj3lfL5PhzERWKMFg== + dependencies: + graceful-fs "^4.1.15" + is-stream "^2.0.0" + make-dir "^3.0.0" + temp-dir "^1.0.0" + uuid "^8.3.2" -"@lerna/validation-error@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-4.0.0.tgz#af9d62fe8304eaa2eb9a6ba1394f9aa807026d35" - integrity sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw== +"@lerna/timer@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-6.4.1.tgz#47fe50b56bd2fc32396a2559f7bb65de8200f07d" + integrity sha512-ogmjFTWwRvevZr76a2sAbhmu3Ut2x73nDIn0bcwZwZ3Qc3pHD8eITdjs/wIKkHse3J7l3TO5BFJPnrvDS7HLnw== + +"@lerna/validation-error@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-6.4.1.tgz#2cab92c2be395158c3d65fa57ddb73892617d7e8" + integrity sha512-fxfJvl3VgFd7eBfVMRX6Yal9omDLs2mcGKkNYeCEyt4Uwlz1B5tPAXyk/sNMfkKV2Aat/mlK5tnY13vUrMKkyA== dependencies: - npmlog "^4.1.2" + npmlog "^6.0.2" -"@lerna/version@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-4.0.0.tgz#532659ec6154d8a8789c5ab53878663e244e3228" - integrity sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA== - dependencies: - "@lerna/check-working-tree" "4.0.0" - "@lerna/child-process" "4.0.0" - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/conventional-commits" "4.0.0" - "@lerna/github-client" "4.0.0" - "@lerna/gitlab-client" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" +"@lerna/version@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-6.4.1.tgz#01011364df04240ce92dffed1d2fa76bb9f959ff" + integrity sha512-1/krPq0PtEqDXtaaZsVuKev9pXJCkNC1vOo2qCcn6PBkODw/QTAvGcUi0I+BM2c//pdxge9/gfmbDo1lC8RtAQ== + dependencies: + "@lerna/check-working-tree" "6.4.1" + "@lerna/child-process" "6.4.1" + "@lerna/collect-updates" "6.4.1" + "@lerna/command" "6.4.1" + "@lerna/conventional-commits" "6.4.1" + "@lerna/github-client" "6.4.1" + "@lerna/gitlab-client" "6.4.1" + "@lerna/output" "6.4.1" + "@lerna/prerelease-id-from-version" "6.4.1" + "@lerna/prompt" "6.4.1" + "@lerna/run-lifecycle" "6.4.1" + "@lerna/run-topologically" "6.4.1" + "@lerna/temp-write" "6.4.1" + "@lerna/validation-error" "6.4.1" + "@nrwl/devkit" ">=15.4.2 < 16" chalk "^4.1.0" dedent "^0.7.0" load-json-file "^6.2.0" minimatch "^3.0.4" - npmlog "^4.1.2" + npmlog "^6.0.2" p-map "^4.0.0" p-pipe "^3.1.0" p-reduce "^2.1.0" p-waterfall "^2.1.1" semver "^7.3.4" slash "^3.0.0" - temp-write "^4.0.0" write-json-file "^4.3.0" -"@lerna/write-log-file@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-4.0.0.tgz#18221a38a6a307d6b0a5844dd592ad53fa27091e" - integrity sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg== +"@lerna/write-log-file@6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-6.4.1.tgz#b9b959e4b853cdabf0309bc5da1513fa025117ec" + integrity sha512-LE4fueQSDrQo76F4/gFXL0wnGhqdG7WHVH8D8TrKouF2Afl4NHltObCm4WsSMPjcfciVnZQFfx1ruxU4r/enHQ== dependencies: - npmlog "^4.1.2" - write-file-atomic "^3.0.3" + npmlog "^6.0.2" + write-file-atomic "^4.0.1" "@liskhq/bignum@1.3.1": version "1.3.1" @@ -2515,6 +2539,31 @@ dependencies: "@types/node" "11.11.2" +"@liskhq/lisk-db@^0.3.6": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@liskhq/lisk-db/-/lisk-db-0.3.6.tgz#d8e3b0c548ae54dfd98b371738ce4dc259303108" + integrity sha512-x1NtivGhfIrgzusDhOTqiz7eNIpQbNrPnEbEcbK32Iz1KWagZpdaJ6kOAXTTNA4QBwM6brbmxjFagFPvIMkgnw== + dependencies: + "@mapbox/node-pre-gyp" "^1.0.9" + "@types/node" "^16 || ^18" + cargo-cp-artifact "^0.1" + shelljs "^0.8.5" + +"@mapbox/node-pre-gyp@^1.0.9": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz#8e6735ccebbb1581e5a7e652244cadc8a844d03c" + integrity sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA== + dependencies: + detect-libc "^2.0.0" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.7" + nopt "^5.0.0" + npmlog "^5.0.1" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.11" + "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" @@ -2536,21 +2585,61 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@npmcli/arborist@^2.2.2": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-2.10.0.tgz#424c2d73a7ae59c960b0cc7f74fed043e4316c2c" - integrity "sha1-Qkwtc6euWclgsMx/dP7QQ+QxbCw= sha512-CLnD+zXG9oijEEzViimz8fbOoFVb7hoypiaf7p6giJhvYtrxLAyY3cZAMPIFQvsG731+02eMDp3LqVBNo7BaZA==" +"@npmcli/arborist@5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-5.3.0.tgz#321d9424677bfc08569e98a5ac445ee781f32053" + integrity sha512-+rZ9zgL1lnbl8Xbb1NQdMjveOMwj4lIYfcDtyJHHi5x4X8jtR6m8SXooJMZy5vmFVZ8w7A2Bnd/oX9eTuU8w5A== + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/installed-package-contents" "^1.0.7" + "@npmcli/map-workspaces" "^2.0.3" + "@npmcli/metavuln-calculator" "^3.0.1" + "@npmcli/move-file" "^2.0.0" + "@npmcli/name-from-folder" "^1.0.1" + "@npmcli/node-gyp" "^2.0.0" + "@npmcli/package-json" "^2.0.0" + "@npmcli/run-script" "^4.1.3" + bin-links "^3.0.0" + cacache "^16.0.6" + common-ancestor-path "^1.0.1" + json-parse-even-better-errors "^2.3.1" + json-stringify-nice "^1.1.4" + mkdirp "^1.0.4" + mkdirp-infer-owner "^2.0.0" + nopt "^5.0.0" + npm-install-checks "^5.0.0" + npm-package-arg "^9.0.0" + npm-pick-manifest "^7.0.0" + npm-registry-fetch "^13.0.0" + npmlog "^6.0.2" + pacote "^13.6.1" + parse-conflict-json "^2.0.1" + proc-log "^2.0.0" + promise-all-reject-late "^1.0.0" + promise-call-limit "^1.0.1" + read-package-json-fast "^2.0.2" + readdir-scoped-modules "^1.1.0" + rimraf "^3.0.2" + semver "^7.3.7" + ssri "^9.0.0" + treeverse "^2.0.0" + walk-up-path "^1.0.0" + +"@npmcli/arborist@^4.0.4": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-4.3.1.tgz#a08cddce3339882f688c1dea1651f6971e781c44" + integrity sha512-yMRgZVDpwWjplorzt9SFSaakWx6QIK248Nw4ZFgkrAy/GvJaFRaSZzE6nD7JBK5r8g/+PTxFq5Wj/sfciE7x+A== dependencies: - "@isaacs/string-locale-compare" "^1.0.1" + "@isaacs/string-locale-compare" "^1.1.0" "@npmcli/installed-package-contents" "^1.0.7" - "@npmcli/map-workspaces" "^1.0.2" - "@npmcli/metavuln-calculator" "^1.1.0" + "@npmcli/map-workspaces" "^2.0.0" + "@npmcli/metavuln-calculator" "^2.0.0" "@npmcli/move-file" "^1.1.0" "@npmcli/name-from-folder" "^1.0.1" - "@npmcli/node-gyp" "^1.0.1" + "@npmcli/node-gyp" "^1.0.3" "@npmcli/package-json" "^1.0.1" - "@npmcli/run-script" "^1.8.2" - bin-links "^2.2.1" + "@npmcli/run-script" "^2.0.0" + bin-links "^3.0.0" cacache "^15.0.3" common-ancestor-path "^1.0.1" json-parse-even-better-errors "^2.3.1" @@ -2560,9 +2649,9 @@ npm-install-checks "^4.0.0" npm-package-arg "^8.1.5" npm-pick-manifest "^6.1.0" - npm-registry-fetch "^11.0.0" - pacote "^11.3.5" - parse-conflict-json "^1.1.1" + npm-registry-fetch "^12.0.1" + pacote "^12.0.2" + parse-conflict-json "^2.0.1" proc-log "^1.0.0" promise-all-reject-late "^1.0.0" promise-call-limit "^1.0.1" @@ -2574,11 +2663,6 @@ treeverse "^1.0.4" walk-up-path "^1.0.0" -"@npmcli/ci-detect@^1.0.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz#6c1d2c625fb6ef1b9dea85ad0a5afcbef85ef22a" - integrity sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q== - "@npmcli/fs@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.0.tgz#bec1d1b89c170d40e1b73ad6c943b0b75e7d2951" @@ -2587,7 +2671,15 @@ "@gar/promisify" "^1.0.1" semver "^7.3.5" -"@npmcli/git@^2.0.1", "@npmcli/git@^2.1.0": +"@npmcli/fs@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== + dependencies: + "@gar/promisify" "^1.1.3" + semver "^7.3.5" + +"@npmcli/git@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" integrity "sha1-L7134UdTAkfTfzJZMNRXs+volPY= sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==" @@ -2601,6 +2693,21 @@ semver "^7.3.5" which "^2.0.2" +"@npmcli/git@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-3.0.2.tgz#5c5de6b4d70474cf2d09af149ce42e4e1dacb931" + integrity sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w== + dependencies: + "@npmcli/promise-spawn" "^3.0.0" + lru-cache "^7.4.4" + mkdirp "^1.0.4" + npm-pick-manifest "^7.0.0" + proc-log "^2.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^2.0.2" + "@npmcli/installed-package-contents@^1.0.6", "@npmcli/installed-package-contents@^1.0.7": version "1.0.7" resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" @@ -2609,25 +2716,36 @@ npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -"@npmcli/map-workspaces@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-1.0.3.tgz#6072a0794762cf8f572e6080fa66d1bbefa991d5" - integrity sha512-SdlRlOoQw4WKD4vtb/n5gUkobEABYBEOo8fRE4L8CtBkyWDSvIrReTfKvQ/Jc/LQqDaaZ5iv1iMSQzKCUr1n1A== +"@npmcli/map-workspaces@^2.0.0", "@npmcli/map-workspaces@^2.0.3": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-2.0.4.tgz#9e5e8ab655215a262aefabf139782b894e0504fc" + integrity sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg== dependencies: "@npmcli/name-from-folder" "^1.0.1" - glob "^7.1.6" - minimatch "^3.0.4" - read-package-json-fast "^2.0.1" + glob "^8.0.1" + minimatch "^5.0.1" + read-package-json-fast "^2.0.3" -"@npmcli/metavuln-calculator@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-1.1.1.tgz#2f95ff3c6d88b366dd70de1c3f304267c631b458" - integrity sha512-9xe+ZZ1iGVaUovBVFI9h3qW+UuECUzhvZPxK9RaEA2mjU26o5D0JloGYWwLYvQELJNmBdQB6rrpuN8jni6LwzQ== +"@npmcli/metavuln-calculator@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-2.0.0.tgz#70937b8b5a5cad5c588c8a7b38c4a8bd6f62c84c" + integrity sha512-VVW+JhWCKRwCTE+0xvD6p3uV4WpqocNYYtzyvenqL/u1Q3Xx6fGTJ+6UoIoii07fbuEO9U3IIyuGY0CYHDv1sg== dependencies: cacache "^15.0.5" - pacote "^11.1.11" + json-parse-even-better-errors "^2.3.1" + pacote "^12.0.0" semver "^7.3.2" +"@npmcli/metavuln-calculator@^3.0.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-3.1.1.tgz#9359bd72b400f8353f6a28a25c8457b562602622" + integrity sha512-n69ygIaqAedecLeVH3KnO39M6ZHiJ2dEv5A7DGvcqCB8q17BGUgW8QaanIkbWUo2aYGZqJaOORTLAlIvKjNDKA== + dependencies: + cacache "^16.0.0" + json-parse-even-better-errors "^2.3.1" + pacote "^13.0.3" + semver "^7.3.5" + "@npmcli/move-file@^1.0.1", "@npmcli/move-file@^1.1.0": version "1.1.2" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" @@ -2636,16 +2754,34 @@ mkdirp "^1.0.4" rimraf "^3.0.2" +"@npmcli/move-file@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + "@npmcli/name-from-folder@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz#77ecd0a4fcb772ba6fe927e2e2e155fbec2e6b1a" integrity sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA== -"@npmcli/node-gyp@^1.0.1", "@npmcli/node-gyp@^1.0.2": +"@npmcli/node-gyp@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz#3cdc1f30e9736dbc417373ed803b42b1a0a29ede" integrity sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg== +"@npmcli/node-gyp@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" + integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== + +"@npmcli/node-gyp@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz#8c20e53e34e9078d18815c1d2dda6f2420d75e35" + integrity sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A== + "@npmcli/package-json@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-1.0.1.tgz#1ed42f00febe5293c3502fd0ef785647355f6e89" @@ -2653,6 +2789,13 @@ dependencies: json-parse-even-better-errors "^2.3.1" +"@npmcli/package-json@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-2.0.0.tgz#3bbcf4677e21055adbe673d9f08c9f9cde942e4a" + integrity sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA== + dependencies: + json-parse-even-better-errors "^2.3.1" + "@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" @@ -2660,17 +2803,59 @@ dependencies: infer-owner "^1.0.4" -"@npmcli/run-script@^1.8.2": - version "1.8.4" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.4.tgz#03ced92503a6fe948cbc0975ce39210bc5e824d6" - integrity sha512-Yd9HXTtF1JGDXZw0+SOn+mWLYS0e7bHBHVC/2C8yqs4wUrs/k8rwBSinD7rfk+3WG/MFGRZKxjyoD34Pch2E/A== +"@npmcli/promise-spawn@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz#53283b5f18f855c6925f23c24e67c911501ef573" + integrity sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g== + dependencies: + infer-owner "^1.0.4" + +"@npmcli/run-script@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-2.0.0.tgz#9949c0cab415b17aaac279646db4f027d6f1e743" + integrity sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig== dependencies: "@npmcli/node-gyp" "^1.0.2" "@npmcli/promise-spawn" "^1.3.2" - infer-owner "^1.0.4" - node-gyp "^7.1.0" + node-gyp "^8.2.0" read-package-json-fast "^2.0.1" +"@npmcli/run-script@^4.1.0", "@npmcli/run-script@^4.1.3", "@npmcli/run-script@^4.1.7": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-4.2.1.tgz#c07c5c71bc1c70a5f2a06b0d4da976641609b946" + integrity sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg== + dependencies: + "@npmcli/node-gyp" "^2.0.0" + "@npmcli/promise-spawn" "^3.0.0" + node-gyp "^9.0.0" + read-package-json-fast "^2.0.3" + which "^2.0.2" + +"@nrwl/cli@15.6.3": + version "15.6.3" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.6.3.tgz#999531d6efb30afc39373bdcbd7e78254a3a3fd3" + integrity sha512-K4E0spofThZXMnhA6R8hkUTdfqmwSnUE2+DlD5Y3jqsvKTAgwF5U41IFkEouFZCf+dWjy0RA20bWoX48EVFtmQ== + dependencies: + nx "15.6.3" + +"@nrwl/devkit@>=15.4.2 < 16": + version "15.6.3" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.6.3.tgz#e4e96c53ba3304786a49034286c8511534b2b194" + integrity sha512-/JDvdzNxUM+C1PCZPCrvmFx+OfywqZdOq1GS9QR8C0VctTLG4D/SGSFD88O1SAdcbH/f1mMiBGfEYZYd23fghQ== + dependencies: + "@phenomnomnominal/tsquery" "4.1.1" + ejs "^3.1.7" + ignore "^5.0.4" + semver "7.3.4" + tslib "^2.3.0" + +"@nrwl/tao@15.6.3": + version "15.6.3" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.6.3.tgz#b24e11345375dea96bc386c60b9b1102a7584932" + integrity sha512-bDZbPIbU5Mf2BvX0q8GjPxrm1WkYyfW+gp7mLuuJth2sEpZiCr47mSwuGko/y4CKXvIX46VQcAS0pKQMKugXsg== + dependencies: + nx "15.6.3" + "@oclif/command@1.8.16", "@oclif/command@^1.8.14", "@oclif/command@^1.8.15": version "1.8.16" resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.16.tgz#bea46f81b2061b47e1cda318a0b923e62ca4cc0c" @@ -2707,7 +2892,7 @@ is-wsl "^2.1.1" tslib "^2.3.1" -"@oclif/core@^1.2.0", "@oclif/core@^1.3.6": +"@oclif/core@^1.3.6": version "1.6.0" resolved "https://registry.yarnpkg.com/@oclif/core/-/core-1.6.0.tgz#a91333275cd43a49097158f4ae8e15ccf718bd48" integrity sha512-JHerjgRd29EtUVpDIrzohq2XdxJfgmZVGHAFlf75QVhLGFaleopZAQNBXkHkxG//kGib0LhyVGW7azcFKzr1eQ== @@ -2742,6 +2927,40 @@ widest-line "^3.1.0" wrap-ansi "^7.0.0" +"@oclif/core@^2.0.7": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-2.0.9.tgz#f38c7260653a60698772ff09c5cf91febbfe003b" + integrity sha512-SLwSQa1No4br0D9cLY8lleXvcs3K/YpSQdo0md6z8AHx3P+l0/fv9dtIlYYD8MqsRUcNPxshJ3ZkN2sNNM5VjQ== + dependencies: + "@types/cli-progress" "^3.11.0" + ansi-escapes "^4.3.2" + ansi-styles "^4.3.0" + cardinal "^2.1.1" + chalk "^4.1.2" + clean-stack "^3.0.1" + cli-progress "^3.10.0" + debug "^4.3.4" + ejs "^3.1.6" + fs-extra "^9.1.0" + get-package-type "^0.1.0" + globby "^11.1.0" + hyperlinker "^1.0.0" + indent-string "^4.0.0" + is-wsl "^2.2.0" + js-yaml "^3.14.1" + natural-orderby "^2.0.3" + object-treeify "^1.1.33" + password-prompt "^1.1.2" + semver "^7.3.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + supports-color "^8.1.1" + supports-hyperlinks "^2.2.0" + tslib "^2.4.1" + widest-line "^3.1.0" + wordwrap "^1.0.0" + wrap-ansi "^7.0.0" + "@oclif/dev-cli@1.26.10": version "1.26.10" resolved "https://registry.yarnpkg.com/@oclif/dev-cli/-/dev-cli-1.26.10.tgz#d8df3a79009b68552f5e7f249d1d19ca52278382" @@ -2822,14 +3041,14 @@ chalk "^2.4.2" tslib "^1.9.3" -"@oclif/plugin-autocomplete@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@oclif/plugin-autocomplete/-/plugin-autocomplete-1.2.0.tgz#c807d4ee0fd745296ea745c0c8ca28a0c6233bf3" - integrity sha512-Y64uhbhQLcLms2N6kvoIb40s2czOECeMzGs0ATf/3kNojY2nsYaQ0mI6PghQs/JgpVg4DnZOJivleYBr+XPn7Q== +"@oclif/plugin-autocomplete@1.4.4": + version "1.4.4" + resolved "https://registry.yarnpkg.com/@oclif/plugin-autocomplete/-/plugin-autocomplete-1.4.4.tgz#c2e5fbcfbabc0a92df12f29d8a3e4a34fa7756e8" + integrity sha512-8Bcn1h1H5EORJ3UMYS91AE3lQh7Ks5u4na7hPXS1GsnWaN1MVdpipvEAPV2Uj5bUUC+xj/v0k7N4ld0BWkEx+w== dependencies: - "@oclif/core" "^1.2.0" + "@oclif/core" "^2.0.7" chalk "^4.1.0" - debug "^4.0.0" + debug "^4.3.4" fs-extra "^9.0.1" "@oclif/plugin-help@3.2.18": @@ -2880,6 +3099,13 @@ dependencies: "@octokit/types" "^6.0.3" +"@octokit/auth-token@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.3.tgz#ce7e48a3166731f26068d7a7a7996b5da58cbe0c" + integrity sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA== + dependencies: + "@octokit/types" "^9.0.0" + "@octokit/core@^3.2.3": version "3.3.1" resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.3.1.tgz#c6bb6ba171ad84a5f430853a98892cfe8f93d8cd" @@ -2893,12 +3119,34 @@ before-after-hook "^2.2.0" universal-user-agent "^6.0.0" +"@octokit/core@^4.1.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.0.tgz#8c253ba9605aca605bc46187c34fcccae6a96648" + integrity sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg== + dependencies: + "@octokit/auth-token" "^3.0.0" + "@octokit/graphql" "^5.0.0" + "@octokit/request" "^6.0.0" + "@octokit/request-error" "^3.0.0" + "@octokit/types" "^9.0.0" + before-after-hook "^2.2.0" + universal-user-agent "^6.0.0" + "@octokit/endpoint@^6.0.1": version "6.0.11" resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.11.tgz#082adc2aebca6dcefa1fb383f5efb3ed081949d1" integrity sha512-fUIPpx+pZyoLW4GCs3yMnlj2LfoXTWDUVPTC4V3MUEKZm48W+XYpeWSZCv+vYF1ZABUm2CqnDVf1sFtIYrj7KQ== dependencies: - "@octokit/types" "^6.0.3" + "@octokit/types" "^6.0.3" + is-plain-object "^5.0.0" + universal-user-agent "^6.0.0" + +"@octokit/endpoint@^7.0.0": + version "7.0.5" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.5.tgz#2bb2a911c12c50f10014183f5d596ce30ac67dd1" + integrity sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA== + dependencies: + "@octokit/types" "^9.0.0" is-plain-object "^5.0.0" universal-user-agent "^6.0.0" @@ -2911,6 +3159,20 @@ "@octokit/types" "^6.0.3" universal-user-agent "^6.0.0" +"@octokit/graphql@^5.0.0": + version "5.0.5" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.5.tgz#a4cb3ea73f83b861893a6370ee82abb36e81afd2" + integrity sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ== + dependencies: + "@octokit/request" "^6.0.0" + "@octokit/types" "^9.0.0" + universal-user-agent "^6.0.0" + +"@octokit/openapi-types@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-16.0.0.tgz#d92838a6cd9fb4639ca875ddb3437f1045cc625e" + integrity sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA== + "@octokit/openapi-types@^6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-6.0.0.tgz#7da8d7d5a72d3282c1a3ff9f951c8133a707480d" @@ -2928,18 +3190,22 @@ dependencies: "@octokit/types" "^6.11.0" +"@octokit/plugin-paginate-rest@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.0.0.tgz#f34b5a7d9416019126042cd7d7b811e006c0d561" + integrity sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw== + dependencies: + "@octokit/types" "^9.0.0" + "@octokit/plugin-request-log@^1.0.2": version "1.0.3" resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.3.tgz#70a62be213e1edc04bb8897ee48c311482f9700d" integrity sha512-4RFU4li238jMJAzLgAwkBAw+4Loile5haQMQr+uhFq27BmyJXcXSKvoQKqh0agsZEiUlW6iSv3FAgvmGkur7OQ== -"@octokit/plugin-rest-endpoint-methods@4.14.0": - version "4.14.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.14.0.tgz#1e76439897ea02d71379a1b06885c4f49378b8e8" - integrity sha512-QoZ469GDvFALHuxhcRA4KFGTaPeu5Z0MILGPa7irTGfYE0WfL+LFqWmULm9tuFKaKNlTcEQ7c5uJ0p4k5uvmNQ== - dependencies: - "@octokit/types" "^6.13.0" - deprecation "^2.3.1" +"@octokit/plugin-request-log@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" + integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== "@octokit/plugin-rest-endpoint-methods@5.0.0": version "5.0.0" @@ -2949,6 +3215,14 @@ "@octokit/types" "^6.13.0" deprecation "^2.3.1" +"@octokit/plugin-rest-endpoint-methods@^7.0.0": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.0.1.tgz#f7ebe18144fd89460f98f35a587b056646e84502" + integrity sha512-pnCaLwZBudK5xCdrR823xHGNgqOzRnJ/mpC/76YPpNP7DybdsJtP7mdOwh+wYZxK5jqeQuhu59ogMI4NRlBUvA== + dependencies: + "@octokit/types" "^9.0.0" + deprecation "^2.3.1" + "@octokit/request-error@^2.0.0", "@octokit/request-error@^2.0.5": version "2.0.5" resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.5.tgz#72cc91edc870281ad583a42619256b380c600143" @@ -2958,6 +3232,15 @@ deprecation "^2.0.0" once "^1.4.0" +"@octokit/request-error@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69" + integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ== + dependencies: + "@octokit/types" "^9.0.0" + deprecation "^2.0.0" + once "^1.4.0" + "@octokit/request@^5.3.0", "@octokit/request@^5.4.12": version "5.4.14" resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.14.tgz#ec5f96f78333bb2af390afa5ff66f114b063bc96" @@ -2972,6 +3255,18 @@ once "^1.4.0" universal-user-agent "^6.0.0" +"@octokit/request@^6.0.0": + version "6.2.3" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.3.tgz#76d5d6d44da5c8d406620a4c285d280ae310bdb4" + integrity sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA== + dependencies: + "@octokit/endpoint" "^7.0.0" + "@octokit/request-error" "^3.0.0" + "@octokit/types" "^9.0.0" + is-plain-object "^5.0.0" + node-fetch "^2.6.7" + universal-user-agent "^6.0.0" + "@octokit/rest@^18.0.6": version "18.5.2" resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.5.2.tgz#0369e554b7076e3749005147be94c661c7a5a74b" @@ -2982,15 +3277,15 @@ "@octokit/plugin-request-log" "^1.0.2" "@octokit/plugin-rest-endpoint-methods" "5.0.0" -"@octokit/rest@^18.1.0": - version "18.4.0" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.4.0.tgz#b12ec99ca8a46d5f01ebe6e99947a5cbf9e007fb" - integrity sha512-3bFg0vyD3O+6EukYzLTu4tUapMofSR4nYgMEOJc25sefippsatiWfNoOnx0QNj3PIXVJdW0riUjQnDwgS0JNWA== +"@octokit/rest@^19.0.3": + version "19.0.7" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.7.tgz#d2e21b4995ab96ae5bfae50b4969da7e04e0bb70" + integrity sha512-HRtSfjrWmWVNp2uAkEpQnuGMJsu/+dBr47dRc5QVgsCbnIc1+GFEaoKBWkYG+zjrsHpSqcAElMio+n10c0b5JA== dependencies: - "@octokit/core" "^3.2.3" - "@octokit/plugin-paginate-rest" "^2.6.2" - "@octokit/plugin-request-log" "^1.0.2" - "@octokit/plugin-rest-endpoint-methods" "4.14.0" + "@octokit/core" "^4.1.0" + "@octokit/plugin-paginate-rest" "^6.0.0" + "@octokit/plugin-request-log" "^1.0.4" + "@octokit/plugin-rest-endpoint-methods" "^7.0.0" "@octokit/types@^6.0.3", "@octokit/types@^6.11.0", "@octokit/types@^6.13.0", "@octokit/types@^6.7.1": version "6.13.0" @@ -2999,6 +3294,28 @@ dependencies: "@octokit/openapi-types" "^6.0.0" +"@octokit/types@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.0.0.tgz#6050db04ddf4188ec92d60e4da1a2ce0633ff635" + integrity sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw== + dependencies: + "@octokit/openapi-types" "^16.0.0" + +"@parcel/watcher@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" + integrity sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg== + dependencies: + node-addon-api "^3.2.1" + node-gyp-build "^4.3.0" + +"@phenomnomnominal/tsquery@4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz#42971b83590e9d853d024ddb04a18085a36518df" + integrity sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ== + dependencies: + esquery "^1.0.1" + "@pmmmwh/react-refresh-webpack-plugin@0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" @@ -3246,6 +3563,11 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + "@ts-morph/common@~0.7.0": version "0.7.3" resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.7.3.tgz#380020c278e4aa6cecedf362a1157591d1003267" @@ -3258,11 +3580,6 @@ multimatch "^5.0.0" typescript "~4.1.2" -"@types/abstract-leveldown@*": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-5.0.1.tgz#3c7750d0186b954c7f2d2f6acc8c3c7ba0c3412e" - integrity sha512-wYxU3kp5zItbxKmeRYCEplS2MW7DzyBnxPGj+GJVHZEUZiK/nn5Ei1sUFgURDh+X051+zsGe28iud3oHjrYWQQ== - "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" @@ -3340,6 +3657,13 @@ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.8.tgz#c8d645506db0d15f4aafd4dfa873f443ad87ea59" integrity sha512-U1bQiWbln41Yo6EeHMr+34aUhvrMVyrhn9lYfPSpLTCrZlGxU4Rtn1bocX+0p2Fc/Jkd2FanCEXdw0WNfHHM0w== +"@types/cli-progress@^3.11.0": + version "3.11.0" + resolved "https://registry.yarnpkg.com/@types/cli-progress/-/cli-progress-3.11.0.tgz#ec79df99b26757c3d1c7170af8422e0fc95eef7e" + integrity sha512-XhXhBv1R/q2ahF3BM7qT5HLzJNlIL0wbcGyZVjqOTqAybAnsLisd7gy1UCyIqpL+5Iv6XhlSyzjLCnI2sIdbCg== + dependencies: + "@types/node" "*" + "@types/component-emitter@*": version "1.2.7" resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.7.tgz#d49a2c65a89c8b594e7355a92e43cf1d278b577c" @@ -3393,14 +3717,6 @@ resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.0.5.tgz#95a3a1c3d9603eba80fe67ff56da1ba275ef2eda" integrity sha512-k4ef69sS4sIqAPW9GoBnN+URAON2LeL1H0duQvL4RgdEBna19/WattYSA1qYqvbVEDRTSWzOw56tCLhC/m/IOw== -"@types/encoding-down@5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/encoding-down/-/encoding-down-5.0.0.tgz#0b5b90b93ac3aa75148f19508044e7bd36463557" - integrity sha512-G0MlS/+/U2RIQLcSEhhAcoMrXw3hXUCFSKbhbeEljoKMra2kq+NPX6tfOveSWQLX2hJXBo+YrvKgAGe+tFL1Aw== - dependencies: - "@types/abstract-leveldown" "*" - "@types/level-codec" "*" - "@types/eslint@^7.2.6": version "7.2.6" resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.6.tgz#5e9aff555a975596c03a98b59ecd103decc70c3c" @@ -3618,19 +3934,6 @@ dependencies: "@types/node" "*" -"@types/level-codec@*": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@types/level-codec/-/level-codec-9.0.0.tgz#9f1dc7f9017b6fba094a450602ec0b91cc384059" - integrity sha512-SWYkVJylo1dqblkhrr7UtmsQh4wdZA9bV1y3QJSywMPSqGfW0p1w37N1EayZtKbg1dGReIIQEEOtxk4wZvGrWQ== - -"@types/levelup@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-4.3.0.tgz#4f55585e05a33caa08c1439c344bbba93e947327" - integrity sha512-h82BoajhjU/zwLoM4BUBX/SCodCFi1ae/ZlFOYh5Z4GbHeaXj9H709fF1LYl/StrK8KSwnJOeMRPo9lnC6sz4w== - dependencies: - "@types/abstract-leveldown" "*" - "@types/node" "*" - "@types/listr@0.14.2": version "0.14.2" resolved "https://registry.yarnpkg.com/@types/listr/-/listr-0.14.2.tgz#2e5f80fbc3ca8dceb9940ce9bf8e3113ab452545" @@ -3735,21 +4038,21 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== -"@types/node@12.20.6": - version "12.20.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.6.tgz#7b73cce37352936e628c5ba40326193443cfba25" - integrity sha512-sRVq8d+ApGslmkE9e3i+D3gFGk7aZHAT+G4cIpIEdLJYPsWiSPwcAnJEjddLQQDqV3Ra2jOclX/Sv6YrvGYiWA== - -"@types/node@16.11.26": - version "16.11.26" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.26.tgz#63d204d136c9916fb4dcd1b50f9740fe86884e47" - integrity sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ== +"@types/node@18.15.3": + version "18.15.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.3.tgz#f0b991c32cfc6a4e7f3399d6cb4b8cf9a0315014" + integrity sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw== "@types/node@^13.7.0": version "13.13.9" resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.9.tgz#79df4ae965fb76d31943b54a6419599307a21394" integrity sha512-EPZBIGed5gNnfWCiwEIwTE2Jdg4813odnG8iNPMQGrqVxrI+wL68SPtPeCX+ZxGBaA6pKAVc6jaKgP/Q0QzfdQ== +"@types/node@^16 || ^18": + version "18.16.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.18.tgz#85da09bafb66d4bc14f7c899185336d0c1736390" + integrity sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw== + "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" @@ -3860,14 +4163,6 @@ dependencies: "@types/node" "*" -"@types/rocksdb@3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/rocksdb/-/rocksdb-3.0.1.tgz#bb1e43ca3bfb5d7969211525979160ada09c00bc" - integrity sha512-fQhnc9CeRAi9dnDXlaaItYtm3FhqE8KZYhvj3zJve2pT57pdbySah3uELxrFt15jVcSoKsLHBuwUhU5TqQgnVw== - dependencies: - "@types/abstract-leveldown" "*" - "@types/node" "*" - "@types/sc-auth@*": version "5.0.0" resolved "https://registry.yarnpkg.com/@types/sc-auth/-/sc-auth-5.0.0.tgz#b9bca82783419233ed938f59e37ae940bfdb454a" @@ -4452,6 +4747,26 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +"@yarnpkg/parsers@^3.0.0-rc.18": + version "3.0.0-rc.38" + resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.38.tgz#91b393554017016e12d2f4ea33f589dcfe7d5670" + integrity sha512-YqkUSOZSBjbhzvU/ZbK6yoE70L/KVXAQTyUMaKAFoHEpy7csAljivTBu0C3SZKbDxMRjFWAvnLS8US7W3hFLow== + dependencies: + js-yaml "^3.10.0" + tslib "^2.4.0" + +"@zkochan/js-yaml@0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" + integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== + dependencies: + argparse "^2.0.1" + JSONStream@^1.0.3, JSONStream@^1.0.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -4465,33 +4780,11 @@ abab@^2.0.3: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== -abbrev@1: +abbrev@1, abbrev@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -abstract-leveldown@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-7.0.0.tgz#1a8bc3b07f502793804d456a881dc15cedb9bc5d" - integrity sha512-mFAi5sB/UjpNYglrQ4irzdmr2mbQtE94OJbrAYuK2yRARjH/OACinN1meOAorfnaLPMQdFymSQMlkiDm9AXXKQ== - dependencies: - buffer "^6.0.3" - is-buffer "^2.0.5" - level-concat-iterator "^3.0.0" - level-supports "^2.0.0" - queue-microtask "^1.2.3" - -abstract-leveldown@~6.2.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" - integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== - dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -4604,6 +4897,15 @@ agentkeepalive@^4.1.3: depd "^1.1.2" humanize-ms "^1.2.1" +agentkeepalive@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" + integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== + dependencies: + debug "^4.1.0" + depd "^1.1.2" + humanize-ms "^1.2.1" + aggregate-error@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" @@ -4785,28 +5087,36 @@ anymatch@^3.0.3, anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3, aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -aproba@^2.0.0: +"aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + arch@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== -are-we-there-yet@^1.1.5, are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== dependencies: delegates "^1.0.0" - readable-stream "^2.0.6" + readable-stream "^3.6.0" arg@^4.1.0: version "4.1.3" @@ -4820,6 +5130,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + aria-query@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" @@ -4853,11 +5168,6 @@ array-differ@^3.0.0: resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -5007,11 +5317,6 @@ async-limiter@^1.0.0, async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@0.9.x: - version "0.9.2" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" - integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= - async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -5024,6 +5329,11 @@ async@^3.1.0, async@^3.2.0: resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -5067,19 +5377,14 @@ axe-core@^4.0.2: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.2.tgz#7cf783331320098bfbef620df3b3c770147bc224" integrity sha512-V+Nq70NxKhYt89ArVcaNL9FDryB3vQOd+BFXZIfO3RP6rwtj+2yqqqdHEkacutglPaZLkJeuXKCjCJDMGPtPqg== -axios@0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== - dependencies: - follow-redirects "^1.10.0" - -axios@0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" - integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== +axios@1.3.2, axios@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.2.tgz#7ac517f0fa3ec46e0e636223fd973713a09c72b3" + integrity sha512-1M3O703bYqYuPhbHeya5bnhpYVsDDRyQSabNja04mZtboLNSuZ4YrltestrLXfHgmzua4TpUqRiVKbiQuo2epw== dependencies: - follow-redirects "^1.14.8" + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" axios@^0.19.2: version "0.19.2" @@ -5330,17 +5635,17 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -bin-links@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-2.2.1.tgz#347d9dbb48f7d60e6c11fe68b77a424bee14d61b" - integrity sha512-wFzVTqavpgCCYAh8SVBdnZdiQMxTkGR+T3b14CNpBXIBe2neJWaMGAZ55XWWHELJJ89dscuq0VCBqcVaIOgCMg== +bin-links@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-3.0.3.tgz#3842711ef3db2cd9f16a5f404a996a12db355a6e" + integrity sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA== dependencies: - cmd-shim "^4.0.1" - mkdirp "^1.0.3" - npm-normalize-package-bin "^1.0.0" - read-cmd-shim "^2.0.0" + cmd-shim "^5.0.0" + mkdirp-infer-owner "^2.0.0" + npm-normalize-package-bin "^2.0.0" + read-cmd-shim "^3.0.0" rimraf "^3.0.0" - write-file-atomic "^3.0.3" + write-file-atomic "^4.0.0" binary-extensions@^1.0.0: version "1.13.1" @@ -5391,6 +5696,15 @@ bl@^3.0.0: dependencies: readable-stream "^3.0.1" +bl@^4.0.3, bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + blob-util@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" @@ -5463,6 +5777,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -5693,7 +6014,7 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= -buffer@6.0.3, buffer@^6.0.3: +buffer@6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -5740,6 +6061,13 @@ builtins@^1.0.3: resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= +builtins@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" + integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== + dependencies: + semver "^7.0.0" + bunyan@1.8.15: version "1.8.15" resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.15.tgz#8ce34ca908a17d0776576ca1b2f6cbd916e93b46" @@ -5760,11 +6088,6 @@ bunyan@^1.8.12: mv "~2" safe-json-stringify "~1" -byline@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" - integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= - byte-size@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" @@ -5876,6 +6199,30 @@ cacache@^15.2.0: tar "^6.0.2" unique-filename "^1.1.1" +cacache@^16.0.0, cacache@^16.0.6, cacache@^16.1.0: + version "16.1.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== + dependencies: + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + glob "^8.0.1" + infer-owner "^1.0.4" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + unique-filename "^2.0.0" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -5941,14 +6288,6 @@ camel-case@^4.1.1: pascal-case "^3.1.2" tslib "^2.0.3" -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - camelcase-keys@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" @@ -5963,11 +6302,6 @@ camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - camelcase@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" @@ -6008,6 +6342,11 @@ cardinal@^2.1.1: ansicolors "~0.3.2" redeyed "~2.1.0" +cargo-cp-artifact@^0.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/cargo-cp-artifact/-/cargo-cp-artifact-0.1.8.tgz#353814f49f6aa76601a4bcb3ea5f3071180b90de" + integrity sha512-3j4DaoTrsCD1MRkTF2Soacii0Nx7UHCce0EwUf4fHnggwiE4fbmF2AbnfzayR36DF8KGadfh7M/Yfy625kgPlA== + case-sensitive-paths-webpack-plugin@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" @@ -6054,7 +6393,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.1.2: +chalk@^4.0.2, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -6116,7 +6455,7 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1, chownr@^1.1.4: +chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -6180,6 +6519,13 @@ clean-stack@^3.0.0, clean-stack@^3.0.1: dependencies: escape-string-regexp "4.0.0" +cli-cursor@3.1.0, cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" @@ -6194,13 +6540,6 @@ cli-cursor@^2.0.0, cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - cli-progress@^3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.10.0.tgz#63fd9d6343c598c93542fdfa3563a8b59887d78a" @@ -6216,6 +6555,16 @@ cli-progress@^3.4.0: colors "^1.1.2" string-width "^2.1.1" +cli-spinners@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + +cli-spinners@^2.5.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" + integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + cli-table3@0.6.0, cli-table3@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" @@ -6314,6 +6663,15 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" @@ -6357,10 +6715,10 @@ cloneable-readable@^1.0.0: process-nextick-args "^2.0.0" readable-stream "^2.3.5" -cmd-shim@^4.0.1, cmd-shim@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-4.1.0.tgz#b3a904a6743e9fede4148c6f3800bf2a08135bdd" - integrity sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw== +cmd-shim@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-5.0.0.tgz#8d0aaa1a6b0708630694c4dbde070ed94c707724" + integrity sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw== dependencies: mkdirp-infer-owner "^2.0.0" @@ -6433,6 +6791,11 @@ color-string@^1.5.4: color-name "^1.0.0" simple-swizzle "^0.2.2" +color-support@^1.1.2, color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + color@^3.0.0: version "3.1.3" resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" @@ -6451,12 +6814,12 @@ colors@^1.1.2: resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -columnify@^1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" - integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= +columnify@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== dependencies: - strip-ansi "^3.0.0" + strip-ansi "^6.0.1" wcwidth "^1.0.0" combine-source-map@^0.8.0, combine-source-map@~0.8.0: @@ -6469,7 +6832,7 @@ combine-source-map@^0.8.0, combine-source-map@~0.8.0: lodash.memoize "~3.0.3" source-map "~0.5.3" -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -6609,7 +6972,7 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.0.0, console-control-strings@~1.1.0: +console-control-strings@^1.0.0, console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= @@ -6651,16 +7014,16 @@ conventional-changelog-angular@^5.0.12: compare-func "^2.0.0" q "^1.5.1" -conventional-changelog-core@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.2.tgz#f0897df6d53b5d63dec36b9442bd45354f8b3ce5" - integrity sha512-7pDpRUiobQDNkwHyJG7k9f6maPo9tfPzkSWbRq97GGiZqisElhnvUZSvyQH20ogfOjntB5aadvv6NNcKL1sReg== +conventional-changelog-core@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" + integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== dependencies: add-stream "^1.0.0" - conventional-changelog-writer "^4.0.18" + conventional-changelog-writer "^5.0.0" conventional-commits-parser "^3.2.0" dateformat "^3.0.0" - get-pkg-repo "^1.0.0" + get-pkg-repo "^4.0.0" git-raw-commits "^2.0.8" git-remote-origin-url "^2.0.0" git-semver-tags "^4.1.1" @@ -6669,7 +7032,6 @@ conventional-changelog-core@^4.2.2: q "^1.5.1" read-pkg "^3.0.0" read-pkg-up "^3.0.0" - shelljs "^0.8.3" through2 "^4.0.0" conventional-changelog-preset-loader@^2.3.4: @@ -6677,15 +7039,14 @@ conventional-changelog-preset-loader@^2.3.4: resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== -conventional-changelog-writer@^4.0.18: - version "4.1.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz#1ca7880b75aa28695ad33312a1f2366f4b12659f" - integrity sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw== +conventional-changelog-writer@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" + integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== dependencies: - compare-func "^2.0.0" conventional-commits-filter "^2.0.7" dateformat "^3.0.0" - handlebars "^4.7.6" + handlebars "^4.7.7" json-stringify-safe "^5.0.1" lodash "^4.17.15" meow "^8.0.0" @@ -7168,13 +7529,6 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.6.tgz#865d0b5833d7d8d40f4e5b8a6d76aea3de4725ef" integrity sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw== -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - cyclist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" @@ -7295,14 +7649,14 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@4.3.1, debug@^4.0.0, debug@^4.2.0, debug@^4.3.1: +debug@4, debug@4.3.1, debug@^4.2.0, debug@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" -debug@4.3.4, debug@^4.3.3: +debug@4.3.4, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -7343,7 +7697,7 @@ decamelize-keys@^1.1.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -7405,13 +7759,10 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -deferred-leveldown@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" - integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== - dependencies: - abstract-leveldown "~6.2.1" - inherits "^2.0.3" +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" @@ -7513,6 +7864,11 @@ detect-indent@^6.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== +detect-libc@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" + integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -7723,6 +8079,11 @@ dotenv@8.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== +dotenv@~10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + dtrace-provider@~0.8: version "0.8.8" resolved "https://registry.yarnpkg.com/dtrace-provider/-/dtrace-provider-0.8.8.tgz#2996d5490c37e1347be263b423ed7b297fb0d97e" @@ -7784,12 +8145,12 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -ejs@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" - integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== +ejs@^3.1.6, ejs@^3.1.7: + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== dependencies: - jake "^10.6.1" + jake "^10.8.5" electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.649: version "1.3.669" @@ -7854,7 +8215,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -encoding@^0.1.12: +encoding@^0.1.12, encoding@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -7884,7 +8245,7 @@ enquirer@^2.3.5: dependencies: ansi-colors "^3.2.1" -enquirer@^2.3.6: +enquirer@^2.3.6, enquirer@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -7923,13 +8284,6 @@ errno@^0.1.3, errno@~0.1.7: dependencies: prr "~1.0.1" -errno@~0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -8328,7 +8682,7 @@ esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: +esquery@^1.0.1, esquery@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== @@ -8771,6 +9125,17 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-glob@3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" + integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-glob@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.1.tgz#87ee30e9e9f3eb40d6f254a7997655da753d7c82" @@ -8872,6 +9237,13 @@ figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== +figures@3.2.0, figures@^3.0.0, figures@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -8887,13 +9259,6 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0, figures@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -8943,11 +9308,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs= - finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -8987,14 +9347,6 @@ find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -9047,6 +9399,11 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + flatted@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" @@ -9072,11 +9429,16 @@ follow-redirects@1.5.10: dependencies: debug "=3.1.0" -follow-redirects@^1.0.0, follow-redirects@^1.10.0, follow-redirects@^1.14.8: +follow-redirects@^1.0.0: version "1.14.9" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== +follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -9100,6 +9462,15 @@ fork-ts-checker-webpack-plugin@4.1.6: tapable "^1.0.0" worker-rpc "^0.1.0" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -9159,6 +9530,15 @@ fs-extra@9.1.0, fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.0.tgz#5784b102104433bb0e090f48bfc4a30742c357ed" + integrity sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" @@ -9196,13 +9576,6 @@ fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^1.0.0" -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -9253,19 +9626,34 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== dependencies: - aproba "^1.0.3" + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" gensync@^1.0.0-beta.1: version "1.0.0-beta.1" @@ -9301,27 +9689,21 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-pkg-repo@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" - integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0= +get-pkg-repo@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" + integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== dependencies: - hosted-git-info "^2.1.4" - meow "^3.3.0" - normalize-package-data "^2.3.0" - parse-github-repo-url "^1.3.0" + "@hutson/parse-repository-url" "^3.0.0" + hosted-git-info "^4.0.0" through2 "^2.0.0" + yargs "^16.2.0" get-port@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -9392,20 +9774,20 @@ git-semver-tags@^4.1.1: meow "^8.0.0" semver "^6.0.0" -git-up@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.2.tgz#10c3d731051b366dc19d3df454bfca3f77913a7c" - integrity sha512-kbuvus1dWQB2sSW4cbfTeGpCMd8ge9jx9RKnhXhuJ7tnvT+NIrTVfYZxjtflZddQYcmdOTlkAcjmx7bor+15AQ== +git-up@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" + integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== dependencies: - is-ssh "^1.3.0" - parse-url "^5.0.0" + is-ssh "^1.4.0" + parse-url "^8.1.0" -git-url-parse@^11.4.4: - version "11.4.4" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.4.4.tgz#5d747debc2469c17bc385719f7d0427802d83d77" - integrity sha512-Y4o9o7vQngQDIU9IjyCmRJBin5iYjI5u9ZITnddRZpD7dcCFQj2sL2XuMNbLRE4b4B/4ENPsp2Q8P44fjAZ0Pw== +git-url-parse@^13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" + integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== dependencies: - git-up "^4.0.0" + git-up "^7.0.0" gitconfiglocal@^1.0.0: version "1.0.0" @@ -9443,6 +9825,18 @@ glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@^5.1.2, dependencies: is-glob "^4.0.1" +glob@7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^6.0.1: version "6.0.4" resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" @@ -9466,6 +9860,17 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, gl once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.1: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + global-dirs@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" @@ -9569,7 +9974,7 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.2.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== @@ -9589,6 +9994,11 @@ graceful-fs@^4.2.4: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +graceful-fs@^4.2.6: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + grouped-queue@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-2.0.0.tgz#a2c6713f2171e45db2c300a3a9d7c119d694dac8" @@ -9612,7 +10022,7 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -handlebars@^4.7.6: +handlebars@^4.7.7: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== @@ -9674,7 +10084,7 @@ has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== -has-unicode@^2.0.0, has-unicode@^2.0.1: +has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= @@ -9781,6 +10191,20 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +hosted-git-info@^3.0.6: + version "3.0.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" + integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== + dependencies: + lru-cache "^6.0.0" + +hosted-git-info@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + hosted-git-info@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" @@ -9788,6 +10212,13 @@ hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" +hosted-git-info@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f" + integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw== + dependencies: + lru-cache "^7.5.1" + hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -9876,9 +10307,9 @@ htmlparser2@^3.10.1: readable-stream "^3.1.1" http-cache-semantics@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== http-call@^5.1.2: version "5.3.0" @@ -9954,6 +10385,15 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" @@ -10065,18 +10505,30 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-walk@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== +ignore-walk@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-4.0.1.tgz#fc840e8346cf88a3a9380c5b17933cd8f4d39fa3" + integrity sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw== dependencies: minimatch "^3.0.4" +ignore-walk@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" + integrity sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw== + dependencies: + minimatch "^5.0.1" + ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.0.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + ignore@^5.1.1: version "5.1.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" @@ -10092,11 +10544,6 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== -immediate@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" - integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= - immer@7.0.9: version "7.0.9" resolved "https://registry.yarnpkg.com/immer/-/immer-7.0.9.tgz#28e7552c21d39dd76feccd2b800b7bc86ee4a62e" @@ -10161,13 +10608,6 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= - dependencies: - repeating "^2.0.0" - indent-string@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" @@ -10216,19 +10656,18 @@ ini@^1.3.2, ini@^1.3.4, ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -init-package-json@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-2.0.2.tgz#d81a7e6775af9b618f20bba288e440b8d1ce05f3" - integrity sha512-PO64kVeArePvhX7Ff0jVWkpnE1DfGRvaWcStYrPugcJz9twQGYibagKJuIMHCX7ENcp0M6LJlcjLBuLD5KeJMg== +init-package-json@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-3.0.2.tgz#f5bc9bac93f2bdc005778bc2271be642fecfcd69" + integrity sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A== dependencies: - glob "^7.1.1" - npm-package-arg "^8.1.0" + npm-package-arg "^9.0.1" promzard "^0.3.0" - read "~1.0.1" - read-package-json "^3.0.0" - semver "^7.3.2" + read "^1.0.7" + read-package-json "^5.0.0" + semver "^7.3.5" validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" + validate-npm-package-name "^4.0.0" inline-source-map@~0.6.0: version "0.6.2" @@ -10256,24 +10695,26 @@ inquirer@8.0.0, inquirer@^8.0.0: strip-ansi "^6.0.0" through "^2.3.6" -inquirer@^7.3.3: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== +inquirer@^8.2.4: + version "8.2.5" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" + integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== dependencies: ansi-escapes "^4.2.1" - chalk "^4.1.0" + chalk "^4.1.1" cli-cursor "^3.1.0" cli-width "^3.0.0" external-editor "^3.0.3" figures "^3.0.0" - lodash "^4.17.19" + lodash "^4.17.21" mute-stream "0.0.8" + ora "^5.4.1" run-async "^2.4.0" - rxjs "^6.6.0" + rxjs "^7.5.5" string-width "^4.1.0" strip-ansi "^6.0.0" through "^2.3.6" + wrap-ansi "^7.0.0" insert-module-globals@^7.0.0: version "7.2.0" @@ -10323,6 +10764,11 @@ ip@1.1.5, ip@^1.1.0, ip@^1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + ipaddr.js@1.9.1, ipaddr.js@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -10408,11 +10854,6 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - is-callable@^1.1.4, is-callable@^1.2.2, is-callable@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" @@ -10449,6 +10890,13 @@ is-core-module@^2.0.0, is-core-module@^2.1.0, is-core-module@^2.2.0: dependencies: has "^1.0.3" +is-core-module@^2.8.1: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -10496,6 +10944,11 @@ is-docker@^2.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== +is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -10513,11 +10966,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -10562,6 +11010,11 @@ is-installed-globally@^0.3.2: global-dirs "^2.0.1" is-path-inside "^3.0.1" +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + is-lambda@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" @@ -10594,11 +11047,6 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -10726,12 +11174,12 @@ is-scoped@^2.1.0: dependencies: scoped-regex "^2.0.0" -is-ssh@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.2.tgz#a4b82ab63d73976fd8263cceee27f99a88bdae2b" - integrity sha512-elEw0/0c2UscLrNG+OAorbP539E3rhliKPg+hDMWN9VwrDXfYK+4PBEykDPfxlYYtQvl84TascnQyobfQLHEhQ== +is-ssh@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" + integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== dependencies: - protocols "^1.1.0" + protocols "^2.0.1" is-stream@^1.1.0: version "1.1.0" @@ -10781,6 +11229,11 @@ is-unc-path@^1.0.0: dependencies: unc-path-regex "^0.1.2" +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -10818,6 +11271,11 @@ isbinaryfile@^4.0.0: resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" integrity sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg== +isbinaryfile@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" + integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -10907,13 +11365,13 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jake@^10.6.1: - version "10.8.2" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" - integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== dependencies: - async "0.9.x" - chalk "^2.4.2" + async "^3.2.3" + chalk "^4.0.2" filelist "^1.0.1" minimatch "^3.0.4" @@ -11484,7 +11942,14 @@ jquery@^3.4.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.1: +js-yaml@4.1.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +js-yaml@^3.10.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -11604,9 +12069,9 @@ json5@2.x, json5@^2.1.0: minimist "^1.2.0" json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" @@ -11617,6 +12082,16 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" +json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonc-parser@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -11677,15 +12152,15 @@ jsprim@^1.2.2: array-includes "^3.1.2" object.assign "^4.1.2" -just-diff-apply@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-3.0.0.tgz#a77348d24f0694e378b57293dceb65bdf5a91c4f" - integrity sha512-K2MLc+ZC2DVxX4V61bIKPeMUUfj1YYZ3h0myhchDXOW1cKoPZMnjIoNCqv9bF2n5Oob1PFxuR2gVJxkxz4e58w== +just-diff-apply@^5.2.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" + integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== -just-diff@^3.0.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-3.1.1.tgz#d50c597c6fd4776495308c63bdee1b6839082647" - integrity sha512-sdMWKjRq8qWZEjDcVA6llnUT8RDEBIfOiGpYFPYa9u+2c39JCsejktSP7mj5eRid5EIvTzIpQ2kDOCw1Nq9BjQ== +just-diff@^5.0.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-5.2.0.tgz#60dca55891cf24cd4a094e33504660692348a241" + integrity sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw== jwa@^1.4.1: version "1.4.1" @@ -11776,87 +12251,36 @@ lazy-ass@1.6.0, lazy-ass@^1.6.0: resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= -lerna@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-4.0.0.tgz#b139d685d50ea0ca1be87713a7c2f44a5b678e9e" - integrity sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg== - dependencies: - "@lerna/add" "4.0.0" - "@lerna/bootstrap" "4.0.0" - "@lerna/changed" "4.0.0" - "@lerna/clean" "4.0.0" - "@lerna/cli" "4.0.0" - "@lerna/create" "4.0.0" - "@lerna/diff" "4.0.0" - "@lerna/exec" "4.0.0" - "@lerna/import" "4.0.0" - "@lerna/info" "4.0.0" - "@lerna/init" "4.0.0" - "@lerna/link" "4.0.0" - "@lerna/list" "4.0.0" - "@lerna/publish" "4.0.0" - "@lerna/run" "4.0.0" - "@lerna/version" "4.0.0" +lerna@6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-6.4.1.tgz#a1e5abcb6c00de3367f50d75eca449e382525e0f" + integrity sha512-0t8TSG4CDAn5+vORjvTFn/ZEGyc4LOEsyBUpzcdIxODHPKM4TVOGvbW9dBs1g40PhOrQfwhHS+3fSx/42j42dQ== + dependencies: + "@lerna/add" "6.4.1" + "@lerna/bootstrap" "6.4.1" + "@lerna/changed" "6.4.1" + "@lerna/clean" "6.4.1" + "@lerna/cli" "6.4.1" + "@lerna/command" "6.4.1" + "@lerna/create" "6.4.1" + "@lerna/diff" "6.4.1" + "@lerna/exec" "6.4.1" + "@lerna/filter-options" "6.4.1" + "@lerna/import" "6.4.1" + "@lerna/info" "6.4.1" + "@lerna/init" "6.4.1" + "@lerna/link" "6.4.1" + "@lerna/list" "6.4.1" + "@lerna/publish" "6.4.1" + "@lerna/run" "6.4.1" + "@lerna/validation-error" "6.4.1" + "@lerna/version" "6.4.1" + "@nrwl/devkit" ">=15.4.2 < 16" import-local "^3.0.2" - npmlog "^4.1.2" - -level-concat-iterator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.0.0.tgz#416ddaf0c2ed834f006aa3124ee68906eb4769d4" - integrity sha512-UHGiIdj+uiFQorOrURRvJF3Ei0uHc89ciM/aRi0qsWDV2f0HXypeXUPhJKL6DsONgSR76Pc0AI4sKYEYYRn2Dg== - -level-concat-iterator@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263" - integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== - -level-errors@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" - integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== - dependencies: - errno "~0.1.1" - -level-iterator-stream@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c" - integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== - dependencies: - inherits "^2.0.4" - readable-stream "^3.4.0" - xtend "^4.0.2" - -level-supports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.0.0.tgz#b0b9f63f30c4175fb2612217144f03f3b77580d9" - integrity sha512-8UJgzo1pvWP1wq80ZlkL19fPeK7tlyy0sBY90+2pj0x/kvzHCoLDWyuFJJMrsTn33oc7hbMkS3SkjCxMRPHWaw== - -level-supports@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d" - integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== - dependencies: - xtend "^4.0.2" - -leveldown@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.0.0.tgz#3ec7f00463c45f8f7c8e68248d10ab299059c7ca" - integrity sha512-NEsyqpfdDhpFO49Zm9htNSsWixMa9Q9sUXgrBTaQNPyPo2Kx1wRctgIXMzc7tduXJqNff8QAwulv2eZDboghxQ== - dependencies: - abstract-leveldown "^7.0.0" - napi-macros "~2.0.0" - node-gyp-build "~4.2.1" - -levelup@4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6" - integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== - dependencies: - deferred-leveldown "~5.3.0" - level-errors "~2.0.0" - level-iterator-stream "~4.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" + inquirer "^8.2.4" + npmlog "^6.0.2" + nx ">=15.4.2 < 16" + typescript "^3 || ^4" leven@^3.1.0: version "3.1.0" @@ -11879,32 +12303,37 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -libnpmaccess@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-4.0.1.tgz#17e842e03bef759854adf6eb6c2ede32e782639f" - integrity sha512-ZiAgvfUbvmkHoMTzdwmNWCrQRsDkOC+aM5BDfO0C9aOSwF3R1LdFDBD+Rer1KWtsoQYO35nXgmMR7OUHpDRxyA== +libnpmaccess@^6.0.3: + version "6.0.4" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-6.0.4.tgz#2dd158bd8a071817e2207d3b201d37cf1ad6ae6b" + integrity sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag== dependencies: aproba "^2.0.0" minipass "^3.1.1" - npm-package-arg "^8.0.0" - npm-registry-fetch "^9.0.0" + npm-package-arg "^9.0.1" + npm-registry-fetch "^13.0.0" -libnpmpublish@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-4.0.0.tgz#ad6413914e0dfd78df868ce14ba3d3a4cc8b385b" - integrity sha512-2RwYXRfZAB1x/9udKpZmqEzSqNd7ouBRU52jyG14/xG8EF+O9A62d7/XVR3iABEQHf1iYhkm0Oq9iXjrL3tsXA== +libnpmpublish@^6.0.4: + version "6.0.5" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-6.0.5.tgz#5a894f3de2e267d62f86be2a508e362599b5a4b1" + integrity sha512-LUR08JKSviZiqrYTDfywvtnsnxr+tOvBU0BF8H+9frt7HMvc6Qn6F8Ubm72g5hDTHbq8qupKfDvDAln2TVPvFg== dependencies: - normalize-package-data "^3.0.0" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - semver "^7.1.3" - ssri "^8.0.0" + normalize-package-data "^4.0.0" + npm-package-arg "^9.0.1" + npm-registry-fetch "^13.0.0" + semver "^7.3.7" + ssri "^9.0.0" lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= +lines-and-columns@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b" + integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== + linked-list@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/linked-list/-/linked-list-0.1.0.tgz#798b0ff97d1b92a4fd08480f55aea4e9d49d37bf" @@ -11990,17 +12419,6 @@ listr@0.14.3, listr@^0.14.3: p-map "^2.0.0" rxjs "^6.3.3" -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - load-json-file@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" @@ -12193,7 +12611,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.x, "lodash@>=3.5 <5", lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0: +lodash@4.x, "lodash@>=3.5 <5", lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -12212,6 +12630,14 @@ log-symbols@^4.0.0: dependencies: chalk "^4.0.0" +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + log-update@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" @@ -12248,14 +12674,6 @@ loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4 dependencies: js-tokens "^3.0.0 || ^4.0.0" -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - lower-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" @@ -12277,6 +12695,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: + version "7.14.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.1.tgz#8da8d2f5f59827edb388e63e459ac23d6d408fea" + integrity sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA== + magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" @@ -12299,7 +12722,7 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" -make-dir@^3.0.2: +make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -12311,31 +12734,32 @@ make-error@1.x, make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^8.0.9: - version "8.0.14" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz#aaba73ae0ab5586ad8eaa68bd83332669393e222" - integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== +make-fetch-happen@^10.0.1, make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: + version "10.2.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== dependencies: - agentkeepalive "^4.1.3" - cacache "^15.0.5" + agentkeepalive "^4.2.1" + cacache "^16.1.0" http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" + http-proxy-agent "^5.0.0" https-proxy-agent "^5.0.0" is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" + lru-cache "^7.7.1" + minipass "^3.1.6" minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" + minipass-fetch "^2.0.3" minipass-flush "^1.0.5" minipass-pipeline "^1.2.4" + negotiator "^0.6.3" promise-retry "^2.0.1" - socks-proxy-agent "^5.0.0" - ssri "^8.0.0" + socks-proxy-agent "^7.0.0" + ssri "^9.0.0" -make-fetch-happen@^9.0.1: +make-fetch-happen@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" - integrity "sha1-UwhaCeeXFDPmdl95cb9j9OBcuWg= sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==" + integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== dependencies: agentkeepalive "^4.1.3" cacache "^15.2.0" @@ -12366,7 +12790,7 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -map-obj@^1.0.0, map-obj@^1.0.1: +map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= @@ -12388,11 +12812,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -12461,22 +12880,6 @@ memory-fs@^0.5.0: errno "^0.1.3" readable-stream "^2.0.1" -meow@^3.3.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - meow@^8.0.0: version "8.1.2" resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" @@ -12656,13 +13059,34 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: +"minimatch@2 || 3", minimatch@^3.0.3, minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" +minimatch@3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" + integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -12672,7 +13096,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== @@ -12684,7 +13108,7 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" -minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: +minipass-fetch@^1.3.2: version "1.3.3" resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.3.3.tgz#34c7cea038c817a8658461bf35174551dce17a0a" integrity sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ== @@ -12695,6 +13119,28 @@ minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: optionalDependencies: encoding "^0.1.12" +minipass-fetch@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== + dependencies: + minipass "^3.1.0" + minipass-sized "^1.0.3" + minizlib "^2.0.0" + optionalDependencies: + encoding "^0.1.12" + +minipass-fetch@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== + dependencies: + minipass "^3.1.6" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" @@ -12724,14 +13170,6 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" @@ -12739,14 +13177,19 @@ minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: dependencies: yallist "^4.0.0" -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== +minipass@^3.1.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: - minipass "^2.9.0" + yallist "^4.0.0" + +minipass@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.0.2.tgz#26fc3364d5ea6cb971c6e5259eac67a0887510d1" + integrity sha512-4Hbzei7ZyBp+1aw0874YWpKOubZd/jc53/XU+gkYry1QV+VvrbO8icLM5CUtm4F0hyXn85DXYKEMIS26gitD3A== -minizlib@^2.0.0, minizlib@^2.1.1: +minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -12843,9 +13286,9 @@ module-deps@^6.0.0: xtend "^4.0.0" moment@^2.10.6, moment@^2.19.3, moment@^2.27.0: - version "2.29.3" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.3.tgz#edd47411c322413999f7a5940d526de183c031f3" - integrity "sha1-7dR0EcMiQTmZ96WUDVJt4YPAMfM= sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==" + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== move-concurrently@^1.0.1: version "1.0.1" @@ -12927,10 +13370,10 @@ nan@^2.14.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== -nanoid@^3.1.20: - version "3.1.20" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" - integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== nanomatch@^1.2.9: version "1.2.13" @@ -12949,11 +13392,6 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -napi-macros@^2.0.0, napi-macros@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" - integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== - native-url@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" @@ -12981,7 +13419,7 @@ negotiator@0.6.2, negotiator@^0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -negotiator@0.6.3: +negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== @@ -13009,6 +13447,11 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-addon-api@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + node-fetch@^2.6.1: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -13016,12 +13459,19 @@ node-fetch@^2.6.1: dependencies: whatwg-url "^5.0.0" +node-fetch@^2.6.7: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== -node-gyp-build@^4.2.0, node-gyp-build@~4.2.1: +node-gyp-build@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== @@ -13031,37 +13481,36 @@ node-gyp-build@^4.3.0: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== -node-gyp@^5.0.2: - version "5.1.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" - integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== +node-gyp@^8.2.0: + version "8.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== dependencies: env-paths "^2.2.0" glob "^7.1.4" - graceful-fs "^4.2.2" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.1.2" - request "^2.88.0" - rimraf "^2.6.3" - semver "^5.7.1" - tar "^4.4.12" - which "^1.3.1" + graceful-fs "^4.2.6" + make-fetch-happen "^9.1.0" + nopt "^5.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" -node-gyp@^7.1.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" - integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== +node-gyp@^9.0.0: + version "9.3.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.3.1.tgz#1e19f5f290afcc9c46973d68700cbd21a96192e4" + integrity sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg== dependencies: env-paths "^2.2.0" glob "^7.1.4" - graceful-fs "^4.2.3" - nopt "^5.0.0" - npmlog "^4.1.2" - request "^2.88.2" + graceful-fs "^4.2.6" + make-fetch-happen "^10.0.3" + nopt "^6.0.0" + npmlog "^6.0.0" rimraf "^3.0.2" - semver "^7.3.2" - tar "^6.0.2" + semver "^7.3.5" + tar "^6.1.2" which "^2.0.2" node-int64@^0.4.0: @@ -13128,14 +13577,6 @@ noms@0.0.0: inherits "^2.0.1" readable-stream "~1.0.31" -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - nopt@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" @@ -13143,7 +13584,14 @@ nopt@^5.0.0: dependencies: abbrev "1" -normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== + dependencies: + abbrev "^1.0.0" + +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -13163,6 +13611,16 @@ normalize-package-data@^3.0.0: semver "^7.3.4" validate-npm-package-license "^3.0.1" +normalize-package-data@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c" + integrity sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg== + dependencies: + hosted-git-info "^5.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -13190,7 +13648,7 @@ normalize-url@1.9.1: query-string "^4.1.0" sort-keys "^1.0.0" -normalize-url@^3.0.0, normalize-url@^3.3.0: +normalize-url@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== @@ -13202,6 +13660,13 @@ npm-bundled@^1.1.1: dependencies: npm-normalize-package-bin "^1.0.1" +npm-bundled@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-2.0.1.tgz#94113f7eb342cd7a67de1e789f896b04d2c600f4" + integrity sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw== + dependencies: + npm-normalize-package-bin "^2.0.0" + npm-install-checks@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" @@ -13209,26 +13674,33 @@ npm-install-checks@^4.0.0: dependencies: semver "^7.1.1" -npm-lifecycle@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" - integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== +npm-install-checks@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-5.0.0.tgz#5ff27d209a4e3542b8ac6b0c1db6063506248234" + integrity sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA== dependencies: - byline "^5.0.0" - graceful-fs "^4.1.15" - node-gyp "^5.0.2" - resolve-from "^4.0.0" - slide "^1.1.6" - uid-number "0.0.6" - umask "^1.1.0" - which "^1.3.1" + semver "^7.1.1" -npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: +npm-normalize-package-bin@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2: +npm-normalize-package-bin@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff" + integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== + +npm-package-arg@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" + integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== + dependencies: + hosted-git-info "^3.0.6" + semver "^7.0.0" + validate-npm-package-name "^3.0.0" + +npm-package-arg@^8.0.1, npm-package-arg@^8.1.2: version "8.1.2" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.2.tgz#b868016ae7de5619e729993fbd8d11dc3c52ab62" integrity sha512-6Eem455JsSMJY6Kpd3EyWE+n5hC+g9bSyHr9K9U2zqZb7+02+hObQ2c0+8iDk/mNF+8r1MhY44WypKJAkySIYA== @@ -13246,16 +13718,36 @@ npm-package-arg@^8.1.5: semver "^7.3.4" validate-npm-package-name "^3.0.0" -npm-packlist@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.1.4.tgz#40e96b2b43787d0546a574542d01e066640d09da" - integrity sha512-Qzg2pvXC9U4I4fLnUrBmcIT4x0woLtUgxUi9eC+Zrcv1Xx5eamytGAfbDWQ67j7xOcQ2VW1I3su9smVTIdu7Hw== +npm-package-arg@^9.0.0, npm-package-arg@^9.0.1: + version "9.1.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.1.2.tgz#fc8acecb00235f42270dda446f36926ddd9ac2bc" + integrity sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg== + dependencies: + hosted-git-info "^5.0.0" + proc-log "^2.0.1" + semver "^7.3.5" + validate-npm-package-name "^4.0.0" + +npm-packlist@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-3.0.0.tgz#0370df5cfc2fcc8f79b8f42b37798dd9ee32c2a9" + integrity sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ== dependencies: glob "^7.1.6" - ignore-walk "^3.0.3" + ignore-walk "^4.0.1" npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" +npm-packlist@^5.1.0, npm-packlist@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.3.tgz#69d253e6fd664b9058b85005905012e00e69274b" + integrity sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg== + dependencies: + glob "^8.0.1" + ignore-walk "^5.0.1" + npm-bundled "^2.0.0" + npm-normalize-package-bin "^2.0.0" + npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" @@ -13266,31 +13758,40 @@ npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: npm-package-arg "^8.1.2" semver "^7.3.4" -npm-registry-fetch@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" - integrity "sha1-aMG7gQxGVCdg1ipqll+FpwLUOnY= sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==" +npm-pick-manifest@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz#1d372b4e7ea7c6712316c0e99388a73ed3496e84" + integrity sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw== dependencies: - make-fetch-happen "^9.0.1" - minipass "^3.1.3" - minipass-fetch "^1.3.0" + npm-install-checks "^5.0.0" + npm-normalize-package-bin "^2.0.0" + npm-package-arg "^9.0.0" + semver "^7.3.5" + +npm-registry-fetch@^12.0.0, npm-registry-fetch@^12.0.1: + version "12.0.2" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz#ae583bb3c902a60dae43675b5e33b5b1f6159f1e" + integrity sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA== + dependencies: + make-fetch-happen "^10.0.1" + minipass "^3.1.6" + minipass-fetch "^1.4.1" minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" + minizlib "^2.1.2" + npm-package-arg "^8.1.5" -npm-registry-fetch@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz#86f3feb4ce00313bc0b8f1f8f69daae6face1661" - integrity sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA== +npm-registry-fetch@^13.0.0, npm-registry-fetch@^13.0.1, npm-registry-fetch@^13.3.0: + version "13.3.1" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz#bb078b5fa6c52774116ae501ba1af2a33166af7e" + integrity sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw== dependencies: - "@npmcli/ci-detect" "^1.0.0" - lru-cache "^6.0.0" - make-fetch-happen "^8.0.9" - minipass "^3.1.3" - minipass-fetch "^1.3.0" + make-fetch-happen "^10.0.6" + minipass "^3.1.6" + minipass-fetch "^2.0.3" minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" + minizlib "^2.1.2" + npm-package-arg "^9.0.1" + proc-log "^2.0.0" npm-run-path@^2.0.0: version "2.0.2" @@ -13306,15 +13807,25 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + +npmlog@^6.0.0, npmlog@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" nth-check@^1.0.2: version "1.0.2" @@ -13338,6 +13849,47 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== +nx@15.6.3, "nx@>=15.4.2 < 16": + version "15.6.3" + resolved "https://registry.yarnpkg.com/nx/-/nx-15.6.3.tgz#900087bce38c6e5975660c23ebd41ead1bf54f98" + integrity sha512-3t0A0GPLNen1yPAyE+VGZ3nkAzZYb5nfXtAcx8SHBlKq4u42yBY3khBmP1y4Og3jhIwFIj7J7Npeh8ZKrthmYQ== + dependencies: + "@nrwl/cli" "15.6.3" + "@nrwl/tao" "15.6.3" + "@parcel/watcher" "2.0.4" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "^3.0.0-rc.18" + "@zkochan/js-yaml" "0.0.6" + axios "^1.0.0" + chalk "^4.1.0" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + cliui "^7.0.2" + dotenv "~10.0.0" + enquirer "~2.3.6" + fast-glob "3.2.7" + figures "3.2.0" + flat "^5.0.2" + fs-extra "^11.1.0" + glob "7.1.4" + ignore "^5.0.4" + js-yaml "4.1.0" + jsonc-parser "3.2.0" + lines-and-columns "~2.0.3" + minimatch "3.0.5" + npm-run-path "^4.0.1" + open "^8.4.0" + semver "7.3.4" + string-width "^4.2.3" + strong-log-transformer "^2.1.0" + tar-stream "~2.2.0" + tmp "~0.2.1" + tsconfig-paths "^4.1.2" + tslib "^2.3.0" + v8-compile-cache "2.3.0" + yargs "^17.6.2" + yargs-parser "21.1.1" + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -13528,6 +14080,15 @@ open@^7.0.2: is-docker "^2.0.0" is-wsl "^2.1.1" +open@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" @@ -13567,6 +14128,21 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + original@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" @@ -13579,24 +14155,11 @@ os-browserify@^0.3.0, os-browserify@~0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - ospath@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" @@ -13715,6 +14278,14 @@ p-timeout@^3.2.0: dependencies: p-finally "^1.0.0" +p-transform@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-transform/-/p-transform-1.3.0.tgz#2da960ba92c6a56efbe75cbd1edf3ea7b3191049" + integrity sha512-UJKdSzgd3KOnXXAtqN5+/eeHcvTn1hBkesEmElVgvO/NAYcxAvmjzIGmnNd3Tb/gRAvMBdNRFD4qAWdHxY6QXg== + dependencies: + debug "^4.3.2" + p-queue "^6.6.2" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -13732,15 +14303,15 @@ p-waterfall@^2.1.1: dependencies: p-reduce "^2.0.0" -pacote@^11.1.11, pacote@^11.2.6: - version "11.3.1" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.1.tgz#6ce95dd230db475cbd8789fd1f986bec51b4bf7c" - integrity sha512-TymtwoAG12cczsJIrwI/euOQKtjrQHlD0k0oyt9QSmZGpqa+KdlxKdWR/YUjYizkixaVyztxt/Wsfo8bL3A6Fg== +pacote@^12.0.0, pacote@^12.0.2: + version "12.0.3" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-12.0.3.tgz#b6f25868deb810e7e0ddf001be88da2bcaca57c7" + integrity sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow== dependencies: - "@npmcli/git" "^2.0.1" + "@npmcli/git" "^2.1.0" "@npmcli/installed-package-contents" "^1.0.6" "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^1.8.2" + "@npmcli/run-script" "^2.0.0" cacache "^15.0.5" chownr "^2.0.0" fs-minipass "^2.1.0" @@ -13748,39 +14319,41 @@ pacote@^11.1.11, pacote@^11.2.6: minipass "^3.1.3" mkdirp "^1.0.3" npm-package-arg "^8.0.1" - npm-packlist "^2.1.4" + npm-packlist "^3.0.0" npm-pick-manifest "^6.0.0" - npm-registry-fetch "^9.0.0" + npm-registry-fetch "^12.0.0" promise-retry "^2.0.1" read-package-json-fast "^2.0.1" rimraf "^3.0.2" ssri "^8.0.1" tar "^6.1.0" -pacote@^11.3.5: - version "11.3.5" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" - integrity "sha1-c88fw3crUz9XXjnvqWxQvow9ydI= sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==" +pacote@^13.0.3, pacote@^13.6.1: + version "13.6.2" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-13.6.2.tgz#0d444ba3618ab3e5cd330b451c22967bbd0ca48a" + integrity sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg== dependencies: - "@npmcli/git" "^2.1.0" - "@npmcli/installed-package-contents" "^1.0.6" - "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^1.8.2" - cacache "^15.0.5" + "@npmcli/git" "^3.0.0" + "@npmcli/installed-package-contents" "^1.0.7" + "@npmcli/promise-spawn" "^3.0.0" + "@npmcli/run-script" "^4.1.0" + cacache "^16.0.0" chownr "^2.0.0" fs-minipass "^2.1.0" infer-owner "^1.0.4" - minipass "^3.1.3" - mkdirp "^1.0.3" - npm-package-arg "^8.0.1" - npm-packlist "^2.1.4" - npm-pick-manifest "^6.0.0" - npm-registry-fetch "^11.0.0" + minipass "^3.1.6" + mkdirp "^1.0.4" + npm-package-arg "^9.0.0" + npm-packlist "^5.1.0" + npm-pick-manifest "^7.0.0" + npm-registry-fetch "^13.0.1" + proc-log "^2.0.0" promise-retry "^2.0.1" - read-package-json-fast "^2.0.1" + read-package-json "^5.0.0" + read-package-json-fast "^2.0.3" rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.1.0" + ssri "^9.0.0" + tar "^6.1.11" pako@~1.0.5: version "1.0.11" @@ -13830,19 +14403,14 @@ parse-asn1@^5.0.0: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-conflict-json@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-1.1.1.tgz#54ec175bde0f2d70abf6be79e0e042290b86701b" - integrity sha512-4gySviBiW5TRl7XHvp1agcS7SOe0KZOjC//71dzZVWJrY9hCrgtvl5v3SyIxCZ4fZF47TxD9nfzmxcx76xmbUw== +parse-conflict-json@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz#3d05bc8ffe07d39600dc6436c6aefe382033d323" + integrity sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA== dependencies: - json-parse-even-better-errors "^2.3.0" - just-diff "^3.0.1" - just-diff-apply "^3.0.0" - -parse-github-repo-url@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" - integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A= + json-parse-even-better-errors "^2.3.1" + just-diff "^5.0.1" + just-diff-apply "^5.2.0" parse-json@^2.2.0: version "2.2.0" @@ -13869,25 +14437,19 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-path@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" - integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA== +parse-path@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" + integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== dependencies: - is-ssh "^1.3.0" - protocols "^1.4.0" - qs "^6.9.4" - query-string "^6.13.8" + protocols "^2.0.0" -parse-url@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.2.tgz#856a3be1fcdf78dc93fc8b3791f169072d898b59" - integrity sha512-Czj+GIit4cdWtxo3ISZCvLiUjErSo0iI3wJ+q9Oi3QuMYTI6OZu+7cewMWZ+C1YAnKhYTk6/TLuhIgCypLthPA== +parse-url@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" + integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== dependencies: - is-ssh "^1.3.0" - normalize-url "^3.3.0" - parse-path "^4.0.0" - protocols "^1.4.0" + parse-path "^7.0.0" parse5@5.1.1: version "5.1.1" @@ -13930,13 +14492,6 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -13989,15 +14544,6 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" @@ -14045,6 +14591,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.0.5: version "2.2.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" @@ -14840,13 +15391,13 @@ postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, po supports-color "^6.1.0" postcss@^8.1.0: - version "8.2.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.6.tgz#5d69a974543b45f87e464bc4c3e392a97d6be9fe" - integrity sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg== + version "8.4.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.27.tgz#234d7e4b72e34ba5a92c29636734349e0d9c3057" + integrity sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ== dependencies: - colorette "^1.2.1" - nanoid "^3.1.20" - source-map "^0.6.1" + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" preferred-pm@^3.0.3: version "3.0.3" @@ -14939,6 +15490,11 @@ proc-log@^1.0.0: resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-1.0.0.tgz#0d927307401f69ed79341e83a0b2c9a13395eb77" integrity "sha1-DZJzB0Afae15NB6DoLLJoTOV63c= sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==" +proc-log@^2.0.0, proc-log@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" + integrity sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw== + process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -15048,10 +15604,10 @@ protobufjs@6.9.0: "@types/node" "^13.7.0" long "^4.0.0" -protocols@^1.1.0, protocols@^1.4.0: - version "1.4.8" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" - integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== +protocols@^2.0.0, protocols@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" + integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== proxy-addr@~2.0.5: version "2.0.6" @@ -15069,6 +15625,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -15177,13 +15738,6 @@ qs@6.9.7: resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== -qs@^6.9.4: - version "6.10.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" - integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== - dependencies: - side-channel "^1.0.4" - qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -15197,16 +15751,6 @@ query-string@^4.1.0: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -query-string@^6.13.8: - version "6.14.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" - integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== - dependencies: - decode-uri-component "^0.2.0" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - querystring-es3@^0.2.0, querystring-es3@~0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -15227,11 +15771,6 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== -queue-microtask@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" @@ -15249,15 +15788,6 @@ ramda@~0.26.1: resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== -randomatic@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -15448,10 +15978,10 @@ react@^17.0.1: loose-envify "^1.1.0" object-assign "^4.1.1" -read-cmd-shim@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" - integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== +read-cmd-shim@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-3.0.1.tgz#868c235ec59d1de2db69e11aec885bc095aea087" + integrity sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g== read-only-stream@^2.0.0: version "2.0.0" @@ -15468,42 +15998,23 @@ read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2: json-parse-even-better-errors "^2.3.0" npm-normalize-package-bin "^1.0.1" -read-package-json@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" - integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== - dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^2.0.0" - npm-normalize-package-bin "^1.0.0" - -read-package-json@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-3.0.1.tgz#c7108f0b9390257b08c21e3004d2404c806744b9" - integrity sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng== +read-package-json-fast@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" + integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== dependencies: - glob "^7.1.1" json-parse-even-better-errors "^2.3.0" - normalize-package-data "^3.0.0" - npm-normalize-package-bin "^1.0.0" - -read-package-tree@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" - integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== - dependencies: - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - util-promisify "^2.1.0" + npm-normalize-package-bin "^1.0.1" -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= +read-package-json@^5.0.0, read-package-json@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-5.0.2.tgz#b8779ccfd169f523b67208a89cc912e3f663f3fa" + integrity sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q== dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" + glob "^8.0.1" + json-parse-even-better-errors "^2.3.1" + normalize-package-data "^4.0.0" + npm-normalize-package-bin "^2.0.0" read-pkg-up@^2.0.0: version "2.0.0" @@ -15530,15 +16041,6 @@ read-pkg-up@^7.0.1: read-pkg "^5.2.0" type-fest "^0.8.1" -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - read-pkg@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" @@ -15567,14 +16069,14 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -read@1, read@~1.0.1: +read@1, read@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -15587,7 +16089,7 @@ read@1, read@~1.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -15606,7 +16108,7 @@ readable-stream@~1.0.31: isarray "0.0.1" string_decoder "~0.10.x" -readdir-scoped-modules@^1.0.0, readdir-scoped-modules@^1.1.0: +readdir-scoped-modules@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== @@ -15653,14 +16155,6 @@ recursive-readdir@2.2.2: dependencies: minimatch "3.0.4" -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -15791,13 +16285,6 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - replace-ext@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" @@ -15826,7 +16313,7 @@ request-promise-native@^1.0.8: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.88.0, request@^2.88.2: +request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -16061,15 +16548,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rocksdb@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/rocksdb/-/rocksdb-5.1.1.tgz#ab5a996d4a4f24f84f609a53e1e2c332ee193f9d" - integrity sha512-eHQKJCa1gsvzK31nYJIwZvscIx/MSPbC4ipted2zdSv99OoJSzYCyaEbhujQFo7m+WVR0XC3xTT/parjBn2Uzw== - dependencies: - abstract-leveldown "^7.0.0" - napi-macros "^2.0.0" - node-gyp-build "^4.3.0" - rollup-plugin-babel@^4.3.3: version "4.4.0" resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" @@ -16132,7 +16610,7 @@ rxjs-compat@6.5.4: resolved "https://registry.yarnpkg.com/rxjs-compat/-/rxjs-compat-6.5.4.tgz#03825692af3fe363e04c43f41ff4113d76bbd305" integrity sha512-rkn+lbOHUQOurdd74J/hjmDsG9nFx0z66fvnbs8M95nrtKvNqCKdk7iZqdY51CGmDemTQk+kUPy4s8HVOHtkfA== -rxjs@>=6.4.0, rxjs@^6.6.0: +rxjs@>=6.4.0: version "6.6.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== @@ -16160,12 +16638,19 @@ rxjs@^6.5.5: dependencies: tslib "^1.9.0" +rxjs@^7.5.5: + version "7.8.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" + integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== + dependencies: + tslib "^2.1.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -16336,7 +16821,7 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -16346,6 +16831,13 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== +semver@7.3.4, semver@7.x, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + semver@7.3.5, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" @@ -16353,18 +16845,18 @@ semver@7.3.5, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5: dependencies: lru-cache "^6.0.0" -semver@7.x, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== - dependencies: - lru-cache "^6.0.0" - semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.0.0, semver@^7.3.7: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -16450,7 +16942,7 @@ serve-static@1.14.2: parseurl "~1.3.3" send "0.17.2" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -16544,7 +17036,7 @@ shell-quote@1.7.2, shell-quote@^1.6.1: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== -shelljs@^0.8.3, shelljs@^0.8.4: +shelljs@^0.8.4, shelljs@^0.8.5: version "0.8.5" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" integrity "sha1-3gVUCNg2G+1mxmnS8ABTjO2O4gw= sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==" @@ -16572,6 +17064,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + simple-concat@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" @@ -16627,16 +17124,16 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -slide@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= - smart-buffer@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -16720,15 +17217,6 @@ sockjs@0.3.20: uuid "^3.4.0" websocket-driver "0.6.5" -socks-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz#7c0f364e7b1cf4a7a437e71253bed72e9004be60" - integrity sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA== - dependencies: - agent-base "6" - debug "4" - socks "^2.3.3" - socks-proxy-agent@^6.0.0: version "6.1.1" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" @@ -16738,13 +17226,14 @@ socks-proxy-agent@^6.0.0: debug "^4.3.1" socks "^2.6.1" -socks@^2.3.3: - version "2.6.0" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.0.tgz#6b984928461d39871b3666754b9000ecf39dfac2" - integrity sha512-mNmr9owlinMplev0Wd7UHFlqI4ofnBnNzFuzrm63PPaHgbkqCFe4T5LzwKmtQ/f2tX0NTpcdVLyD/FHxFBstYw== +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== dependencies: - ip "^1.1.5" - smart-buffer "^4.1.0" + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" socks@^2.6.1: version "2.6.1" @@ -16754,6 +17243,14 @@ socks@^2.6.1: ip "^1.1.5" smart-buffer "^4.1.0" +socks@^2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + dependencies: + ip "^2.0.0" + smart-buffer "^4.2.0" + sodium-native@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/sodium-native/-/sodium-native-3.2.0.tgz#68a9469b96edadffef320cbce51294ad5f72a37f" @@ -16796,6 +17293,11 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -16897,11 +17399,6 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -16964,6 +17461,13 @@ ssri@^8.0.0, ssri@^8.0.1: dependencies: minipass "^3.1.1" +ssri@^9.0.0, ssri@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== + dependencies: + minipass "^3.1.1" + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -17100,11 +17604,6 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= - string-argv@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" @@ -17132,7 +17631,16 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.1.1: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -17158,15 +17666,6 @@ string-width@^4.0.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string-width@^4.1.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" @@ -17368,13 +17867,6 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= - dependencies: - get-stdin "^4.0.1" - strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -17563,6 +18055,17 @@ tar-stream@^2.0.0: inherits "^2.0.3" readable-stream "^3.1.1" +tar-stream@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + tar@6.1.11, tar@^6.0.2, tar@^6.1.0: version "6.1.11" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" @@ -17575,35 +18078,23 @@ tar@6.1.11, tar@^6.0.2, tar@^6.1.0: mkdirp "^1.0.3" yallist "^4.0.0" -tar@^4.4.12: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity "sha1-Lk1yY98m8rkU3uEMglqxMhI3QvM= sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==" +tar@^6.1.11, tar@^6.1.2: + version "6.1.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" + integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw== dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^4.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= -temp-write@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-4.0.0.tgz#cd2e0825fc826ae72d201dc26eef3bf7e6fc9320" - integrity sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw== - dependencies: - graceful-fs "^4.1.15" - is-stream "^2.0.0" - make-dir "^3.0.0" - temp-dir "^1.0.0" - uuid "^3.3.2" - tempy@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" @@ -17878,10 +18369,10 @@ treeverse@^1.0.4: resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-1.0.4.tgz#a6b0ebf98a1bca6846ddc7ecbc900df08cb9cd5f" integrity sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g== -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= +treeverse@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-2.0.0.tgz#036dcef04bc3fd79a9b79a68d4da03e882d8a9ca" + integrity sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A== trim-newlines@^3.0.0: version "3.0.1" @@ -17961,6 +18452,15 @@ tsconfig-paths@3.9.0, tsconfig-paths@^3.9.0: minimist "^1.2.0" strip-bom "^3.0.0" +tsconfig-paths@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz#4819f861eef82e6da52fb4af1e8c930a39ed979a" + integrity sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@1.14.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -17986,6 +18486,11 @@ tslib@^2.0.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== +tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.4.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + tslib@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" @@ -18124,6 +18629,11 @@ typescript@4.2.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3" integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw== +"typescript@^3 || ^4": + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + typescript@~4.1.2: version "4.1.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" @@ -18134,16 +18644,6 @@ uglify-js@^3.1.4: resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.2.tgz#fe10319861bccc8682bfe2e8151fbdd8aa921c44" integrity sha512-SbMu4D2Vo95LMC/MetNaso1194M1htEA+JrqE9Hk+G2DhI+itfS9TRu9ZKeCahLDNa/J3n4MqUJ/fOHMzQpRWw== -uid-number@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= - -umask@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" - integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= - umd@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" @@ -18225,6 +18725,13 @@ unique-filename@^1.1.1: dependencies: unique-slug "^2.0.0" +unique-filename@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== + dependencies: + unique-slug "^3.0.0" + unique-slug@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" @@ -18232,6 +18739,13 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-slug@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" + integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== + dependencies: + imurmurhash "^0.1.4" + unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" @@ -18339,13 +18853,6 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util-promisify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" - integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= - dependencies: - object.getownpropertydescriptors "^2.0.3" - util.promisify@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" @@ -18405,11 +18912,16 @@ uuid@^3.3.2, uuid@^3.4.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.3.0: +uuid@^8.3.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +v8-compile-cache@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + v8-compile-cache@^2.0.3: version "2.1.1" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" @@ -18439,6 +18951,13 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" +validate-npm-package-name@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" + integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== + dependencies: + builtins "^5.0.0" + validator@13.7.0: version "13.7.0" resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" @@ -18565,10 +19084,10 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -wcwidth@^1.0.0: +wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: defaults "^1.0.3" @@ -18752,15 +19271,6 @@ whatwg-url@^8.0.0: tr46 "^2.0.2" webidl-conversions "^5.0.0" -whatwg-url@^8.4.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.5.0.tgz#7752b8464fc0903fec89aa9846fc9efe07351fd3" - integrity sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg== - dependencies: - lodash "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^6.1.0" - which-boxed-primitive@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -18799,12 +19309,12 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== +wide-align@^1.1.2, wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: - string-width "^1.0.2 || 2" + string-width "^1.0.2 || 2 || 3 || 4" widest-line@^3.1.0: version "3.1.0" @@ -19039,7 +19549,7 @@ write-file-atomic@^2.4.2: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: +write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== @@ -19049,6 +19559,14 @@ write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +write-file-atomic@^4.0.0, write-file-atomic@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + write-json-file@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" @@ -19116,7 +19634,7 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -19131,7 +19649,7 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -19161,6 +19679,11 @@ yargs-parser@20.x, yargs-parser@^20.2.3: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== +yargs-parser@21.1.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" @@ -19223,6 +19746,19 @@ yargs@^16.1.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@^17.6.2: + version "17.6.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yarn@1.22.17: version "1.22.17" resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.17.tgz#bf910747d22497b573131f7341c0e1d15c74036c" @@ -19236,13 +19772,13 @@ yauzl@^2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" -yeoman-environment@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-3.3.0.tgz#bfb1f5bc1338e09e77e621f49762c61b1934ac65" - integrity sha512-2OV2hgRoLjkQrtNIfaTejinMHR5yjJ4DF/aG1Le/qnzHRAsE6gfFm9YL2Sq5FW5l16XSmt7BCMQlcDVyPTxpSg== +yeoman-environment@3.13.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-3.13.0.tgz#9db29f47352cb4a38eb0ef830a86091be3fd7240" + integrity sha512-eBPpBZCvFzx6yk17x+ZrOHp8ADDv6qHradV+SgdugaQKIy9NjEX5AkbwdTHLOgccSTkQ9rN791xvYOu6OmqjBg== dependencies: - "@npmcli/arborist" "^2.2.2" - are-we-there-yet "^1.1.5" + "@npmcli/arborist" "^4.0.4" + are-we-there-yet "^2.0.0" arrify "^2.0.1" binaryextensions "^4.15.0" chalk "^4.1.0" @@ -19259,14 +19795,16 @@ yeoman-environment@3.3.0: grouped-queue "^2.0.0" inquirer "^8.0.0" is-scoped "^2.1.0" + isbinaryfile "^4.0.10" lodash "^4.17.10" log-symbols "^4.0.0" mem-fs "^1.2.0 || ^2.0.0" mem-fs-editor "^8.1.2 || ^9.0.0" minimatch "^3.0.4" - npmlog "^4.1.2" + npmlog "^5.0.1" p-queue "^6.6.2" - pacote "^11.2.6" + p-transform "^1.3.0" + pacote "^12.0.2" preferred-pm "^3.0.3" pretty-bytes "^5.3.0" semver "^7.1.3"