diff --git a/.eslintrc b/.eslintrc index 9d5a9935..85ab771b 100644 --- a/.eslintrc +++ b/.eslintrc @@ -50,6 +50,11 @@ "ignoreConsecutiveComments": true } ], + "curly": [ + "error", + "multi-line", + "consistent" + ], "import/order": [ "error", { @@ -137,6 +142,10 @@ "format": ["PascalCase"], "trailingUnderscore": "allowSingleOrDouble" }, + { + "selector": "enumMember", + "format": ["PascalCase", "UPPER_CASE"] + }, { "selector": "objectLiteralProperty", "format": null diff --git a/.github/workflows/codesee-arch-diagram.yml b/.github/workflows/codesee-arch-diagram.yml new file mode 100644 index 00000000..fe56ca3f --- /dev/null +++ b/.github/workflows/codesee-arch-diagram.yml @@ -0,0 +1,87 @@ +on: + push: + branches: + - master + pull_request_target: + types: [opened, synchronize, reopened] + +name: CodeSee Map + +jobs: + test_map_action: + runs-on: ubuntu-latest + continue-on-error: true + name: Run CodeSee Map Analysis + steps: + - name: checkout + id: checkout + uses: actions/checkout@v2 + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.ref }} + fetch-depth: 0 + + # codesee-detect-languages has an output with id languages. + - name: Detect Languages + id: detect-languages + uses: Codesee-io/codesee-detect-languages-action@latest + + - name: Configure JDK 16 + uses: actions/setup-java@v2 + if: ${{ fromJSON(steps.detect-languages.outputs.languages).java }} + with: + java-version: '16' + distribution: 'zulu' + + # CodeSee Maps Go support uses a static binary so there's no setup step required. + + - name: Configure Node.js 14 + uses: actions/setup-node@v2 + if: ${{ fromJSON(steps.detect-languages.outputs.languages).javascript }} + with: + node-version: '14' + + - name: Configure Python 3.x + uses: actions/setup-python@v2 + if: ${{ fromJSON(steps.detect-languages.outputs.languages).python }} + with: + python-version: '3.10' + architecture: 'x64' + + - name: Configure Ruby '3.x' + uses: ruby/setup-ruby@v1 + if: ${{ fromJSON(steps.detect-languages.outputs.languages).ruby }} + with: + ruby-version: '3.0' + + # We need the rust toolchain because it uses rustc and cargo to inspect the package + - name: Configure Rust 1.x stable + uses: actions-rs/toolchain@v1 + if: ${{ fromJSON(steps.detect-languages.outputs.languages).rust }} + with: + toolchain: stable + + - name: Generate Map + id: generate-map + uses: Codesee-io/codesee-map-action@latest + with: + step: map + api_token: ${{ secrets.CODESEE_ARCH_DIAG_API_TOKEN }} + github_ref: ${{ github.ref }} + languages: ${{ steps.detect-languages.outputs.languages }} + + - name: Upload Map + id: upload-map + uses: Codesee-io/codesee-map-action@latest + with: + step: mapUpload + api_token: ${{ secrets.CODESEE_ARCH_DIAG_API_TOKEN }} + github_ref: ${{ github.ref }} + + - name: Insights + id: insights + uses: Codesee-io/codesee-map-action@latest + with: + step: insights + api_token: ${{ secrets.CODESEE_ARCH_DIAG_API_TOKEN }} + github_ref: ${{ github.ref }} diff --git a/.gitignore b/.gitignore index 3b713d5a..84856b09 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,13 @@ /dist .env* !.env.example +# nix /result* +/builds +# node-gyp +/build +# prebuildify +/prebuilds # Logs logs diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 78802bab..f6bd4c38 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,25 +1,307 @@ +workflow: + rules: + # Disable merge request pipelines + - if: $CI_MERGE_REQUEST_ID + when: never + - when: always + variables: GIT_SUBMODULE_STRATEGY: recursive + GH_PROJECT_PATH: "MatrixAI/${CI_PROJECT_NAME}" + GH_PROJECT_URL: "https://${GITHUB_TOKEN}@github.com/${GH_PROJECT_PATH}.git" + # Cache .npm + npm_config_cache: "${CI_PROJECT_DIR}/tmp/npm" + # Prefer offline node module installation + npm_config_prefer_offline: "true" + # Homebrew cache only used by macos runner + HOMEBREW_CACHE: "${CI_PROJECT_DIR}/tmp/Homebrew" + +default: + interruptible: true + before_script: + # Replace this in windows runners that use powershell + # with `mkdir -Force "$CI_PROJECT_DIR/tmp"` + - mkdir -p "$CI_PROJECT_DIR/tmp" + +# Cached directories shared between jobs & pipelines per-branch per-runner +cache: + key: $CI_COMMIT_REF_SLUG + # Preserve cache even if job fails + when: 'always' + paths: + - ./tmp/npm/ + # Homebrew cache is only used by the macos runner + - ./tmp/Homebrew + # Chocolatey cache is only used by the windows runner + - ./tmp/chocolatey/ + # `jest` cache is configured in jest.config.js + - ./tmp/jest/ stages: - - check + - check # Linting, unit tests + - build # Cross-platform library compilation, unit tests + - integration # Cross-platform application bundling, integration tests, and pre-release + - release # Cross-platform distribution and deployment image: registry.gitlab.com/matrixai/engineering/maintenance/gitlab-runner -lint: +check:lint: stage: check - interruptible: true + needs: [] script: - > - nix-shell --run ' - npm run lint; - ' + nix-shell --arg ci true --run $' + npm run lint; + npm run lint-shell; + ' + rules: + # Runs on feature and staging commits and ignores version commits + - if: $CI_COMMIT_BRANCH =~ /^(?:feature.*|staging)$/ && $CI_COMMIT_TITLE !~ /^[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + # Runs on tag pipeline where the tag is a prerelease or release version + - if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + # Manually run on commits other than master and ignore version commits + - if: $CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != 'master' && $CI_COMMIT_TITLE !~ /^[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + when: manual -test: +check:test: stage: check - interruptible: true + needs: [] + script: + - > + nix-shell --arg ci true --run $' + npm test -- --ci --coverage; + ' + artifacts: + when: always + reports: + junit: + - ./tmp/junit/junit.xml + coverage_report: + coverage_format: cobertura + path: ./tmp/coverage/cobertura-coverage.xml + coverage: '/All files[^|]*\|[^|]*\s+([\d\.]+)/' + rules: + # Runs on feature commits and ignores version commits + - if: $CI_COMMIT_BRANCH =~ /^feature.*$/ && $CI_COMMIT_TITLE !~ /^[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + # Manually run on commits other than master and staging and ignore version commits + - if: $CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH !~ /^(?:master|staging)$/ && $CI_COMMIT_TITLE !~ /^[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + when: manual + +build:merge: + stage: build + needs: [] + allow_failure: true + script: + # Required for `gh pr create` + - git remote add upstream "$GH_PROJECT_URL" + - > + nix-shell --arg ci true --run $' + gh pr create \ + --head staging \ + --base master \ + --title "ci: merge staging to master" \ + --body "This is an automatic PR generated by the pipeline CI/CD. This will be automatically fast-forward merged if successful." \ + --assignee "@me" \ + --no-maintainer-edit \ + --repo "$GH_PROJECT_PATH" || true; + printf "Pipeline Attempt on ${CI_PIPELINE_ID} for ${CI_COMMIT_SHA}\n\n${CI_PIPELINE_URL}" \ + | gh pr comment staging \ + --body-file - \ + --repo "$GH_PROJECT_PATH"; + ' + rules: + # Runs on staging commits and ignores version commits + - if: $CI_COMMIT_BRANCH == 'staging' && $CI_COMMIT_TITLE !~ /^[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + # Runs on tag pipeline where the tag is a prerelease or release version + - if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + +build:dist: + stage: build + needs: [] + script: + - > + nix-shell --arg ci true --run $' + npm run build --verbose; + ' + artifacts: + when: always + paths: + - ./dist + rules: + # Runs on staging commits and ignores version commits + - if: $CI_COMMIT_BRANCH == 'staging' && $CI_COMMIT_TITLE !~ /^[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + # Runs on tag pipeline where the tag is a prerelease or release version + - if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + +build:linux: + stage: build + needs: [] + script: + - > + nix-shell --arg ci true --run $' + npm test -- --ci --coverage; + npm run bench; + ' + artifacts: + when: always + reports: + junit: + - ./tmp/junit/junit.xml + coverage_report: + coverage_format: cobertura + path: ./tmp/coverage/cobertura-coverage.xml + metrics: ./benches/results/metrics.txt + coverage: '/All files[^|]*\|[^|]*\s+([\d\.]+)/' + rules: + # Runs on staging commits and ignores version commits + - if: $CI_COMMIT_BRANCH == 'staging' && $CI_COMMIT_TITLE !~ /^[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + # Runs on tag pipeline where the tag is a prerelease or release version + - if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + +build:windows: + stage: build + needs: [] + tags: + - windows + before_script: + - mkdir -Force "$CI_PROJECT_DIR/tmp" + script: + - .\scripts\choco-install.ps1 + - refreshenv + - npm install --ignore-scripts + - $env:Path = "$(npm bin);" + $env:Path + - npm test -- --ci --coverage + - npm run bench + artifacts: + when: always + reports: + junit: + - ./tmp/junit/junit.xml + coverage_report: + coverage_format: cobertura + path: ./tmp/coverage/cobertura-coverage.xml + metrics: ./benches/results/metrics.txt + coverage: '/All files[^|]*\|[^|]*\s+([\d\.]+)/' + rules: + # Runs on staging commits and ignores version commits + - if: $CI_COMMIT_BRANCH == 'staging' && $CI_COMMIT_TITLE !~ /^[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + # Runs on tag pipeline where the tag is a prerelease or release version + - if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + +build:macos: + stage: build + needs: [] + tags: + - shared-macos-amd64 + image: macos-11-xcode-12 + script: + - eval "$(brew shellenv)" + - ./scripts/brew-install.sh + - hash -r + - npm install --ignore-scripts + - export PATH="$(npm bin):$PATH" + - npm test -- --ci --coverage + - npm run bench + artifacts: + when: always + reports: + junit: + - ./tmp/junit/junit.xml + coverage_report: + coverage_format: cobertura + path: ./tmp/coverage/cobertura-coverage.xml + metrics: ./benches/results/metrics.txt + coverage: '/All files[^|]*\|[^|]*\s+([\d\.]+)/' + rules: + # Runs on staging commits and ignores version commits + - if: $CI_COMMIT_BRANCH == 'staging' && $CI_COMMIT_TITLE !~ /^[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + # Runs on tag pipeline where the tag is a prerelease or release version + - if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + +build:prerelease: + stage: build + needs: + - build:dist + - build:linux + - build:windows + - build:macos + # Don't interrupt publishing job + interruptible: false + script: + - echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ./.npmrc + - echo 'Publishing library prerelease' + - > + nix-shell --arg ci true --run $' + npm publish --tag prerelease --access public; + ' + after_script: + - rm -f ./.npmrc + rules: + # Only runs on tag pipeline where the tag is a prerelease version + # This requires dependencies to also run on tag pipeline + # However version tag comes with a version commit + # Dependencies must not run on the version commit + - if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+-.*[0-9]+$/ + +integration:merge: + stage: integration + needs: + - build:merge + - job: build:linux + optional: true + - job: build:windows + optional: true + - job: build:macos + optional: true + # Requires mutual exclusion + resource_group: integration:merge + allow_failure: true + variables: + # Ensure that CI/CD is fetching all commits + # this is necessary to checkout origin/master + # and to also merge origin/staging + GIT_DEPTH: 0 + script: + - > + nix-shell --arg ci true --run $' + printf "Pipeline Succeeded on ${CI_PIPELINE_ID} for ${CI_COMMIT_SHA}\n\n${CI_PIPELINE_URL}" \ + | gh pr comment staging \ + --body-file - \ + --repo "$GH_PROJECT_PATH"; + ' + - git remote add upstream "$GH_PROJECT_URL" + - git checkout origin/master + # Merge up to the current commit (not the latest commit) + - git merge --ff-only "$CI_COMMIT_SHA" + - git push upstream HEAD:master + rules: + # Runs on staging commits and ignores version commits + - if: $CI_COMMIT_BRANCH == 'staging' && $CI_COMMIT_TITLE !~ /^[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + # Runs on tag pipeline where the tag is a prerelease or release version + - if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(?:-.*[0-9]+)?$/ + +release:distribution: + stage: release + needs: + - build:dist + - build:linux + - build:windows + - build:macos + - integration:merge + # Don't interrupt publishing job + interruptible: false script: + - echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ./.npmrc + - echo 'Publishing library' - > - nix-shell --run ' - npm run test; - ' + nix-shell --arg ci true --run $' + npm publish --access public; + ' + after_script: + - rm -f ./.npmrc + rules: + # Only runs on tag pipeline where the tag is a release version + # This requires dependencies to also run on tag pipeline + # However version tag comes with a version commit + # Dependencies must not run on the version commit + - if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+$/ diff --git a/.npmignore b/.npmignore index 37ae4c1d..6e59877f 100644 --- a/.npmignore +++ b/.npmignore @@ -1,15 +1,15 @@ .* +/*.nix /nix -/pkgs.nix -/default.nix -/shell.nix -/release.nix /tsconfig.json /tsconfig.build.json /jest.config.js +/scripts /src /tests /tmp /docs /benches +/build +/builds /dist/tsbuildinfo diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..7c06da2c --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +# Enables npm link +prefix=~/.npm diff --git a/README.md b/README.md index cca3595f..13a40b98 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # js-encryptedfs -[![pipeline status](https://gitlab.com/MatrixAI/open-source/js-encryptedfs/badges/master/pipeline.svg)](https://gitlab.com/MatrixAI/open-source/js-encryptedfs/commits/master) +staging:[![pipeline status](https://gitlab.com/MatrixAI/open-source/js-workers/badges/staging/pipeline.svg)](https://gitlab.com/MatrixAI/open-source/js-workers/commits/staging) +master:[![pipeline status](https://gitlab.com/MatrixAI/open-source/js-workers/badges/master/pipeline.svg)](https://gitlab.com/MatrixAI/open-source/js-workers/commits/master) Encrypted filesystem library for TypeScript/JavaScript applications @@ -9,6 +10,7 @@ Encrypted filesystem library for TypeScript/JavaScript applications * Encrypted-At-Rest - all persistence is encrypted * Random Read & Write - encryption and decryption operates over fixed-block sizes * Streamable - files do not need to loaded fully in-memory +* Comprehensive continuous benchmarks in CI/CD Development based on js-virtualfs: https://github.com/MatrixAI/js-virtualfs @@ -137,6 +139,26 @@ See the docs at: https://matrixai.github.io/js-encryptedfs/ ### Publishing +Publishing is handled automatically by the staging pipeline. + +Prerelease: + +```sh +# npm login +npm version prepatch --preid alpha # premajor/preminor/prepatch +git push --follow-tags +``` + +Release: + +```sh +# npm login +npm version patch # major/minor/patch +git push --follow-tags +``` + +Manually: + ```sh # npm login npm version patch # major/minor/patch diff --git a/benches/crypto100KiB.ts b/benches/crypto_100KiB.ts similarity index 84% rename from benches/crypto100KiB.ts rename to benches/crypto_100KiB.ts index de2f092e..e019287f 100644 --- a/benches/crypto100KiB.ts +++ b/benches/crypto_100KiB.ts @@ -1,12 +1,12 @@ import type { EFSWorkerModule } from '@/workers'; - import os from 'os'; +import path from 'path'; import b from 'benny'; import { spawn, Worker, Transfer } from 'threads'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { WorkerManager } from '@matrixai/workers'; import * as utils from '@/utils'; -import packageJson from '../package.json'; +import { suiteCommon } from './utils'; const logger = new Logger('crypto100KiB Bench', LogLevel.WARN, [ new StreamHandler(), @@ -25,7 +25,7 @@ async function main() { const plain100KiB = utils.getRandomBytesSync(1024 * 100); const cipher100KiB = await utils.encrypt(key, plain100KiB); const summary = await b.suite( - 'crypto100KiB', + path.basename(__filename, path.extname(__filename)), b.add('encrypt 100 KiB of data', async () => { await utils.encrypt(key, plain100KiB); }), @@ -58,28 +58,14 @@ async function main() { utils.fromArrayBuffer(decrypted); } }), - b.cycle(), - b.complete(), - b.save({ - file: 'crypto100KiB', - folder: 'benches/results', - version: packageJson.version, - details: true, - }), - b.save({ - file: 'crypto100KiB', - folder: 'benches/results', - format: 'chart.html', - }), + ...suiteCommon, ); await workerManager.destroy(); return summary; } if (require.main === module) { - (async () => { - await main(); - })(); + void main(); } export default main; diff --git a/benches/crypto10KiB.ts b/benches/crypto_10KiB.ts similarity index 84% rename from benches/crypto10KiB.ts rename to benches/crypto_10KiB.ts index 46529d37..53abbaec 100644 --- a/benches/crypto10KiB.ts +++ b/benches/crypto_10KiB.ts @@ -1,12 +1,12 @@ import type { EFSWorkerModule } from '@/workers'; - import os from 'os'; +import path from 'path'; import b from 'benny'; import { spawn, Worker, Transfer } from 'threads'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { WorkerManager } from '@matrixai/workers'; import * as utils from '@/utils'; -import packageJson from '../package.json'; +import { suiteCommon } from './utils'; const logger = new Logger('crypto10KiB Bench', LogLevel.WARN, [ new StreamHandler(), @@ -25,7 +25,7 @@ async function main() { const plain10KiB = utils.getRandomBytesSync(1024 * 10); const cipher10KiB = await utils.encrypt(key, plain10KiB); const summary = await b.suite( - 'crypto10KiB', + path.basename(__filename, path.extname(__filename)), b.add('encrypt 10 KiB of data', async () => { await utils.encrypt(key, plain10KiB); }), @@ -58,28 +58,14 @@ async function main() { utils.fromArrayBuffer(decrypted); } }), - b.cycle(), - b.complete(), - b.save({ - file: 'crypto10KiB', - folder: 'benches/results', - version: packageJson.version, - details: true, - }), - b.save({ - file: 'crypto10KiB', - folder: 'benches/results', - format: 'chart.html', - }), + ...suiteCommon, ); await workerManager.destroy(); return summary; } if (require.main === module) { - (async () => { - await main(); - })(); + void main(); } export default main; diff --git a/benches/crypto16KiB.ts b/benches/crypto_16KiB.ts similarity index 84% rename from benches/crypto16KiB.ts rename to benches/crypto_16KiB.ts index b53d7c11..81b4152e 100644 --- a/benches/crypto16KiB.ts +++ b/benches/crypto_16KiB.ts @@ -1,12 +1,12 @@ import type { EFSWorkerModule } from '@/workers'; - import os from 'os'; +import path from 'path'; import b from 'benny'; import { spawn, Worker, Transfer } from 'threads'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { WorkerManager } from '@matrixai/workers'; import * as utils from '@/utils'; -import packageJson from '../package.json'; +import { suiteCommon } from './utils'; const logger = new Logger('crypto16KiB Bench', LogLevel.WARN, [ new StreamHandler(), @@ -25,7 +25,7 @@ async function main() { const plain16KiB = utils.getRandomBytesSync(1024 * 16); const cipher16KiB = await utils.encrypt(key, plain16KiB); const summary = await b.suite( - 'crypto16KiB', + path.basename(__filename, path.extname(__filename)), b.add('encrypt 16 KiB of data', async () => { await utils.encrypt(key, plain16KiB); }), @@ -58,28 +58,14 @@ async function main() { utils.fromArrayBuffer(decrypted); } }), - b.cycle(), - b.complete(), - b.save({ - file: 'crypto16KiB', - folder: 'benches/results', - version: packageJson.version, - details: true, - }), - b.save({ - file: 'crypto16KiB', - folder: 'benches/results', - format: 'chart.html', - }), + ...suiteCommon, ); await workerManager.destroy(); return summary; } if (require.main === module) { - (async () => { - await main(); - })(); + void main(); } export default main; diff --git a/benches/crypto1KiB.ts b/benches/crypto_1KiB.ts similarity index 84% rename from benches/crypto1KiB.ts rename to benches/crypto_1KiB.ts index 1dd33633..9d892c2d 100644 --- a/benches/crypto1KiB.ts +++ b/benches/crypto_1KiB.ts @@ -1,12 +1,12 @@ import type { EFSWorkerModule } from '@/workers'; - import os from 'os'; +import path from 'path'; import b from 'benny'; import { spawn, Transfer, Worker } from 'threads'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { WorkerManager } from '@matrixai/workers'; import * as utils from '@/utils'; -import packageJson from '../package.json'; +import { suiteCommon } from './utils'; const logger = new Logger('crypto1KiB Bench', LogLevel.WARN, [ new StreamHandler(), @@ -25,7 +25,7 @@ async function main() { const plain1KiB = utils.getRandomBytesSync(1024); const cipher1KiB = await utils.encrypt(key, plain1KiB); const summary = await b.suite( - 'crypto1KiB', + path.basename(__filename, path.extname(__filename)), b.add('encrypt 1 KiB of data', async () => { await utils.encrypt(key, plain1KiB); }), @@ -58,28 +58,14 @@ async function main() { utils.fromArrayBuffer(decrypted); } }), - b.cycle(), - b.complete(), - b.save({ - file: 'crypto1KiB', - folder: 'benches/results', - version: packageJson.version, - details: true, - }), - b.save({ - file: 'crypto1KiB', - folder: 'benches/results', - format: 'chart.html', - }), + ...suiteCommon, ); await workerManager.destroy(); return summary; } if (require.main === module) { - (async () => { - await main(); - })(); + void main(); } export default main; diff --git a/benches/crypto1MiB.ts b/benches/crypto_1MiB.ts similarity index 84% rename from benches/crypto1MiB.ts rename to benches/crypto_1MiB.ts index c56efff4..1db3b251 100644 --- a/benches/crypto1MiB.ts +++ b/benches/crypto_1MiB.ts @@ -1,12 +1,12 @@ import type { EFSWorkerModule } from '@/workers'; - import os from 'os'; +import path from 'path'; import b from 'benny'; import { spawn, Worker, Transfer } from 'threads'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { WorkerManager } from '@matrixai/workers'; import * as utils from '@/utils'; -import packageJson from '../package.json'; +import { suiteCommon } from './utils'; const logger = new Logger('crypto1MiB Bench', LogLevel.WARN, [ new StreamHandler(), @@ -25,7 +25,7 @@ async function main() { const plain1MiB = utils.getRandomBytesSync(1024 * 1024); const cipher1MiB = await utils.encrypt(key, plain1MiB); const summary = await b.suite( - 'crypto1MiB', + path.basename(__filename, path.extname(__filename)), b.add('encrypt 1 MiB of data', async () => { await utils.encrypt(key, plain1MiB); }), @@ -58,28 +58,14 @@ async function main() { utils.fromArrayBuffer(decrypted); } }), - b.cycle(), - b.complete(), - b.save({ - file: 'crypto1MiB', - folder: 'benches/results', - version: packageJson.version, - details: true, - }), - b.save({ - file: 'crypto1MiB', - folder: 'benches/results', - format: 'chart.html', - }), + ...suiteCommon, ); await workerManager.destroy(); return summary; } if (require.main === module) { - (async () => { - await main(); - })(); + void main(); } export default main; diff --git a/benches/crypto24KiB.ts b/benches/crypto_24KiB.ts similarity index 84% rename from benches/crypto24KiB.ts rename to benches/crypto_24KiB.ts index 788b75e0..9e3d1d49 100644 --- a/benches/crypto24KiB.ts +++ b/benches/crypto_24KiB.ts @@ -1,12 +1,12 @@ import type { EFSWorkerModule } from '@/workers'; - import os from 'os'; +import path from 'path'; import b from 'benny'; import { spawn, Worker, Transfer } from 'threads'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { WorkerManager } from '@matrixai/workers'; import * as utils from '@/utils'; -import packageJson from '../package.json'; +import { suiteCommon } from './utils'; const logger = new Logger('crypto24KiB Bench', LogLevel.WARN, [ new StreamHandler(), @@ -25,7 +25,7 @@ async function main() { const plain24KiB = utils.getRandomBytesSync(1024 * 24); const cipher24KiB = await utils.encrypt(key, plain24KiB); const summary = await b.suite( - 'crypto24KiB', + path.basename(__filename, path.extname(__filename)), b.add('encrypt 24 KiB of data', async () => { await utils.encrypt(key, plain24KiB); }), @@ -58,28 +58,14 @@ async function main() { utils.fromArrayBuffer(decrypted); } }), - b.cycle(), - b.complete(), - b.save({ - file: 'crypto24KiB', - folder: 'benches/results', - version: packageJson.version, - details: true, - }), - b.save({ - file: 'crypto24KiB', - folder: 'benches/results', - format: 'chart.html', - }), + ...suiteCommon, ); await workerManager.destroy(); return summary; } if (require.main === module) { - (async () => { - await main(); - })(); + void main(); } export default main; diff --git a/benches/crypto32KiB.ts b/benches/crypto_32KiB.ts similarity index 84% rename from benches/crypto32KiB.ts rename to benches/crypto_32KiB.ts index c1db691d..883b9b06 100644 --- a/benches/crypto32KiB.ts +++ b/benches/crypto_32KiB.ts @@ -1,12 +1,12 @@ import type { EFSWorkerModule } from '@/workers'; - import os from 'os'; +import path from 'path'; import b from 'benny'; import { spawn, Worker, Transfer } from 'threads'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { WorkerManager } from '@matrixai/workers'; import * as utils from '@/utils'; -import packageJson from '../package.json'; +import { suiteCommon } from './utils'; const logger = new Logger('crypto32KiB Bench', LogLevel.WARN, [ new StreamHandler(), @@ -25,7 +25,7 @@ async function main() { const plain32KiB = utils.getRandomBytesSync(1024 * 32); const cipher32KiB = await utils.encrypt(key, plain32KiB); const summary = await b.suite( - 'crypto32KiB', + path.basename(__filename, path.extname(__filename)), b.add('encrypt 32 KiB of data', async () => { await utils.encrypt(key, plain32KiB); }), @@ -58,28 +58,14 @@ async function main() { utils.fromArrayBuffer(decrypted); } }), - b.cycle(), - b.complete(), - b.save({ - file: 'crypto32KiB', - folder: 'benches/results', - version: packageJson.version, - details: true, - }), - b.save({ - file: 'crypto32KiB', - folder: 'benches/results', - format: 'chart.html', - }), + ...suiteCommon, ); await workerManager.destroy(); return summary; } if (require.main === module) { - (async () => { - await main(); - })(); + void main(); } export default main; diff --git a/benches/DB1KiB.ts b/benches/db_1KiB.ts similarity index 72% rename from benches/DB1KiB.ts rename to benches/db_1KiB.ts index 1773365e..80318009 100644 --- a/benches/DB1KiB.ts +++ b/benches/db_1KiB.ts @@ -1,5 +1,4 @@ import type { EFSWorkerModule } from '@/workers'; - import os from 'os'; import path from 'path'; import fs from 'fs'; @@ -9,7 +8,7 @@ import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { WorkerManager } from '@matrixai/workers'; import { DB } from '@matrixai/db'; import * as utils from '@/utils'; -import packageJson from '../package.json'; +import { suiteCommon } from './utils'; const logger = new Logger('Encrypted DB1KiB Bench', LogLevel.WARN, [ new StreamHandler(), @@ -39,6 +38,7 @@ async function main() { }, }, dbPath: dbPath1, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger, }); // Db2 uses workers @@ -52,58 +52,47 @@ async function main() { }, }, dbPath: dbPath2, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger, }); db2.setWorkerManager(workerManager); const data0 = utils.getRandomBytesSync(0); const data1KiB = utils.getRandomBytesSync(1024); const summary = await b.suite( - 'Encrypted DB1KiB', + path.basename(__filename, path.extname(__filename)), b.add('get 1 KiB of data', async () => { - await db1.put([], '1kib', data1KiB, true); + await db1.put('1kib', data1KiB, true); return async () => { - await db1.get([], '1kib', true); + await db1.get('1kib', true); }; }), b.add('put 1 KiB of data', async () => { - await db1.put([], '1kib', data1KiB, true); + await db1.put('1kib', data1KiB, true); }), b.add('put zero data', async () => { - await db1.put([], '0', data0, true); + await db1.put('0', data0, true); }), b.add('put zero data then del', async () => { - await db1.put([], '0', data0, true); - await db1.del([], '0'); + await db1.put('0', data0, true); + await db1.del('0'); }), b.add('get 1 KiB of data with workers', async () => { - await db2.put([], '1kib', data1KiB, true); + await db2.put('1kib', data1KiB, true); return async () => { - await db2.get([], '1kib', true); + await db2.get('1kib', true); }; }), b.add('put 1 KiB of data with workers', async () => { - await db2.put([], '1kib', data1KiB, true); + await db2.put('1kib', data1KiB, true); }), b.add('put zero data with workers', async () => { - await db2.put([], '0', data0, true); + await db2.put('0', data0, true); }), b.add('put zero data then del with workers', async () => { - await db2.put([], '0', data0, true); - await db2.del([], '0'); - }), - b.cycle(), - b.complete(), - b.save({ - file: 'Encrypted DB1KiB', - folder: 'benches/results', - version: packageJson.version, - details: true, - }), - b.save({ - file: 'Encrypted DB1KiB', - folder: 'benches/results', - format: 'chart.html', + await db2.put('0', data0, true); + await db2.del('0'); }), + ...suiteCommon, ); await db1.stop(); await db2.stop(); @@ -116,9 +105,7 @@ async function main() { } if (require.main === module) { - (async () => { - await main(); - })(); + void main(); } export default main; diff --git a/benches/DB1MiB.ts b/benches/db_1MiB.ts similarity index 75% rename from benches/DB1MiB.ts rename to benches/db_1MiB.ts index 13520079..994a6d0c 100644 --- a/benches/DB1MiB.ts +++ b/benches/db_1MiB.ts @@ -1,5 +1,4 @@ import type { EFSWorkerModule } from '@/workers'; - import os from 'os'; import path from 'path'; import fs from 'fs'; @@ -9,7 +8,7 @@ import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { WorkerManager } from '@matrixai/workers'; import { DB } from '@matrixai/db'; import * as utils from '@/utils'; -import packageJson from '../package.json'; +import { suiteCommon } from './utils'; const logger = new Logger('Encrypted DB1MiB Bench', LogLevel.WARN, [ new StreamHandler(), @@ -39,6 +38,7 @@ async function main() { }, }, dbPath: dbPath1, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger, }); // Db2 uses workers @@ -52,43 +52,32 @@ async function main() { }, }, dbPath: dbPath2, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger, }); db2.setWorkerManager(workerManager); const data1MiB = utils.getRandomBytesSync(1024 * 1024); const summary = await b.suite( - 'Encrypted DB1MiB', + path.basename(__filename, path.extname(__filename)), b.add('get 1 MiB of data', async () => { - await db1.put([], '1mib', data1MiB, true); + await db1.put('1mib', data1MiB, true); return async () => { - await db1.get([], '1mib', true); + await db1.get('1mib', true); }; }), b.add('put 1 MiB of data', async () => { - await db1.put([], '1mib', data1MiB, true); + await db1.put('1mib', data1MiB, true); }), b.add('get 1 MiB of data with workers', async () => { - await db2.put([], '1mib', data1MiB, true); + await db2.put('1mib', data1MiB, true); return async () => { - await db2.get([], '1mib', true); + await db2.get('1mib', true); }; }), b.add('put 1 MiB of data with workers', async () => { - await db2.put([], '1mib', data1MiB, true); - }), - b.cycle(), - b.complete(), - b.save({ - file: 'Encrypted DB1MiB', - folder: 'benches/results', - version: packageJson.version, - details: true, - }), - b.save({ - file: 'Encrypted DB1MiB', - folder: 'benches/results', - format: 'chart.html', + await db2.put('1mib', data1MiB, true); }), + ...suiteCommon, ); await db1.stop(); await db2.stop(); @@ -101,9 +90,7 @@ async function main() { } if (require.main === module) { - (async () => { - await main(); - })(); + void main(); } export default main; diff --git a/benches/DB24KiB.ts b/benches/db_24KiB.ts similarity index 75% rename from benches/DB24KiB.ts rename to benches/db_24KiB.ts index be6db9d5..38800ac2 100644 --- a/benches/DB24KiB.ts +++ b/benches/db_24KiB.ts @@ -1,5 +1,4 @@ import type { EFSWorkerModule } from '@/workers'; - import os from 'os'; import path from 'path'; import fs from 'fs'; @@ -9,7 +8,7 @@ import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { WorkerManager } from '@matrixai/workers'; import { DB } from '@matrixai/db'; import * as utils from '@/utils'; -import packageJson from '../package.json'; +import { suiteCommon } from './utils'; const logger = new Logger('Encrypted DB24KiB Bench', LogLevel.WARN, [ new StreamHandler(), @@ -39,6 +38,7 @@ async function main() { }, }, dbPath: dbPath1, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger, }); // Db2 uses workers @@ -52,43 +52,32 @@ async function main() { }, }, dbPath: dbPath2, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger, }); db2.setWorkerManager(workerManager); const data24KiB = utils.getRandomBytesSync(1024 * 24); const summary = await b.suite( - 'Encrypted DB24KiB', + path.basename(__filename, path.extname(__filename)), b.add('get 24 KiB of data', async () => { - await db1.put([], '24kib', data24KiB, true); + await db1.put('24kib', data24KiB, true); return async () => { - await db1.get([], '24kib', true); + await db1.get('24kib', true); }; }), b.add('put 24 KiB of data', async () => { - await db1.put([], '24kib', data24KiB, true); + await db1.put('24kib', data24KiB, true); }), b.add('get 24 KiB of data with workers', async () => { - await db2.put([], '24kib', data24KiB, true); + await db2.put('24kib', data24KiB, true); return async () => { - await db2.get([], '24kib', true); + await db2.get('24kib', true); }; }), b.add('put 24 KiB of data with workers', async () => { - await db2.put([], '24kib', data24KiB, true); - }), - b.cycle(), - b.complete(), - b.save({ - file: 'Encrypted DB24KiB', - folder: 'benches/results', - version: packageJson.version, - details: true, - }), - b.save({ - file: 'Encrypted DB24KiB', - folder: 'benches/results', - format: 'chart.html', + await db2.put('24kib', data24KiB, true); }), + ...suiteCommon, ); await db1.stop(); await db2.stop(); @@ -101,9 +90,7 @@ async function main() { } if (require.main === module) { - (async () => { - await main(); - })(); + void main(); } export default main; diff --git a/benches/index.ts b/benches/index.ts index 30838ac1..35482506 100644 --- a/benches/index.ts +++ b/benches/index.ts @@ -1,44 +1,61 @@ #!/usr/bin/env node import fs from 'fs'; +import path from 'path'; import si from 'systeminformation'; -import crypto1KiBBench from './crypto1KiB'; -import crypto10KiBBench from './crypto10KiB'; -import crypto16KiBBench from './crypto16KiB'; -import crypto24KiBBench from './crypto24KiB'; -import crypto32KiBBench from './crypto32KiB'; -import crypto100KiBBench from './crypto100KiB'; -import crypto1MiBBench from './crypto1MiB'; -import DB1KiBBench from './DB1KiB'; -import DB24KiBBench from './DB24KiB'; -import DB1MiBBench from './DB1MiB'; +import crypto1KiB from './crypto_1KiB'; +import crypto10KiB from './crypto_10KiB'; +import crypto16KiB from './crypto_16KiB'; +import crypto24KiB from './crypto_24KiB'; +import crypto32KiB from './crypto_32KiB'; +import crypto100KiB from './crypto_100KiB'; +import crypto1MiB from './crypto_1MiB'; +import DB1KiB from './db_1KiB'; +import DB24KiB from './db_24KiB'; +import DB1MiB from './db_1MiB'; async function main(): Promise { - await crypto1KiBBench(); - await crypto10KiBBench(); - await crypto16KiBBench(); - await crypto24KiBBench(); - await crypto32KiBBench(); - await crypto100KiBBench(); - await crypto1MiBBench(); - await DB1KiBBench(); - await DB24KiBBench(); - await DB1MiBBench(); + await fs.promises.mkdir(path.join(__dirname, 'results'), { recursive: true }); + await crypto1KiB(); + await crypto10KiB(); + await crypto16KiB(); + await crypto24KiB(); + await crypto32KiB(); + await crypto100KiB(); + await crypto1MiB(); + await DB1KiB(); + await DB24KiB(); + await DB1MiB(); + const resultFilenames = await fs.promises.readdir( + path.join(__dirname, 'results'), + ); + const metricsFile = await fs.promises.open( + path.join(__dirname, 'results', 'metrics.txt'), + 'w', + ); + let concatenating = false; + for (const resultFilename of resultFilenames) { + if (/.+_metrics\.txt$/.test(resultFilename)) { + const metricsData = await fs.promises.readFile( + path.join(__dirname, 'results', resultFilename), + ); + if (concatenating) { + await metricsFile.write('\n'); + } + await metricsFile.write(metricsData); + concatenating = true; + } + } + await metricsFile.close(); const systemData = await si.get({ cpu: '*', osInfo: 'platform, distro, release, kernel, arch', system: 'model, manufacturer', }); await fs.promises.writeFile( - 'benches/results/system.json', + path.join(__dirname, 'results', 'system.json'), JSON.stringify(systemData, null, 2), ); } -if (require.main === module) { - (async () => { - await main(); - })(); -} - -export default main; +void main(); diff --git a/benches/results/Encrypted DB1KiB.chart.html b/benches/results/Encrypted DB1KiB.chart.html deleted file mode 100644 index 42ec914a..00000000 --- a/benches/results/Encrypted DB1KiB.chart.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - Encrypted DB1KiB - - -
- -
- - - diff --git a/benches/results/Encrypted DB1KiB.json b/benches/results/Encrypted DB1KiB.json deleted file mode 100644 index af922397..00000000 --- a/benches/results/Encrypted DB1KiB.json +++ /dev/null @@ -1,844 +0,0 @@ -{ - "name": "Encrypted DB1KiB", - "date": "2022-01-13T08:00:59.922Z", - "version": "3.2.4", - "results": [ - { - "name": "get 1 KiB of data", - "ops": 5629, - "margin": 2.94, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 77, - "promise": true, - "details": { - "min": 0.0001511758, - "max": 0.0003219765348101266, - "mean": 0.00017763845809483077, - "median": 0.00017302209493670886, - "standardDeviation": 0.00002334769944132775, - "marginOfError": 0.000005215005883186552, - "relativeMarginOfError": 2.9357414712542513, - "standardErrorOfMean": 0.0000026607172873400773, - "sampleVariance": 5.451150692025761e-10, - "sampleResults": [ - 0.0001511758, - 0.0001537386567164179, - 0.00015436011641791045, - 0.00015760846865671643, - 0.00015778318208955225, - 0.0001588357949526814, - 0.0001590509905362776, - 0.00015946100298507463, - 0.00016060270886075948, - 0.0001608527911392405, - 0.0001612078454258675, - 0.00016141233438485804, - 0.0001618611880597015, - 0.00016300818670886074, - 0.00016367232176656152, - 0.0001640244328358209, - 0.00016492163607594937, - 0.00016523068454258675, - 0.0001655274006309148, - 0.0001655845223880597, - 0.00016612434493670886, - 0.00016785766268656715, - 0.0001679651104477612, - 0.00016831667507886434, - 0.00016906241791044775, - 0.00016970376265822783, - 0.00017003558227848101, - 0.00017069402848101268, - 0.00017079040506329113, - 0.00017091998417721518, - 0.00017175946835443039, - 0.00017208866772151898, - 0.00017226947151898736, - 0.00017244869936708861, - 0.00017258105379746834, - 0.00017262725632911393, - 0.00017282538924050632, - 0.00017291880063291138, - 0.00017302209493670886, - 0.00017306752848101264, - 0.0001732640094936709, - 0.00017516880298507463, - 0.00017569657278481012, - 0.00017583742721518988, - 0.00017645520820189274, - 0.0001765687760252366, - 0.00017693050316455698, - 0.00017703249367088608, - 0.00017715840506329114, - 0.00017724564873417722, - 0.00017767556329113923, - 0.00017768799999999998, - 0.00017797442405063292, - 0.0001779863671641791, - 0.00017808625000000002, - 0.00017809336013986014, - 0.00017918872183098593, - 0.00018058737014925373, - 0.00018072165034965033, - 0.00018130461971830987, - 0.00018248519642857143, - 0.00018258297535211267, - 0.00018336124683544306, - 0.00018386536971830986, - 0.0001841301161971831, - 0.00018711898969072166, - 0.00018956756071428574, - 0.00018999507746478875, - 0.0001994618204225352, - 0.000199756426056338, - 0.00020054225949367091, - 0.0002008380601265823, - 0.0002052307014925373, - 0.0002102403046875, - 0.00021485575, - 0.00026449024050632914, - 0.0003219765348101266 - ] - }, - "completed": true, - "percentSlower": 0 - }, - { - "name": "put 1 KiB of data", - "ops": 2677, - "margin": 1.63, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 79, - "promise": true, - "details": { - "min": 0.00033604676, - "max": 0.0005850512307692307, - "mean": 0.0003735903019294006, - "median": 0.00037013670629370627, - "standardDeviation": 0.000027641226749170464, - "marginOfError": 0.000006095366717319915, - "relativeMarginOfError": 1.6315644934679778, - "standardErrorOfMean": 0.0000031098809782244463, - "sampleVariance": 7.640374161990568e-10, - "sampleResults": [ - 0.00033604676, - 0.0003462419862068966, - 0.0003491631517241379, - 0.0003501240333333334, - 0.00035160916083916085, - 0.00035210084615384615, - 0.00035307195804195804, - 0.00035357655244755247, - 0.0003538440933333333, - 0.00035501469930069934, - 0.00035579854929577466, - 0.00035581676223776223, - 0.00035629165333333335, - 0.0003563113146853147, - 0.00035685234, - 0.0003576703146853147, - 0.0003584741048951049, - 0.0003592074825174825, - 0.0003596326923076923, - 0.00036077106666666667, - 0.0003627995395683453, - 0.00036355206993006993, - 0.0003646722307692308, - 0.00036477058, - 0.0003660487482517482, - 0.00036621044755244753, - 0.0003670667762237762, - 0.0003675114866666667, - 0.00036754146, - 0.00036779772027972026, - 0.00036803697183098594, - 0.0003682125874125874, - 0.00036865707692307695, - 0.00036873155244755246, - 0.00036916728, - 0.00036948808, - 0.000369694006993007, - 0.0003699056533333333, - 0.0003700643986013986, - 0.00037013670629370627, - 0.0003706065384615385, - 0.00037177922377622377, - 0.0003718596643356643, - 0.00037200658000000004, - 0.000372110979020979, - 0.00037261605333333334, - 0.00037274546, - 0.00037292095804195805, - 0.0003729486643356643, - 0.00037433925874125873, - 0.00037458061870503594, - 0.000374590006993007, - 0.0003747820935251799, - 0.0003752933006993007, - 0.0003756692167832168, - 0.0003758623496503496, - 0.0003764386153846154, - 0.00037821151333333335, - 0.00037918694074074073, - 0.000379891162962963, - 0.0003802203185185185, - 0.0003816623706293706, - 0.00038265253333333337, - 0.0003827805407407407, - 0.0003832939407407407, - 0.0003842428074074074, - 0.0003864585037037037, - 0.0003865798888888889, - 0.0003871291, - 0.00038732130370370367, - 0.00038933569230769233, - 0.00039046026618705035, - 0.00039114693706293705, - 0.0003952176690647482, - 0.0003955240133333333, - 0.000401783237410072, - 0.00040288154545454547, - 0.00040376785925925926, - 0.0005850512307692307 - ] - }, - "completed": true, - "percentSlower": 52.44 - }, - { - "name": "put zero data", - "ops": 3344, - "margin": 1.22, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 81, - "promise": true, - "details": { - "min": 0.000268844188172043, - "max": 0.000415014059139785, - "mean": 0.0002990085417172385, - "median": 0.000298334702247191, - "standardDeviation": 0.00001671093237867919, - "marginOfError": 0.0000036392697180234684, - "relativeMarginOfError": 1.217112292887269, - "standardErrorOfMean": 0.000001856770264297688, - "sampleVariance": 2.792552609647886e-10, - "sampleResults": [ - 0.000268844188172043, - 0.00027591051075268817, - 0.0002760294516129032, - 0.0002765237127071823, - 0.0002815149101123595, - 0.00028172852808988765, - 0.00028221840322580646, - 0.0002828621404494382, - 0.00028513645161290323, - 0.0002859749831460674, - 0.0002868128595505618, - 0.00028806485393258424, - 0.0002890458707865168, - 0.00028929960752688174, - 0.00029001900000000003, - 0.00029032274193548384, - 0.00029102542696629217, - 0.00029119337078651686, - 0.00029156385483870964, - 0.00029200181460674156, - 0.0002920722584269663, - 0.0002927534301075269, - 0.0002930960449438202, - 0.00029314037096774193, - 0.0002933815752688172, - 0.0002947879606741573, - 0.00029514495505617976, - 0.0002954210674157303, - 0.00029570579213483147, - 0.0002960007415730337, - 0.0002963520268817204, - 0.00029683256741573036, - 0.00029687917977528087, - 0.00029694226966292135, - 0.0002970888595505618, - 0.00029755871348314606, - 0.0002976149662921348, - 0.00029763394086021504, - 0.00029801806451612903, - 0.0002983316449704142, - 0.000298334702247191, - 0.0002989354775280899, - 0.0002990343764044944, - 0.0002990654943820225, - 0.00029914476966292134, - 0.0002994076966292135, - 0.00029961180645161293, - 0.0002997952311827957, - 0.000299892775147929, - 0.00030006818279569895, - 0.0003001889943820225, - 0.000300689095505618, - 0.0003010350168539326, - 0.00030125407303370786, - 0.0003013578146067416, - 0.0003014821741573034, - 0.0003015097365591398, - 0.00030182600561797754, - 0.00030186052150537636, - 0.00030199127528089887, - 0.0003022017865168539, - 0.00030267126966292135, - 0.0003027409382022472, - 0.0003027675376344086, - 0.0003034851404494382, - 0.00030366810650887577, - 0.00030371897752808985, - 0.0003039182580645161, - 0.0003040514438202247, - 0.000305725393258427, - 0.0003061811235955056, - 0.00030648579032258066, - 0.00030649133146067416, - 0.0003095789247311828, - 0.00031327185082872925, - 0.00031377007865168537, - 0.0003163613172043011, - 0.00031819925842696626, - 0.0003248149193548387, - 0.00033724004301075266, - 0.000415014059139785 - ] - }, - "completed": true, - "percentSlower": 40.59 - }, - { - "name": "put zero data then del", - "ops": 3041, - "margin": 1.37, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 81, - "promise": true, - "details": { - "min": 0.00029587637058823527, - "max": 0.00037370381250000003, - "mean": 0.0003288619224220099, - "median": 0.000321992, - "standardDeviation": 0.000020667033590791966, - "marginOfError": 0.000004500820648661361, - "relativeMarginOfError": 1.3686049803253637, - "standardErrorOfMean": 0.000002296337065643552, - "sampleVariance": 4.271262774429235e-10, - "sampleResults": [ - 0.00029587637058823527, - 0.0002989434764705882, - 0.00030094186826347305, - 0.0003020669235294117, - 0.0003024216176470588, - 0.0003039592823529412, - 0.0003041740764705882, - 0.00030500893529411766, - 0.0003053620411764706, - 0.0003055046882352941, - 0.00030860274705882355, - 0.00030865938823529415, - 0.00030900923529411764, - 0.00031026353048780486, - 0.0003104835294117647, - 0.0003111805823529412, - 0.00031157591764705884, - 0.00031194695294117645, - 0.00031200047647058824, - 0.00031214056470588235, - 0.0003125041125, - 0.00031261344117647057, - 0.00031390091875, - 0.0003139401058823529, - 0.0003143520705882353, - 0.00031442444117647057, - 0.000314474243902439, - 0.00031508674705882356, - 0.00031517654491017966, - 0.0003153218647058824, - 0.00031536177058823526, - 0.0003172600882352941, - 0.0003182956588235294, - 0.0003183907125, - 0.00031839778235294116, - 0.0003187221707317073, - 0.00031923317682926833, - 0.00032001125, - 0.0003208761823529412, - 0.000320992625, - 0.000321992, - 0.0003224812470588235, - 0.00032260003529411765, - 0.00032266665853658533, - 0.0003229412411764706, - 0.0003235437058823529, - 0.0003253585625, - 0.00032980592352941176, - 0.00033201235625, - 0.0003322837875, - 0.00033277890853658537, - 0.00033398543113772456, - 0.00033432894374999997, - 0.00033518095294117646, - 0.00033799196875, - 0.00033918085625, - 0.0003444950875, - 0.0003453332, - 0.0003463842470588235, - 0.00034892019161676647, - 0.00034945355294117646, - 0.00035155840625, - 0.0003530819705882353, - 0.00035316234375, - 0.0003550236375, - 0.000355117075, - 0.0003560568882352941, - 0.00035687309375, - 0.00035691050588235293, - 0.00035714011764705886, - 0.00035757889375, - 0.00035797968902439025, - 0.00035810191875, - 0.00035900127647058824, - 0.0003600790294117647, - 0.00036124742352941177, - 0.00036252349375, - 0.0003627172375, - 0.00036314464375, - 0.00036363728823529413, - 0.00037370381250000003 - ] - }, - "completed": true, - "percentSlower": 45.98 - }, - { - "name": "get 1 KiB of data with workers", - "ops": 492, - "margin": 2.37, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 71, - "promise": true, - "details": { - "min": 0.0014799975294117647, - "max": 0.002365085964285714, - "mean": 0.002033943691438693, - "median": 0.0020690827352941176, - "standardDeviation": 0.00020732327529576557, - "marginOfError": 0.00004822530224578712, - "relativeMarginOfError": 2.371024451108347, - "standardErrorOfMean": 0.00002460474604376894, - "sampleVariance": 4.29829404793638e-8, - "sampleResults": [ - 0.0014799975294117647, - 0.0014993238823529413, - 0.0015278697647058822, - 0.0015285093235294118, - 0.001586209294117647, - 0.0017022848235294116, - 0.0017235572352941177, - 0.0017463112068965517, - 0.0017715044705882354, - 0.0017826377241379312, - 0.0018511494411764704, - 0.0018668340588235295, - 0.0018823225588235296, - 0.0019017912941176472, - 0.0019233918529411767, - 0.001935942714285714, - 0.0019382642352941176, - 0.0019393806470588235, - 0.0019397671176470588, - 0.001942547323529412, - 0.0019464923529411765, - 0.0019478003448275864, - 0.0019607497647058827, - 0.0019646136896551724, - 0.001969829034482759, - 0.0019863245588235294, - 0.001988953617647059, - 0.0020089497586206896, - 0.002015577724137931, - 0.002043054794117647, - 0.0020479566176470586, - 0.002057136205882353, - 0.0020593161785714283, - 0.002061070852941177, - 0.0020648004827586207, - 0.0020690827352941176, - 0.002076462896551724, - 0.002092921617647059, - 0.0020982021470588234, - 0.002102802, - 0.0021155113529411763, - 0.002117094617647059, - 0.002121740117647059, - 0.0021241935294117643, - 0.0021307432647058827, - 0.0021335140689655173, - 0.0021418539411764705, - 0.0021485734705882355, - 0.002152637411764706, - 0.002159131794117647, - 0.002174283964285714, - 0.002176479764705882, - 0.002178592294117647, - 0.002180151137931034, - 0.002186712617647059, - 0.002192608357142857, - 0.0021961405000000002, - 0.002200208172413793, - 0.002204413294117647, - 0.0022056772352941176, - 0.002207046, - 0.0022234825588235297, - 0.002224753382352941, - 0.002259028827586207, - 0.002269926029411765, - 0.0022917766428571427, - 0.0022940320344827588, - 0.002305607551724138, - 0.002345226357142857, - 0.002352081964285714, - 0.002365085964285714 - ] - }, - "completed": true, - "percentSlower": 91.26 - }, - { - "name": "put 1 KiB of data with workers", - "ops": 416, - "margin": 1.67, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 69, - "promise": true, - "details": { - "min": 0.0019840748928571426, - "max": 0.0026756757272727275, - "mean": 0.002401923863042224, - "median": 0.002445815, - "standardDeviation": 0.0001702146552338023, - "marginOfError": 0.0000401632154969219, - "relativeMarginOfError": 1.6721269193792034, - "standardErrorOfMean": 0.000020491436478021377, - "sampleVariance": 2.8973028856362178e-8, - "sampleResults": [ - 0.0019840748928571426, - 0.002008094892857143, - 0.0020233904285714287, - 0.0020250737142857144, - 0.0020592147142857145, - 0.0020760813928571427, - 0.0021005775357142856, - 0.0021238622142857144, - 0.002126234714285714, - 0.0021570806785714287, - 0.00216552225, - 0.0021673166785714285, - 0.0022750655, - 0.002286589892857143, - 0.0023004318333333332, - 0.002310510318181818, - 0.0023182180399999998, - 0.0023238983214285717, - 0.002338201642857143, - 0.0023534235714285714, - 0.002382552607142857, - 0.0023876090833333335, - 0.0023881203928571427, - 0.0023940545357142855, - 0.00240466525, - 0.0024065930357142855, - 0.0024098558214285712, - 0.002410472, - 0.002418680642857143, - 0.002423177909090909, - 0.0024257836785714286, - 0.0024342791999999998, - 0.0024347993214285718, - 0.0024390497499999996, - 0.002445815, - 0.0024500514285714287, - 0.002453169035714286, - 0.002462391535714286, - 0.0024672063999999997, - 0.0024715055714285713, - 0.0024807019642857143, - 0.0024838201785714288, - 0.0024840118214285714, - 0.00248578925, - 0.0024940020714285713, - 0.002506504464285714, - 0.0025104387857142856, - 0.002513109357142857, - 0.002517277892857143, - 0.0025199910357142858, - 0.0025214790799999998, - 0.0025231129642857143, - 0.0025294061785714286, - 0.0025307000357142856, - 0.0025329050357142855, - 0.0025330724642857144, - 0.0025392128928571427, - 0.0025411347272727273, - 0.00254295312, - 0.0025477997857142856, - 0.00254909575, - 0.0025608428214285717, - 0.0025617819600000005, - 0.002584493392857143, - 0.00259797408, - 0.002601735857142857, - 0.002607033928571429, - 0.0026239945, - 0.0026756757272727275 - ] - }, - "completed": true, - "percentSlower": 92.61 - }, - { - "name": "put zero data with workers", - "ops": 449, - "margin": 2.14, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 69, - "promise": true, - "details": { - "min": 0.0016646353870967742, - "max": 0.002488004290322581, - "mean": 0.002227175162487144, - "median": 0.0023066290322580644, - "standardDeviation": 0.0002015863148808759, - "marginOfError": 0.00004756555535520744, - "relativeMarginOfError": 2.135689915924249, - "standardErrorOfMean": 0.000024268140487350735, - "sampleVariance": 4.063704234725165e-8, - "sampleResults": [ - 0.0016646353870967742, - 0.0018096077096774192, - 0.0018314281290322581, - 0.001833012935483871, - 0.001873766806451613, - 0.001882898935483871, - 0.0018911594838709677, - 0.0019189185161290322, - 0.0019295159032258064, - 0.001938146741935484, - 0.0019497264838709677, - 0.0019833132903225806, - 0.0019841329032258066, - 0.00198746064516129, - 0.001993144258064516, - 0.0020130837741935484, - 0.0020621214838709677, - 0.0020686824516129034, - 0.00212830728, - 0.0021588632903225807, - 0.002184268483870968, - 0.002201782225806452, - 0.0022117622903225806, - 0.0022154532903225807, - 0.002222194612903226, - 0.002248712709677419, - 0.0022495851999999998, - 0.002250682612903226, - 0.0022578562580645163, - 0.002270893064516129, - 0.00227960944, - 0.00229355468, - 0.002297110193548387, - 0.002305373548387097, - 0.0023066290322580644, - 0.002309465161290323, - 0.0023146267419354837, - 0.002321539741935484, - 0.002331507806451613, - 0.002336736677419355, - 0.002337067129032258, - 0.002338439935483871, - 0.002341261806451613, - 0.0023432399032258066, - 0.0023452578709677423, - 0.00234575536, - 0.0023501407741935484, - 0.0023537569677419354, - 0.0023559371612903225, - 0.0023589546451612906, - 0.0023675052258064514, - 0.002369406129032258, - 0.0023816130645161293, - 0.00238209128, - 0.002387691548387097, - 0.0023916899032258064, - 0.002399394193548387, - 0.0024018367096774193, - 0.002406528870967742, - 0.00240660804, - 0.0024086070322580644, - 0.0024236049354838707, - 0.002436098548387097, - 0.0024366684799999997, - 0.0024396509032258065, - 0.0024440675806451616, - 0.0024458675161290323, - 0.0024770702258064517, - 0.002488004290322581 - ] - }, - "completed": true, - "percentSlower": 92.02 - }, - { - "name": "put zero data then del with workers", - "ops": 445, - "margin": 2.89, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 70, - "promise": true, - "details": { - "min": 0.0017037821666666666, - "max": 0.0026555622000000003, - "mean": 0.00224784863857143, - "median": 0.0023616070499999997, - "standardDeviation": 0.00027768429047114767, - "marginOfError": 0.00006505165683343218, - "relativeMarginOfError": 2.893951830972672, - "standardErrorOfMean": 0.00003318962083338376, - "sampleVariance": 7.71085651744647e-8, - "sampleResults": [ - 0.0017037821666666666, - 0.0017094634333333332, - 0.0017141106666666668, - 0.0017164769333333333, - 0.0017288971666666667, - 0.0017448063333333334, - 0.0017668909666666668, - 0.0018053646, - 0.0018366636, - 0.0018794685333333335, - 0.0019203427333333333, - 0.0019228955666666667, - 0.0019396355333333333, - 0.0019651906666666667, - 0.0019719258333333336, - 0.0019725718, - 0.0019854082666666668, - 0.0019854674333333335, - 0.0019995661333333335, - 0.0020398230666666666, - 0.002042216, - 0.0020609368666666666, - 0.002067120333333333, - 0.0021652829, - 0.002187329766666667, - 0.0022051071666666666, - 0.0022257675666666667, - 0.0022282271, - 0.0022566443, - 0.0023067517333333334, - 0.0023112347333333334, - 0.002321046166666667, - 0.0023279117, - 0.0023415683333333336, - 0.0023492340666666665, - 0.0023739800333333334, - 0.002377145933333333, - 0.0023829803333333334, - 0.0023869921333333336, - 0.0023971986333333334, - 0.0024025930333333332, - 0.0024063567, - 0.0024179892666666663, - 0.0024299764666666666, - 0.0024326550333333336, - 0.0024372763666666666, - 0.0024373316333333333, - 0.0024414268333333333, - 0.0024418202333333335, - 0.002453051, - 0.0024669096, - 0.0024694197333333333, - 0.0024728562333333334, - 0.0024748918666666667, - 0.002484135366666667, - 0.0024872116666666668, - 0.00249096, - 0.0024911919, - 0.0024979822666666663, - 0.002499166833333333, - 0.0025027869333333333, - 0.0025243192333333337, - 0.0025327826666666667, - 0.002534015666666667, - 0.0025459882666666665, - 0.002547346266666667, - 0.0025658395, - 0.0025873420666666664, - 0.0025947926333333335, - 0.0026555622000000003 - ] - }, - "completed": true, - "percentSlower": 92.09 - } - ], - "fastest": { - "name": "get 1 KiB of data", - "index": 0 - }, - "slowest": { - "name": "put 1 KiB of data with workers", - "index": 5 - } -} \ No newline at end of file diff --git a/benches/results/Encrypted DB1MiB.chart.html b/benches/results/Encrypted DB1MiB.chart.html deleted file mode 100644 index 50f6ed63..00000000 --- a/benches/results/Encrypted DB1MiB.chart.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - Encrypted DB1MiB - - -
- -
- - - diff --git a/benches/results/Encrypted DB1MiB.json b/benches/results/Encrypted DB1MiB.json deleted file mode 100644 index 8f8e3a80..00000000 --- a/benches/results/Encrypted DB1MiB.json +++ /dev/null @@ -1,332 +0,0 @@ -{ - "name": "Encrypted DB1MiB", - "date": "2022-01-13T08:01:49.087Z", - "version": "3.2.4", - "results": [ - { - "name": "get 1 MiB of data", - "ops": 11.5, - "margin": 2, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 57, - "promise": true, - "details": { - "min": 0.077102047, - "max": 0.114858389, - "mean": 0.08694553833333336, - "median": 0.087724326, - "standardDeviation": 0.006708212018288807, - "marginOfError": 0.0017415077997501212, - "relativeMarginOfError": 2.0029869653270733, - "standardErrorOfMean": 0.0008885243876276129, - "sampleVariance": 0.00004500010848231439, - "sampleResults": [ - 0.077102047, - 0.077125538, - 0.077742641, - 0.077759481, - 0.078106851, - 0.078546481, - 0.078651316, - 0.078794168, - 0.080838037, - 0.080919818, - 0.081636563, - 0.081697274, - 0.082555018, - 0.082829812, - 0.082843023, - 0.082955726, - 0.083638124, - 0.08402682, - 0.084863162, - 0.08506713, - 0.085485343, - 0.085795791, - 0.085843955, - 0.085934414, - 0.085972067, - 0.086416892, - 0.086824819, - 0.087287922, - 0.087724326, - 0.087938052, - 0.088295889, - 0.088805831, - 0.088857333, - 0.088905988, - 0.08897189, - 0.089012005, - 0.089167189, - 0.089221607, - 0.089233947, - 0.089237663, - 0.089355236, - 0.08945251, - 0.089471105, - 0.089562652, - 0.089742571, - 0.089762675, - 0.089953007, - 0.090036908, - 0.090272127, - 0.090740908, - 0.090838461, - 0.09119048, - 0.091721684, - 0.091843415, - 0.092583776, - 0.111877828, - 0.114858389 - ] - }, - "completed": true, - "percentSlower": 0 - }, - { - "name": "put 1 MiB of data", - "ops": 11.1, - "margin": 2.94, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 56, - "promise": true, - "details": { - "min": 0.079145806, - "max": 0.139079098, - "mean": 0.09016030041071428, - "median": 0.089617193, - "standardDeviation": 0.01013289258396715, - "marginOfError": 0.0026539668670331304, - "relativeMarginOfError": 2.9436091660556887, - "standardErrorOfMean": 0.0013540647280781278, - "sampleVariance": 0.00010267551211821646, - "sampleResults": [ - 0.079145806, - 0.079231094, - 0.079343628, - 0.079414862, - 0.080465093, - 0.080477643, - 0.080887428, - 0.082211769, - 0.082613013, - 0.083104982, - 0.083553604, - 0.084022979, - 0.084384645, - 0.084659947, - 0.084817535, - 0.08496937, - 0.085068073, - 0.087233419, - 0.087415071, - 0.087507751, - 0.087797237, - 0.088021653, - 0.088491467, - 0.088571764, - 0.089204372, - 0.089417737, - 0.089535512, - 0.0895434, - 0.089690986, - 0.089847333, - 0.089920799, - 0.090365583, - 0.09043421, - 0.090537054, - 0.090688888, - 0.090776014, - 0.09088959, - 0.091340902, - 0.091544717, - 0.091574906, - 0.091603299, - 0.091741921, - 0.091844986, - 0.091867616, - 0.091962928, - 0.092129743, - 0.092200269, - 0.092332617, - 0.092610985, - 0.092865895, - 0.093445988, - 0.09374016, - 0.10124279, - 0.120694595, - 0.120892097, - 0.139079098 - ] - }, - "completed": true, - "percentSlower": 3.48 - }, - { - "name": "get 1 MiB of data with workers", - "ops": 11.3, - "margin": 1.51, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 57, - "promise": true, - "details": { - "min": 0.079200673, - "max": 0.101756663, - "mean": 0.0883911594210526, - "median": 0.088610889, - "standardDeviation": 0.005140449144435023, - "marginOfError": 0.0013345034794436958, - "relativeMarginOfError": 1.5097703075561761, - "standardErrorOfMean": 0.0006808691221651509, - "sampleVariance": 0.000026424217406522757, - "sampleResults": [ - 0.079200673, - 0.079499831, - 0.079770042, - 0.079900649, - 0.079948759, - 0.080322152, - 0.080459383, - 0.080849429, - 0.082888651, - 0.084352139, - 0.084693392, - 0.08494943, - 0.085089122, - 0.085296174, - 0.085619962, - 0.085708158, - 0.085824508, - 0.086072607, - 0.086346028, - 0.086420637, - 0.086827762, - 0.087098838, - 0.087180087, - 0.087265772, - 0.087393515, - 0.087509134, - 0.087595729, - 0.087992433, - 0.088610889, - 0.088722997, - 0.089309426, - 0.0896172, - 0.089621532, - 0.090222546, - 0.090323174, - 0.090394207, - 0.090498317, - 0.090858712, - 0.090895548, - 0.090914183, - 0.091014893, - 0.091063014, - 0.091192445, - 0.091342426, - 0.091345259, - 0.091420665, - 0.091449113, - 0.092209637, - 0.092224116, - 0.092274966, - 0.092857735, - 0.093080021, - 0.094133068, - 0.097938249, - 0.100378566, - 0.100551524, - 0.101756663 - ] - }, - "completed": true, - "percentSlower": 1.74 - }, - { - "name": "put 1 MiB of data with workers", - "ops": 5.4, - "margin": 1.99, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 31, - "promise": true, - "details": { - "min": 0.171409565, - "max": 0.208509751, - "mean": 0.18403588848387092, - "median": 0.183351318, - "standardDeviation": 0.009962281370500507, - "marginOfError": 0.00365370680813474, - "relativeMarginOfError": 1.9853229922896014, - "standardErrorOfMean": 0.0017892785544244567, - "sampleVariance": 0.00009924705010502144, - "sampleResults": [ - 0.171409565, - 0.171587471, - 0.172400625, - 0.172681815, - 0.173767959, - 0.17390061, - 0.174133409, - 0.174532153, - 0.176654054, - 0.179323835, - 0.181423097, - 0.181594329, - 0.181815679, - 0.182162568, - 0.182358075, - 0.183351318, - 0.183457282, - 0.183563487, - 0.185072727, - 0.1858191, - 0.185839486, - 0.185957352, - 0.186480573, - 0.186590976, - 0.187893042, - 0.18995456, - 0.192768236, - 0.199899485, - 0.202642221, - 0.207567703, - 0.208509751 - ] - }, - "completed": true, - "percentSlower": 53.04 - } - ], - "fastest": { - "name": "get 1 MiB of data", - "index": 0 - }, - "slowest": { - "name": "put 1 MiB of data with workers", - "index": 3 - } -} \ No newline at end of file diff --git a/benches/results/Encrypted DB24KiB.chart.html b/benches/results/Encrypted DB24KiB.chart.html deleted file mode 100644 index 2f3d52e7..00000000 --- a/benches/results/Encrypted DB24KiB.chart.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - Encrypted DB24KiB - - -
- -
- - - diff --git a/benches/results/Encrypted DB24KiB.json b/benches/results/Encrypted DB24KiB.json deleted file mode 100644 index 8003b62b..00000000 --- a/benches/results/Encrypted DB24KiB.json +++ /dev/null @@ -1,449 +0,0 @@ -{ - "name": "Encrypted DB24KiB", - "date": "2022-01-13T08:01:23.959Z", - "version": "3.2.4", - "results": [ - { - "name": "get 24 KiB of data", - "ops": 657, - "margin": 0.74, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 87, - "promise": true, - "details": { - "min": 0.0014874222647058824, - "max": 0.0019094927352941177, - "mean": 0.0015210198455037189, - "median": 0.0015064905, - "standardDeviation": 0.000053782025805130806, - "marginOfError": 0.000011301435266871493, - "relativeMarginOfError": 0.7430169501259056, - "standardErrorOfMean": 0.0000057660384014650476, - "sampleVariance": 2.8925062997037556e-9, - "sampleResults": [ - 0.0014874222647058824, - 0.0014888879117647058, - 0.0014894152647058822, - 0.0014915251470588235, - 0.0014941107352941176, - 0.0014946510588235294, - 0.0014950543823529412, - 0.0014954085882352942, - 0.0014957912941176471, - 0.0014959656176470586, - 0.0014971644705882353, - 0.0014975472647058823, - 0.0014978595, - 0.0014987265882352942, - 0.0014988182941176472, - 0.0014992377647058824, - 0.0014993829411764706, - 0.0015001732352941176, - 0.0015002721764705881, - 0.0015006790294117647, - 0.0015009154411764706, - 0.001501061176470588, - 0.0015011373235294119, - 0.0015012515294117647, - 0.0015012975294117648, - 0.0015013623529411765, - 0.0015017353529411764, - 0.001502044382352941, - 0.0015024024705882354, - 0.0015025012058823529, - 0.0015026853235294117, - 0.0015030444411764706, - 0.0015030873235294118, - 0.0015036444411764705, - 0.001503690411764706, - 0.0015039581176470589, - 0.001504400705882353, - 0.0015044555, - 0.001504623911764706, - 0.0015046452647058824, - 0.0015047190294117645, - 0.0015054388823529411, - 0.0015059175882352943, - 0.0015064905, - 0.0015066875294117647, - 0.0015067550882352943, - 0.001507373705882353, - 0.0015080977647058823, - 0.0015084840588235294, - 0.0015087435294117648, - 0.001509135294117647, - 0.001509898705882353, - 0.0015110188529411765, - 0.0015112275294117646, - 0.0015123906764705883, - 0.0015134356176470588, - 0.0015147683235294117, - 0.0015150444411764707, - 0.0015151139705882352, - 0.001515869088235294, - 0.0015159850294117645, - 0.0015161600000000001, - 0.0015180377352941178, - 0.0015191724411764706, - 0.0015201397352941177, - 0.0015209845588235295, - 0.0015217398235294118, - 0.0015225175588235295, - 0.0015227771470588236, - 0.0015233621470588236, - 0.001524707705882353, - 0.0015253401176470588, - 0.0015253666764705883, - 0.001530965411764706, - 0.001531594294117647, - 0.001532778411764706, - 0.0015331061764705884, - 0.001548529411764706, - 0.0015485360588235295, - 0.0015488117647058824, - 0.0015525124705882353, - 0.0015560454411764706, - 0.0016162413823529412, - 0.001629125117647059, - 0.0016321000294117647, - 0.0017139492647058824, - 0.0019094927352941177 - ] - }, - "completed": true, - "percentSlower": 0 - }, - { - "name": "put 24 KiB of data", - "ops": 561, - "margin": 2.01, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 84, - "promise": true, - "details": { - "min": 0.0016904913666666668, - "max": 0.0032561225, - "mean": 0.0017817609225232625, - "median": 0.0017630093206896552, - "standardDeviation": 0.0001672892660477618, - "marginOfError": 0.00003577540048214881, - "relativeMarginOfError": 2.007867611749226, - "standardErrorOfMean": 0.000018252755348035107, - "sampleVariance": 2.798569853479883e-8, - "sampleResults": [ - 0.0016904913666666668, - 0.0016971052333333333, - 0.0017030901333333335, - 0.0017077214999999999, - 0.0017089184, - 0.0017114938666666667, - 0.0017116966666666665, - 0.0017141581000000002, - 0.0017149072333333334, - 0.0017151803333333333, - 0.0017179512000000002, - 0.0017181046, - 0.0017204903333333335, - 0.0017236999333333333, - 0.0017308587333333333, - 0.0017338985666666667, - 0.0017389501666666665, - 0.0017390513666666668, - 0.0017414355, - 0.0017440231666666667, - 0.0017444013333333334, - 0.0017469723666666665, - 0.0017477282333333332, - 0.0017477922, - 0.0017490902, - 0.0017496724666666668, - 0.0017505865000000001, - 0.0017515217666666666, - 0.0017538364137931035, - 0.0017541351333333335, - 0.0017564282333333333, - 0.0017568260666666667, - 0.0017570465000000001, - 0.0017580806, - 0.0017581087666666665, - 0.0017596081999999998, - 0.0017603980333333333, - 0.0017607393, - 0.0017616214, - 0.001761839, - 0.0017625499, - 0.0017629024, - 0.0017631162413793103, - 0.0017636545333333334, - 0.0017639612, - 0.0017646233999999998, - 0.0017659330333333334, - 0.0017661800666666668, - 0.0017668796, - 0.0017671037666666667, - 0.0017673932000000002, - 0.0017698414333333333, - 0.0017712517586206899, - 0.0017728151666666666, - 0.0017733824, - 0.0017735413448275862, - 0.0017739755517241378, - 0.0017751671333333335, - 0.0017751930344827587, - 0.0017768419310344827, - 0.0017793861333333335, - 0.001781814344827586, - 0.0017836022758620689, - 0.0017847987666666668, - 0.0017857536, - 0.0017870378333333333, - 0.0017872958, - 0.0017885545333333334, - 0.0017914562666666667, - 0.0017922022666666667, - 0.0017924817931034482, - 0.0017940940666666667, - 0.0017964041333333332, - 0.0017967070344827587, - 0.0017969815333333332, - 0.0017974688, - 0.0017989461333333334, - 0.0018019512333333333, - 0.0018156126333333333, - 0.0018321793333333333, - 0.0018666725666666667, - 0.0018724386666666667, - 0.0019419890344827587, - 0.0032561225 - ] - }, - "completed": true, - "percentSlower": 14.61 - }, - { - "name": "get 24 KiB of data with workers", - "ops": 276, - "margin": 2.11, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 74, - "promise": true, - "details": { - "min": 0.003048059, - "max": 0.004351964461538462, - "mean": 0.0036258855366640675, - "median": 0.003721592583333333, - "standardDeviation": 0.0003361864675136446, - "marginOfError": 0.00007659853073113031, - "relativeMarginOfError": 2.1125468511508347, - "standardErrorOfMean": 0.000039080883026086894, - "sampleVariance": 1.130213409393028e-7, - "sampleResults": [ - 0.003048059, - 0.003061036611111111, - 0.0030848222222222225, - 0.0031076774444444445, - 0.003108480166666667, - 0.003119029611111111, - 0.003122724222222222, - 0.003136284611111111, - 0.003137873111111111, - 0.0031638160555555552, - 0.0031735172222222222, - 0.0031808240555555554, - 0.003190142388888889, - 0.0031984000555555555, - 0.0032303505, - 0.003231332222222222, - 0.0032586185555555556, - 0.0032901487222222222, - 0.003336109388888889, - 0.003341888388888889, - 0.003347853, - 0.003356653277777778, - 0.003424924875, - 0.0034295594375, - 0.0034443213888888887, - 0.003468852611111111, - 0.003481330875, - 0.003517544722222222, - 0.003580800833333333, - 0.003607292833333333, - 0.0036119439375, - 0.003655603277777778, - 0.0036565345625, - 0.0036686603888888888, - 0.003670674375, - 0.0036865645555555554, - 0.003718193666666666, - 0.0037249914999999997, - 0.003730753625, - 0.003738098, - 0.0037480795625, - 0.003750555875, - 0.003758903, - 0.003764153875, - 0.0037882436875, - 0.003791664714285714, - 0.003793305444444444, - 0.0038009141875, - 0.003810767277777778, - 0.003810987285714286, - 0.0038246061111111107, - 0.003834152625, - 0.0038395235, - 0.00384075975, - 0.0038482525, - 0.0038491253125, - 0.0038554114375, - 0.0038629415625, - 0.003875095888888889, - 0.003891686444444444, - 0.0039085021875, - 0.003926096611111111, - 0.0039707545, - 0.003975781777777778, - 0.0039915368125, - 0.004016925888888889, - 0.004017899055555555, - 0.00404763725, - 0.004071776375, - 0.004114163230769231, - 0.004126912888888889, - 0.004135356611111111, - 0.004278805722222222, - 0.004351964461538462 - ] - }, - "completed": true, - "percentSlower": 57.99 - }, - { - "name": "put 24 KiB of data with workers", - "ops": 246, - "margin": 2.29, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 73, - "promise": true, - "details": { - "min": 0.0032794625625, - "max": 0.00478826375, - "mean": 0.004058929985445205, - "median": 0.0040589696875, - "standardDeviation": 0.00040432392182353845, - "marginOfError": 0.00009275216987216848, - "relativeMarginOfError": 2.285138452862348, - "standardErrorOfMean": 0.000047322535649065554, - "sampleVariance": 1.6347783375876685e-7, - "sampleResults": [ - 0.0032794625625, - 0.0033507100625, - 0.0033510253125, - 0.0033520508125, - 0.003365419375, - 0.003382655875, - 0.0033959575625, - 0.0034908118125, - 0.0035207619375, - 0.0035411986875, - 0.0035646425, - 0.0035663548125, - 0.003568340125, - 0.003596567375, - 0.003615636125, - 0.003649816875, - 0.0036714676875, - 0.0037043915, - 0.0037632895, - 0.003788477375, - 0.0038144975, - 0.0038670090625, - 0.0038770189375, - 0.0038966578125, - 0.0039100171875, - 0.0039141018125, - 0.0039230139375, - 0.0039333613125, - 0.0039348728125, - 0.0039420975, - 0.00395615775, - 0.0039908495625, - 0.0039955443125, - 0.0040177751875, - 0.0040373395625, - 0.0040430815625, - 0.0040589696875, - 0.0040766944375, - 0.0040884171875, - 0.004111317375, - 0.00420331075, - 0.0042130861875, - 0.0042198076875, - 0.00425139375, - 0.004259562625, - 0.004280614125, - 0.0042810055, - 0.004321721875, - 0.004341295, - 0.004345747875, - 0.004376862875, - 0.0043837755, - 0.0043958969375, - 0.0043966969375, - 0.0044091908125, - 0.004430254, - 0.0044388621875, - 0.004444758, - 0.0044469645625, - 0.0044539604375, - 0.0044622045625, - 0.0044825913125, - 0.0044967139375, - 0.00450620425, - 0.004514829875, - 0.0045305500625, - 0.0045524994375, - 0.0045737580625, - 0.0045774045, - 0.0046384396875, - 0.0046848559375, - 0.0046909735625, - 0.00478826375 - ] - }, - "completed": true, - "percentSlower": 62.56 - } - ], - "fastest": { - "name": "get 24 KiB of data", - "index": 0 - }, - "slowest": { - "name": "put 24 KiB of data with workers", - "index": 3 - } -} \ No newline at end of file diff --git a/benches/results/crypto100KiB.chart.html b/benches/results/crypto100KiB.chart.html deleted file mode 100644 index 88587b6a..00000000 --- a/benches/results/crypto100KiB.chart.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - crypto100KiB - - -
- -
- - - diff --git a/benches/results/crypto100KiB.json b/benches/results/crypto100KiB.json deleted file mode 100644 index 95974ec6..00000000 --- a/benches/results/crypto100KiB.json +++ /dev/null @@ -1,453 +0,0 @@ -{ - "name": "crypto100KiB", - "date": "2022-01-13T07:59:47.391Z", - "version": "3.2.4", - "results": [ - { - "name": "encrypt 100 KiB of data", - "ops": 159, - "margin": 2.6, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 81, - "promise": true, - "details": { - "min": 0.005979935111111111, - "max": 0.012793994555555556, - "mean": 0.006276256629629628, - "median": 0.006156802666666667, - "standardDeviation": 0.0007482015159875738, - "marginOfError": 0.0001629416634817383, - "relativeMarginOfError": 2.596159989897573, - "standardErrorOfMean": 0.00008313350177639709, - "sampleVariance": 5.598055085261037e-7, - "sampleResults": [ - 0.005979935111111111, - 0.006045505333333334, - 0.006045941333333333, - 0.006049042333333333, - 0.006051447777777778, - 0.0060680694444444445, - 0.006072792333333334, - 0.006073734333333334, - 0.006074167444444444, - 0.006080907444444445, - 0.006081171333333333, - 0.006088038555555555, - 0.0060889448888888885, - 0.006089527333333334, - 0.006090884111111111, - 0.006092376, - 0.0060959298888888895, - 0.006097840444444444, - 0.006098138222222222, - 0.006098251222222222, - 0.006099327333333333, - 0.006106022888888889, - 0.006107644333333333, - 0.006109110777777777, - 0.006115240444444444, - 0.006115462555555556, - 0.006122911, - 0.006126308888888889, - 0.006126722777777777, - 0.006129585777777778, - 0.006130108333333333, - 0.006133497, - 0.006141416, - 0.006141506333333334, - 0.006144507444444444, - 0.006144745777777777, - 0.006147398555555556, - 0.006155632777777777, - 0.006155690222222222, - 0.006155923, - 0.006156802666666667, - 0.006156926444444444, - 0.006159172777777778, - 0.006164643, - 0.006167837666666666, - 0.00616946, - 0.006174583, - 0.0061836715555555555, - 0.006189863666666667, - 0.006194699666666667, - 0.006195863888888889, - 0.0061993522222222215, - 0.006201133, - 0.006208618333333333, - 0.0062111783333333335, - 0.006213540888888889, - 0.006221889888888889, - 0.006223582555555556, - 0.006225300222222222, - 0.006226251888888889, - 0.006231664444444444, - 0.0062350240000000005, - 0.006241877444444445, - 0.006242639111111111, - 0.006250503888888889, - 0.006251851111111112, - 0.006260470555555555, - 0.006269828222222222, - 0.006282611888888889, - 0.006284517222222222, - 0.006298387333333333, - 0.006344760333333334, - 0.0063448904444444445, - 0.006419146666666667, - 0.006441526222222222, - 0.006460744555555556, - 0.006538593111111111, - 0.006680416111111111, - 0.006715253111111111, - 0.006872307888888889, - 0.012793994555555556 - ] - }, - "completed": true, - "percentSlower": 5.92 - }, - { - "name": "decrypt 100 KiB of data", - "ops": 169, - "margin": 0.29, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 85, - "promise": true, - "details": { - "min": 0.0058549890000000005, - "max": 0.0063231748888888896, - "mean": 0.005933504478431373, - "median": 0.005914650444444444, - "standardDeviation": 0.00007986371227845203, - "marginOfError": 0.000016978374234308794, - "relativeMarginOfError": 0.28614412100009623, - "standardErrorOfMean": 0.000008662435833831017, - "sampleVariance": 6.378212538895369e-9, - "sampleResults": [ - 0.0058549890000000005, - 0.005857250555555556, - 0.005860792, - 0.0058628805555555556, - 0.005868011333333333, - 0.0058685441111111115, - 0.005871660222222222, - 0.005873673555555556, - 0.005876660888888888, - 0.005876716000000001, - 0.005877387222222222, - 0.005878069333333334, - 0.0058790921111111115, - 0.005879579444444445, - 0.0058819070000000005, - 0.005882072777777778, - 0.005882588444444444, - 0.005883183333333333, - 0.005883766555555555, - 0.005883898555555555, - 0.005885249666666667, - 0.005886289222222222, - 0.005887763444444445, - 0.005888314222222222, - 0.005888692555555556, - 0.005890523, - 0.005892390777777778, - 0.0058943112222222226, - 0.005895838555555556, - 0.0058969842222222225, - 0.005897327333333333, - 0.005897728777777778, - 0.005899084222222222, - 0.005899510777777778, - 0.005900198111111111, - 0.005900537111111111, - 0.005901123666666667, - 0.005901712888888889, - 0.005904752, - 0.005909439555555555, - 0.005909840666666667, - 0.005914318333333333, - 0.005914650444444444, - 0.005915010666666667, - 0.005915682111111111, - 0.005916577333333333, - 0.0059173471111111115, - 0.005919733222222222, - 0.005919943111111111, - 0.005920415555555556, - 0.005922333111111112, - 0.005924942888888889, - 0.005926598111111111, - 0.005929524666666667, - 0.005930970111111111, - 0.005931121555555556, - 0.005933593666666666, - 0.005934483666666667, - 0.005934558, - 0.005936617777777778, - 0.005936831777777778, - 0.005937724333333333, - 0.005944081666666667, - 0.005946376111111111, - 0.005946583333333333, - 0.005949295111111111, - 0.005959046777777778, - 0.00595967, - 0.005963987111111111, - 0.005970319333333333, - 0.005970646444444444, - 0.005975374666666667, - 0.005980547444444445, - 0.005983372, - 0.005991510222222222, - 0.005996409555555556, - 0.0060081595555555554, - 0.006019322, - 0.006027350333333333, - 0.006049700666666667, - 0.006067682222222222, - 0.006143700222222223, - 0.006164271333333334, - 0.006263987111111111, - 0.0063231748888888896 - ] - }, - "completed": true, - "percentSlower": 0 - }, - { - "name": "encrypt 100 KiB of data with workers", - "ops": 110, - "margin": 1.63, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 75, - "promise": true, - "details": { - "min": 0.008086659285714285, - "max": 0.011332574142857143, - "mean": 0.009095347528888893, - "median": 0.009044631857142858, - "standardDeviation": 0.0006554223788125978, - "marginOfError": 0.00014833604844142041, - "relativeMarginOfError": 1.6309002813831068, - "standardErrorOfMean": 0.00007568165736807163, - "sampleVariance": 4.2957849464836444e-7, - "sampleResults": [ - 0.008086659285714285, - 0.008120657285714285, - 0.008161932285714286, - 0.008207412, - 0.008208720857142858, - 0.008234187857142857, - 0.008239131, - 0.008317602714285714, - 0.008318627857142857, - 0.008367987285714286, - 0.008371183142857144, - 0.008415306571428572, - 0.008454856857142857, - 0.008495935999999999, - 0.00852934457142857, - 0.008562003142857143, - 0.00857611142857143, - 0.008661471857142857, - 0.008665152857142857, - 0.00866563242857143, - 0.008696511714285714, - 0.00874073, - 0.008750357428571429, - 0.008799422285714285, - 0.008799591857142857, - 0.008866288142857143, - 0.008880441428571428, - 0.008887484428571428, - 0.008932419285714286, - 0.008933556142857142, - 0.008964200857142857, - 0.008988280428571428, - 0.009007434571428571, - 0.009019224571428572, - 0.009026665142857142, - 0.009028561857142858, - 0.009034287428571429, - 0.009044631857142858, - 0.009052194142857142, - 0.009058083428571428, - 0.009081712857142857, - 0.009115029571428571, - 0.009116846, - 0.009144548428571429, - 0.009150995142857143, - 0.009178946714285716, - 0.009208407714285714, - 0.00921983157142857, - 0.009226972714285714, - 0.009232159571428571, - 0.009257087285714284, - 0.009298426428571429, - 0.009300797428571428, - 0.009335167142857143, - 0.009344893142857144, - 0.009357072, - 0.009359218142857144, - 0.009369552857142858, - 0.009395407285714285, - 0.009410963, - 0.009460395428571428, - 0.00955706642857143, - 0.009576639428571428, - 0.009599221142857144, - 0.009603645714285713, - 0.009657801714285713, - 0.009660050333333333, - 0.009685698571428572, - 0.009715516833333333, - 0.009974710166666666, - 0.010601731000000001, - 0.010686994142857143, - 0.010839056166666666, - 0.010925644166666667, - 0.011332574142857143 - ] - }, - "completed": true, - "percentSlower": 34.91 - }, - { - "name": "decrypt 100 KiB of data with workers", - "ops": 121, - "margin": 2.27, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 81, - "promise": true, - "details": { - "min": 0.007245492571428571, - "max": 0.013323115714285714, - "mean": 0.008295397202821866, - "median": 0.008178772714285715, - "standardDeviation": 0.000864891808293132, - "marginOfError": 0.00018835421602828207, - "relativeMarginOfError": 2.27058706681591, - "standardErrorOfMean": 0.000096099089810348, - "sampleVariance": 7.480378400525638e-7, - "sampleResults": [ - 0.007245492571428571, - 0.007248648428571429, - 0.007347254857142857, - 0.0073511712857142865, - 0.007407586428571428, - 0.007409589857142857, - 0.007422657428571428, - 0.007486448285714285, - 0.007521886, - 0.007526080571428571, - 0.007535167571428572, - 0.007535498, - 0.007557302285714286, - 0.007564453857142857, - 0.007584770714285714, - 0.007594010571428571, - 0.0075985577142857145, - 0.007700703000000001, - 0.007714650428571429, - 0.007716516571428572, - 0.007806729142857143, - 0.007865528857142857, - 0.007883709142857142, - 0.007891138, - 0.007938853571428572, - 0.007953977285714285, - 0.007977299, - 0.008005532571428572, - 0.008005663857142856, - 0.008031720285714286, - 0.008052685428571429, - 0.008055098142857143, - 0.008073902142857142, - 0.008075929857142857, - 0.008078675, - 0.008101511714285714, - 0.008113441857142857, - 0.008126348857142857, - 0.008154206571428572, - 0.008174611142857143, - 0.008178772714285715, - 0.008230907571428572, - 0.008251442142857142, - 0.008266147285714285, - 0.008266474714285715, - 0.008283061428571428, - 0.008285174285714287, - 0.008292844571428572, - 0.008373195428571428, - 0.008400423571428572, - 0.008409828999999999, - 0.008426394857142857, - 0.008442351857142857, - 0.008450324571428572, - 0.008467520000000001, - 0.008468928857142857, - 0.008494275571428572, - 0.008498293428571429, - 0.00852325, - 0.008536072142857143, - 0.008538357285714285, - 0.008548201714285714, - 0.008553004142857142, - 0.008660484714285713, - 0.008662604285714286, - 0.008679087285714286, - 0.008680634714285715, - 0.008690533857142857, - 0.00869465857142857, - 0.008763320428571428, - 0.008789007857142856, - 0.008848177428571429, - 0.008896981571428571, - 0.008912346142857143, - 0.009101458000000002, - 0.009177000571428572, - 0.009256053571428571, - 0.009636421857142858, - 0.010217132, - 0.011317898857142858, - 0.013323115714285714 - ] - }, - "completed": true, - "percentSlower": 28.4 - } - ], - "fastest": { - "name": "decrypt 100 KiB of data", - "index": 1 - }, - "slowest": { - "name": "encrypt 100 KiB of data with workers", - "index": 2 - } -} \ No newline at end of file diff --git a/benches/results/crypto10KiB.chart.html b/benches/results/crypto10KiB.chart.html deleted file mode 100644 index a0d8ca9c..00000000 --- a/benches/results/crypto10KiB.chart.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - crypto10KiB - - -
- -
- - - diff --git a/benches/results/crypto10KiB.json b/benches/results/crypto10KiB.json deleted file mode 100644 index 67f9da13..00000000 --- a/benches/results/crypto10KiB.json +++ /dev/null @@ -1,452 +0,0 @@ -{ - "name": "crypto10KiB", - "date": "2022-01-13T07:58:10.983Z", - "version": "3.2.4", - "results": [ - { - "name": "encrypt 10 KiB of data", - "ops": 1180, - "margin": 2.12, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 84, - "promise": true, - "details": { - "min": 0.0007951963174603175, - "max": 0.0015425922222222221, - "mean": 0.0008476303880891074, - "median": 0.0008310460109289617, - "standardDeviation": 0.00008397525991249635, - "marginOfError": 0.000017958405969121577, - "relativeMarginOfError": 2.11865999868255, - "standardErrorOfMean": 0.000009162452025062029, - "sampleVariance": 7.0518442773713155e-9, - "sampleResults": [ - 0.0007951963174603175, - 0.000795312746031746, - 0.0007962236666666666, - 0.0007975503968253968, - 0.0007978943174603174, - 0.0007998318095238095, - 0.0008015667619047619, - 0.0008034523650793651, - 0.0008036180476190476, - 0.0008040842063492063, - 0.0008041836825396825, - 0.0008046170158730159, - 0.0008057199841269841, - 0.0008075203333333333, - 0.0008079858095238094, - 0.0008079982857142857, - 0.0008080207936507936, - 0.0008086879047619048, - 0.0008088479523809524, - 0.000809737253968254, - 0.0008105049841269841, - 0.0008129837777777777, - 0.0008135215714285713, - 0.0008136669523809523, - 0.0008138626349206349, - 0.0008141083968253969, - 0.0008148993015873017, - 0.000814904265625, - 0.000815198492063492, - 0.0008152655873015873, - 0.0008163823492063492, - 0.0008190262380952381, - 0.000819505873015873, - 0.000819554, - 0.0008198424426229509, - 0.000819955888888889, - 0.0008219607777777778, - 0.0008229938196721312, - 0.0008245648412698412, - 0.0008272938095238095, - 0.0008281637049180328, - 0.0008303073333333333, - 0.0008317846885245902, - 0.0008317952131147541, - 0.0008322552295081967, - 0.000833333524590164, - 0.0008368375806451613, - 0.0008370633015873016, - 0.0008398719677419355, - 0.0008417019682539683, - 0.0008483035254237287, - 0.0008494360161290322, - 0.0008530163442622951, - 0.000854279344262295, - 0.0008544461935483871, - 0.0008547188852459016, - 0.0008550462033898305, - 0.0008550552033898305, - 0.0008569071587301588, - 0.0008579006610169491, - 0.0008581412786885245, - 0.0008584247540983607, - 0.0008619080847457628, - 0.0008629961355932203, - 0.0008636560483870968, - 0.0008678567966101695, - 0.0008688001694915254, - 0.0008716306984126984, - 0.0008731308644067796, - 0.0008752268644067797, - 0.0008800204745762712, - 0.000882142492063492, - 0.0008858355423728814, - 0.0008896554262295082, - 0.0008899495254237288, - 0.0008949882711864407, - 0.0008980625254237289, - 0.0009002208412698412, - 0.0009049241016949153, - 0.0009067185254237289, - 0.0009098971355932203, - 0.0009267712711864408, - 0.0009271328474576272, - 0.0015425922222222221 - ] - }, - "completed": true, - "percentSlower": 20.32 - }, - { - "name": "decrypt 10 KiB of data", - "ops": 1481, - "margin": 0.44, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 87, - "promise": true, - "details": { - "min": 0.0006640647763157894, - "max": 0.0007484449078947368, - "mean": 0.0006750044152934059, - "median": 0.000671104855263158, - "standardDeviation": 0.000014118590831898095, - "marginOfError": 0.0000029667967682042877, - "relativeMarginOfError": 0.4395225721471322, - "standardErrorOfMean": 0.0000015136718205123917, - "sampleVariance": 1.9933460707855693e-10, - "sampleResults": [ - 0.0006640647763157894, - 0.0006641259210526316, - 0.0006641563289473684, - 0.0006647681447368421, - 0.0006650777105263158, - 0.0006651792105263158, - 0.000665253052631579, - 0.0006657835131578947, - 0.0006661411578947369, - 0.0006661466578947368, - 0.0006662967368421053, - 0.0006663799210526316, - 0.0006665386052631579, - 0.0006669707894736841, - 0.0006669855263157894, - 0.0006672588026315789, - 0.0006673429342105263, - 0.0006674451842105263, - 0.0006675112266666666, - 0.0006675317368421052, - 0.0006681234868421053, - 0.0006683405789473684, - 0.0006685348421052632, - 0.0006686092105263158, - 0.0006686235789473685, - 0.0006687835263157895, - 0.0006689632368421052, - 0.0006692445, - 0.0006693361842105263, - 0.0006694002236842105, - 0.0006694388157894737, - 0.0006697010263157895, - 0.0006697479078947369, - 0.0006698821710526316, - 0.0006700996578947369, - 0.0006701182368421053, - 0.0006702660921052632, - 0.0006703335657894737, - 0.0006703386710526316, - 0.0006704376842105263, - 0.0006704951842105263, - 0.0006706279342105263, - 0.0006708546315789474, - 0.000671104855263158, - 0.000671251, - 0.0006712590526315789, - 0.0006714403815789474, - 0.0006717028421052632, - 0.0006718612894736842, - 0.0006719180394736843, - 0.0006722035921052632, - 0.0006722484868421053, - 0.0006723385, - 0.0006726418552631579, - 0.0006728145263157894, - 0.0006729212236842105, - 0.0006731921184210527, - 0.0006736702631578947, - 0.0006737766315789473, - 0.0006738075394736843, - 0.0006741891315789475, - 0.0006744086710526316, - 0.000674546, - 0.0006746722236842106, - 0.0006750625131578948, - 0.0006755921447368421, - 0.0006758524210526316, - 0.0006770203552631579, - 0.0006774858947368421, - 0.0006785478421052632, - 0.0006787006933333333, - 0.0006787596710526316, - 0.0006788551052631579, - 0.0006790741973684211, - 0.0006799975394736842, - 0.0006808732894736842, - 0.0006809759736842105, - 0.0006839770394736842, - 0.0006855212631578948, - 0.0006878826842105264, - 0.0006891250657894737, - 0.0006906488947368421, - 0.0006991063552631579, - 0.0007124514868421053, - 0.0007267690394736842, - 0.0007354326447368421, - 0.0007484449078947368 - ] - }, - "completed": true, - "percentSlower": 0 - }, - { - "name": "encrypt 10 KiB of data with workers", - "ops": 334, - "margin": 1.63, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 74, - "promise": true, - "details": { - "min": 0.0025117734285714285, - "max": 0.003356840333333334, - "mean": 0.002992274110521235, - "median": 0.0030106576666666662, - "standardDeviation": 0.000214654205816779, - "marginOfError": 0.000048907967362355494, - "relativeMarginOfError": 1.6344748360582524, - "standardErrorOfMean": 0.000024953044572630356, - "sampleVariance": 4.6076428074832124e-8, - "sampleResults": [ - 0.0025117734285714285, - 0.0025222084285714285, - 0.0025492366666666666, - 0.0025571796190476193, - 0.002558738, - 0.002558976904761905, - 0.002610985, - 0.002661355476190476, - 0.002662735047619048, - 0.0026733142500000003, - 0.0027170003333333334, - 0.0027458788095238097, - 0.002776181619047619, - 0.0028350575238095237, - 0.0028459295714285716, - 0.002857609523809524, - 0.002866192761904762, - 0.002872367095238095, - 0.002878613857142857, - 0.002878626571428571, - 0.002894746714285714, - 0.002899093904761905, - 0.0028992653333333334, - 0.0029113601904761904, - 0.0029470055714285715, - 0.002949189142857143, - 0.0029510866666666666, - 0.0029533741904761903, - 0.0029655897619047617, - 0.0029680854285714284, - 0.002972969222222222, - 0.0029810520476190477, - 0.0029823872380952384, - 0.0029874230000000003, - 0.002998236333333333, - 0.0030022400476190474, - 0.0030101525238095234, - 0.0030111628095238095, - 0.003023995238095238, - 0.003025256666666667, - 0.003051942904761905, - 0.0030546848095238097, - 0.003084845714285714, - 0.003087713666666667, - 0.0030968988571428574, - 0.003097880238095238, - 0.0030992413809523807, - 0.0031158947142857145, - 0.0031209101428571425, - 0.003124659333333333, - 0.003125670222222222, - 0.0031263812857142857, - 0.0031334161904761904, - 0.0031402959047619047, - 0.003144516238095238, - 0.003149913285714286, - 0.003162747142857143, - 0.0031642273333333335, - 0.003165183666666667, - 0.0031686936666666665, - 0.0031785771428571425, - 0.0031859640000000003, - 0.00320405580952381, - 0.003227345, - 0.003229269857142857, - 0.0032309944444444444, - 0.0032440531111111114, - 0.003252679666666667, - 0.0032621362857142857, - 0.0032691540000000002, - 0.0032748104761904763, - 0.003300158722222222, - 0.003322896111111111, - 0.003356840333333334 - ] - }, - "completed": true, - "percentSlower": 77.45 - }, - { - "name": "decrypt 10 KiB of data with workers", - "ops": 405, - "margin": 2.2, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 76, - "promise": true, - "details": { - "min": 0.00202541056, - "max": 0.00287555664, - "mean": 0.00246976934631579, - "median": 0.0025221521800000003, - "standardDeviation": 0.0002418603479329381, - "marginOfError": 0.0000543768378309199, - "relativeMarginOfError": 2.2016970091573547, - "standardErrorOfMean": 0.000027743284607612195, - "sampleVariance": 5.849642790224187e-8, - "sampleResults": [ - 0.00202541056, - 0.00205946424, - 0.0021017182, - 0.00213044072, - 0.0021383488000000003, - 0.00213982692, - 0.00214306424, - 0.0021455692400000003, - 0.00215531124, - 0.00216348604, - 0.00216751496, - 0.00217284752, - 0.00218197108, - 0.002185305, - 0.00219353368, - 0.00219374504, - 0.00220086736, - 0.0022053472, - 0.00221124508, - 0.00221525844, - 0.00222469496, - 0.002244372, - 0.00224449332, - 0.002271701, - 0.00227600052, - 0.0023039890800000003, - 0.00231128168, - 0.00233851648, - 0.00234147628, - 0.00234345412, - 0.0023889962, - 0.00239367592, - 0.00243891352, - 0.0024693066, - 0.00248135592, - 0.00250485468, - 0.00251632548, - 0.00252113144, - 0.0025231729200000004, - 0.00253728368, - 0.00253870848, - 0.00255871632, - 0.0025590696400000002, - 0.00257427396, - 0.0025844262400000003, - 0.00258448884, - 0.00259649684, - 0.0025965475599999998, - 0.0026235748, - 0.00263052532, - 0.0026540312, - 0.00266571072, - 0.0026699225999999997, - 0.00268387408, - 0.002687258, - 0.00269221596, - 0.00269376028, - 0.00269386936, - 0.00269558256, - 0.0026961814, - 0.0027104767600000003, - 0.0027146188799999998, - 0.0027181036800000002, - 0.00272111848, - 0.00272594172, - 0.00273694484, - 0.00274879208, - 0.00275765912, - 0.00275931284, - 0.00275981068, - 0.0027837148, - 0.00278420124, - 0.00278816352, - 0.0027995621599999996, - 0.00283398736, - 0.00287555664 - ] - }, - "completed": true, - "percentSlower": 72.65 - } - ], - "fastest": { - "name": "decrypt 10 KiB of data", - "index": 1 - }, - "slowest": { - "name": "encrypt 10 KiB of data with workers", - "index": 2 - } -} \ No newline at end of file diff --git a/benches/results/crypto16KiB.chart.html b/benches/results/crypto16KiB.chart.html deleted file mode 100644 index 43aa92f0..00000000 --- a/benches/results/crypto16KiB.chart.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - crypto16KiB - - -
- -
- - - diff --git a/benches/results/crypto16KiB.json b/benches/results/crypto16KiB.json deleted file mode 100644 index b9b90e18..00000000 --- a/benches/results/crypto16KiB.json +++ /dev/null @@ -1,452 +0,0 @@ -{ - "name": "crypto16KiB", - "date": "2022-01-13T07:58:35.118Z", - "version": "3.2.4", - "results": [ - { - "name": "encrypt 16 KiB of data", - "ops": 864, - "margin": 0.45, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 86, - "promise": true, - "details": { - "min": 0.0011305463333333332, - "max": 0.0012719596, - "mean": 0.0011567658349894286, - "median": 0.0011494984886363637, - "standardDeviation": 0.000024630007538483445, - "marginOfError": 0.000005205607153116677, - "relativeMarginOfError": 0.45001390909546096, - "standardErrorOfMean": 0.000002655922016896264, - "sampleVariance": 6.066372713457512e-10, - "sampleResults": [ - 0.0011305463333333332, - 0.0011319117777777777, - 0.0011329, - 0.0011331903333333332, - 0.0011332073555555555, - 0.0011335043777777778, - 0.0011335718666666667, - 0.0011337590222222224, - 0.0011362814, - 0.0011365906444444445, - 0.0011367228444444444, - 0.0011368636444444443, - 0.0011378006222222223, - 0.0011381537999999999, - 0.0011394794, - 0.001139567090909091, - 0.0011397306, - 0.0011398372222222223, - 0.001140060111111111, - 0.0011404976, - 0.0011405450454545455, - 0.0011406552, - 0.0011407481777777778, - 0.001141551888888889, - 0.0011423252444444443, - 0.00114355575, - 0.0011435918, - 0.0011438649111111111, - 0.001144030088888889, - 0.0011442934444444444, - 0.001144665159090909, - 0.0011448688444444443, - 0.0011449345555555556, - 0.0011451453636363636, - 0.0011451697555555555, - 0.0011452212, - 0.001145428311111111, - 0.0011454301555555554, - 0.0011469633111111112, - 0.0011479202444444445, - 0.0011480615227272726, - 0.0011481847333333333, - 0.001149422659090909, - 0.0011495743181818181, - 0.001149755681818182, - 0.0011498605777777776, - 0.0011500994222222222, - 0.0011503471818181817, - 0.0011505445909090908, - 0.0011505876888888889, - 0.0011509426818181818, - 0.0011516896666666668, - 0.0011538737272727272, - 0.0011550860227272728, - 0.0011554365227272726, - 0.0011563555000000001, - 0.0011575891590909092, - 0.0011601064666666666, - 0.0011604070222222223, - 0.0011617873863636362, - 0.001162155, - 0.0011626130666666666, - 0.0011654529318181818, - 0.001166744511111111, - 0.0011672329090909091, - 0.0011679670454545455, - 0.0011679988636363635, - 0.0011681020681818183, - 0.001170283, - 0.0011741835, - 0.0011765165454545453, - 0.0011766105333333335, - 0.0011778095, - 0.00117879675, - 0.0011791091136363636, - 0.0011792413636363636, - 0.001180514931818182, - 0.0011835972, - 0.0011858415, - 0.0011879171555555556, - 0.0011958140222222222, - 0.0011978677333333333, - 0.0012045070222222222, - 0.001209470888888889, - 0.0012587580227272728, - 0.0012719596 - ] - }, - "completed": true, - "percentSlower": 13.86 - }, - { - "name": "decrypt 16 KiB of data", - "ops": 1003, - "margin": 1.88, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 86, - "promise": true, - "details": { - "min": 0.0009715309807692308, - "max": 0.0017854406538461538, - "mean": 0.0009974482547006206, - "median": 0.0009823423365384616, - "standardDeviation": 0.00008859144713237092, - "marginOfError": 0.00001872400039572314, - "relativeMarginOfError": 1.8771901507154434, - "standardErrorOfMean": 0.000009553061426389357, - "sampleVariance": 7.848444505007672e-9, - "sampleResults": [ - 0.0009715309807692308, - 0.0009723286730769231, - 0.0009736497884615385, - 0.0009739212692307693, - 0.0009742905961538461, - 0.0009745323846153846, - 0.0009749749615384616, - 0.0009750138461538462, - 0.0009753705576923076, - 0.0009756911538461538, - 0.0009758650576923077, - 0.0009759102115384615, - 0.000975921, - 0.0009760263653846153, - 0.0009761133461538461, - 0.0009766781346153845, - 0.0009767376346153846, - 0.0009767898076923078, - 0.0009770657115384614, - 0.0009770807884615384, - 0.0009772708653846154, - 0.0009775435961538461, - 0.0009776957884615385, - 0.0009779712307692308, - 0.0009784756538461538, - 0.0009784788653846154, - 0.0009785358269230769, - 0.0009786402307692308, - 0.0009787051153846153, - 0.0009787780961538462, - 0.0009789140576923077, - 0.0009789929807692307, - 0.0009792496346153845, - 0.0009793136153846153, - 0.0009801946538461539, - 0.0009803405384615385, - 0.0009805151923076923, - 0.0009805732692307694, - 0.0009806363725490196, - 0.000980782, - 0.000980801423076923, - 0.0009814916346153847, - 0.00098230125, - 0.0009823834230769232, - 0.0009826761923076922, - 0.0009827079019607843, - 0.0009832983461538461, - 0.0009835919807692308, - 0.000983799923076923, - 0.0009841261568627451, - 0.0009842117843137255, - 0.00098424525, - 0.0009850050192307693, - 0.0009850078269230769, - 0.000985086346153846, - 0.000985274568627451, - 0.000985700403846154, - 0.0009867111153846154, - 0.0009869824615384615, - 0.0009873452156862745, - 0.0009874244509803921, - 0.0009879039423076922, - 0.0009886198039215685, - 0.0009887024901960783, - 0.000990287173076923, - 0.000990399450980392, - 0.0009913228076923078, - 0.000991593588235294, - 0.00099202425, - 0.000992284450980392, - 0.0009927705294117647, - 0.000992956549019608, - 0.0009940866862745098, - 0.0009944067254901961, - 0.000994536725490196, - 0.0009986474705882353, - 0.001003527588235294, - 0.00100487504, - 0.0010184974901960785, - 0.0010331741153846155, - 0.0010349455098039215, - 0.001037925431372549, - 0.0010480224807692306, - 0.001061578096153846, - 0.001114748326923077, - 0.0017854406538461538 - ] - }, - "completed": true, - "percentSlower": 0 - }, - { - "name": "encrypt 16 KiB of data with workers", - "ops": 295, - "margin": 1.72, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 73, - "promise": true, - "details": { - "min": 0.0028228120999999997, - "max": 0.0038719242, - "mean": 0.0033903678900034043, - "median": 0.003441910933333333, - "standardDeviation": 0.00025399684993751976, - "marginOfError": 0.00005826704209374585, - "relativeMarginOfError": 1.7186052954768678, - "standardErrorOfMean": 0.00002972808270089074, - "sampleVariance": 6.451439977818293e-8, - "sampleResults": [ - 0.0028228120999999997, - 0.002879307277777778, - 0.0029247433684210524, - 0.0029394666666666667, - 0.0029571615, - 0.0030040408947368423, - 0.0030143925263157894, - 0.0030267444444444444, - 0.0030357556500000002, - 0.0030436873157894738, - 0.003044251842105263, - 0.003063708842105263, - 0.0030982371764705884, - 0.003123576, - 0.00312425065, - 0.0031612453157894736, - 0.0031656303684210524, - 0.0031992232105263157, - 0.0032073275999999996, - 0.00321450935, - 0.0032468305789473684, - 0.0032682537368421056, - 0.0032843511999999997, - 0.0032981348235294116, - 0.003336796176470588, - 0.003337767125, - 0.0033469945, - 0.0033490794375, - 0.0033526319499999997, - 0.003353364117647059, - 0.0033571270625, - 0.0033702520000000002, - 0.0033727218125, - 0.0033855383684210523, - 0.0033987561176470585, - 0.003404553052631579, - 0.003441910933333333, - 0.003451819117647059, - 0.0034732908235294117, - 0.0034789324210526317, - 0.0034909398, - 0.00349565275, - 0.003498454684210526, - 0.0035054195294117645, - 0.0035077265500000005, - 0.003509466470588235, - 0.0035109604210526316, - 0.0035147310526315785, - 0.0035153793529411766, - 0.0035189651000000002, - 0.0035200723157894735, - 0.0035335650000000002, - 0.003541346375, - 0.0035474873499999997, - 0.003557016947368421, - 0.0035644842631578945, - 0.00357316825, - 0.003573601588235294, - 0.0035859031052631577, - 0.0035859894210526315, - 0.0035921598823529413, - 0.003623581235294118, - 0.0036248856842105263, - 0.0036340677894736843, - 0.003670345157894737, - 0.0037047985625, - 0.0037052465294117646, - 0.0037431375625, - 0.003798577, - 0.0038344560588235294, - 0.003842044052631579, - 0.0038421244736842105, - 0.0038719242 - ] - }, - "completed": true, - "percentSlower": 70.59 - }, - { - "name": "decrypt 16 KiB of data with workers", - "ops": 339, - "margin": 1.67, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 76, - "promise": true, - "details": { - "min": 0.002396795619047619, - "max": 0.003243871761904762, - "mean": 0.0029481590115288236, - "median": 0.0030012459047619048, - "standardDeviation": 0.00021953599484026182, - "marginOfError": 0.00004935771113993688, - "relativeMarginOfError": 1.6741875504992354, - "standardErrorOfMean": 0.000025182505683641263, - "sampleVariance": 4.819605303050346e-8, - "sampleResults": [ - 0.002396795619047619, - 0.0024763236666666666, - 0.00250199585, - 0.0025034348, - 0.0025163322857142856, - 0.002570250476190476, - 0.0025718466666666668, - 0.0026074565238095237, - 0.0026085300476190476, - 0.00262179655, - 0.002653298761904762, - 0.002658347, - 0.0027049873499999997, - 0.00272582545, - 0.0027270208095238092, - 0.00275758815, - 0.0027978368095238093, - 0.002808434, - 0.00280946445, - 0.0028120430476190478, - 0.00282204095, - 0.0028224321904761905, - 0.0028524202500000003, - 0.002855032523809524, - 0.002871681476190476, - 0.0028727271904761906, - 0.002885033857142857, - 0.002885827904761905, - 0.0029085632380952383, - 0.002915676095238095, - 0.0029361561904761905, - 0.002939585476190476, - 0.0029576093333333335, - 0.0029622463809523807, - 0.0029788997142857145, - 0.002982509047619048, - 0.0029889566666666664, - 0.0029953684285714288, - 0.003007123380952381, - 0.0030178405714285715, - 0.00302261880952381, - 0.0030273088095238094, - 0.003031881476190476, - 0.0030536133, - 0.0030546915, - 0.0030639164761904767, - 0.0030647556666666665, - 0.003066180047619047, - 0.003078588666666667, - 0.003079639619047619, - 0.0030974255238095235, - 0.00311029585, - 0.00311643195, - 0.0031190563333333334, - 0.003123903238095238, - 0.0031241939523809527, - 0.0031331077, - 0.0031365629999999998, - 0.003137289, - 0.0031438450952380953, - 0.0031449019047619046, - 0.003150976523809524, - 0.003154756666666667, - 0.0031663466666666668, - 0.0031724238, - 0.003173585238095238, - 0.003175504619047619, - 0.0031800406000000005, - 0.0031817416000000003, - 0.003188030904761905, - 0.0031887726666666666, - 0.0031949112857142855, - 0.0032178951428571433, - 0.0032254003000000003, - 0.00322828, - 0.003243871761904762 - ] - }, - "completed": true, - "percentSlower": 66.2 - } - ], - "fastest": { - "name": "decrypt 16 KiB of data", - "index": 1 - }, - "slowest": { - "name": "encrypt 16 KiB of data with workers", - "index": 2 - } -} \ No newline at end of file diff --git a/benches/results/crypto1KiB.chart.html b/benches/results/crypto1KiB.chart.html deleted file mode 100644 index a0ca8fa8..00000000 --- a/benches/results/crypto1KiB.chart.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - crypto1KiB - - -
- -
- - - diff --git a/benches/results/crypto1KiB.json b/benches/results/crypto1KiB.json deleted file mode 100644 index 2b1623d9..00000000 --- a/benches/results/crypto1KiB.json +++ /dev/null @@ -1,445 +0,0 @@ -{ - "name": "crypto1KiB", - "date": "2022-01-13T07:57:46.294Z", - "version": "3.2.4", - "results": [ - { - "name": "encrypt 1 KiB of data", - "ops": 3487, - "margin": 1.81, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 82, - "promise": true, - "details": { - "min": 0.00027341579234972673, - "max": 0.00044572552447552443, - "mean": 0.00028676896787894503, - "median": 0.00027876034972677593, - "standardDeviation": 0.000023943431462478637, - "marginOfError": 0.000005182454964705221, - "relativeMarginOfError": 1.8071882055567854, - "standardErrorOfMean": 0.0000026441096758700107, - "sampleVariance": 5.73287910198412e-10, - "sampleResults": [ - 0.00027341579234972673, - 0.0002735013715846994, - 0.0002737521202185792, - 0.0002739826010928962, - 0.0002740051693989071, - 0.000274215912568306, - 0.000274262956284153, - 0.00027433473770491803, - 0.00027435801639344264, - 0.0002746254098360656, - 0.00027467488524590163, - 0.0002747850601092896, - 0.0002751311147540984, - 0.00027519342307692307, - 0.00027526713186813186, - 0.0002752953606557377, - 0.0002753697391304348, - 0.0002754338913043478, - 0.0002754842568306011, - 0.0002755493825136612, - 0.0002756182459016393, - 0.0002756463333333333, - 0.00027574605494505496, - 0.00027591028415300547, - 0.0002760983606557377, - 0.00027611286338797815, - 0.0002764067032967033, - 0.00027660854098360656, - 0.00027689462499999996, - 0.00027700854644808744, - 0.0002770539344262295, - 0.00027713360655737707, - 0.00027714696721311475, - 0.00027723838251366117, - 0.00027729018579234974, - 0.00027732049180327867, - 0.0002776243879781421, - 0.0002777224175824176, - 0.0002779156393442623, - 0.000278189, - 0.0002787501256830601, - 0.0002787705737704918, - 0.00027930063934426233, - 0.0002793925683060109, - 0.00027944858695652176, - 0.0002796031923076923, - 0.0002806081555555556, - 0.00028070530555555554, - 0.00028088518579234974, - 0.00028091256830601094, - 0.0002814345164835165, - 0.00028170675409836064, - 0.0002820464699453552, - 0.0002830207868852459, - 0.0002832471693989071, - 0.00028354830601092895, - 0.00028509207692307693, - 0.0002858355657142857, - 0.00028703052, - 0.0002881178685714286, - 0.00028940002285714287, - 0.00028942843999999997, - 0.00028945316571428567, - 0.00028974728415300546, - 0.0002898344057142857, - 0.0002901221542857143, - 0.00029019262285714286, - 0.0002927013944444445, - 0.0002930298342857143, - 0.00029379775568181817, - 0.00029382967045454546, - 0.00029471930285714283, - 0.0002959766457142857, - 0.0002984778228571429, - 0.0003027438342857143, - 0.0003143349204545454, - 0.00032601000632911394, - 0.0003306292215189874, - 0.00033214664285714286, - 0.0003466511329113924, - 0.00035732272151898733, - 0.00044572552447552443 - ] - }, - "completed": true, - "percentSlower": 54.39 - }, - { - "name": "decrypt 1 KiB of data", - "ops": 7645, - "margin": 0.64, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 83, - "promise": true, - "details": { - "min": 0.00012737190101522842, - "max": 0.00014653558673469386, - "mean": 0.0001308037726166486, - "median": 0.00012958005655526992, - "standardDeviation": 0.000003885071818038931, - "marginOfError": 8.358263849031345e-7, - "relativeMarginOfError": 0.6389925674030223, - "standardErrorOfMean": 4.2644203311384415e-7, - "sampleVariance": 1.5093783031320324e-11, - "sampleResults": [ - 0.00012737190101522842, - 0.00012760330964467004, - 0.00012773344387755103, - 0.00012780491878172588, - 0.00012782591581632653, - 0.00012786669897959182, - 0.0001279910152284264, - 0.00012803534771573604, - 0.00012811001785714287, - 0.00012817084654731458, - 0.00012824577411167513, - 0.00012828345918367346, - 0.00012832713197969542, - 0.0001284301326530612, - 0.00012849681887755102, - 0.0001285186138107417, - 0.00012861713775510204, - 0.00012863247814910025, - 0.00012866395918367346, - 0.00012876138010204082, - 0.00012876236572890025, - 0.00012879649492385787, - 0.00012884242199488492, - 0.0001288668298969072, - 0.0001288799187817259, - 0.00012893167857142856, - 0.00012893523469387756, - 0.00012898156345177665, - 0.0001289914719387755, - 0.00012900458883248733, - 0.00012904590355329948, - 0.0001292280025510204, - 0.00012922979695431473, - 0.0001292587411167513, - 0.00012927595153061224, - 0.00012931400511508953, - 0.00012933233673469388, - 0.00012946195918367347, - 0.00012948694884910486, - 0.0001295232461928934, - 0.00012955180867346938, - 0.00012958005655526992, - 0.00012958295939086294, - 0.00012958845524296676, - 0.00012963468134715025, - 0.00012975061953727506, - 0.0001297874248704663, - 0.00012978995663265306, - 0.00012985052295918367, - 0.00012985246035805627, - 0.00012985960152284265, - 0.00012987316326530614, - 0.00012990089795918367, - 0.00013000462944162436, - 0.00013006721558441557, - 0.0001301629387755102, - 0.00013017775126903552, - 0.00013026151776649746, - 0.00013027464285714286, - 0.00013036080710659897, - 0.00013052009898477157, - 0.0001306619974293059, - 0.000130671875, - 0.00013137208695652175, - 0.0001316043730964467, - 0.0001317483578680203, - 0.00013197656265984654, - 0.00013205244329896908, - 0.00013218577157360405, - 0.00013273378172588832, - 0.0001329202157360406, - 0.00013293548337595906, - 0.00013303699492385788, - 0.00013442637817258883, - 0.00013450276395939086, - 0.00013555803045685278, - 0.00013830092227979274, - 0.0001390643654822335, - 0.00013992830964467006, - 0.00014145925773195877, - 0.00014321051015228427, - 0.00014575508695652175, - 0.00014653558673469386 - ] - }, - "completed": true, - "percentSlower": 0 - }, - { - "name": "encrypt 1 KiB of data with workers", - "ops": 463, - "margin": 2.08, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 73, - "promise": true, - "details": { - "min": 0.0017663748636363636, - "max": 0.00254306675, - "mean": 0.002158637615326455, - "median": 0.0021517732857142856, - "standardDeviation": 0.0001960495576908587, - "marginOfError": 0.000044973895673286886, - "relativeMarginOfError": 2.083438894697728, - "standardErrorOfMean": 0.000022945865139432087, - "sampleVariance": 3.8435429070781336e-8, - "sampleResults": [ - 0.0017663748636363636, - 0.001775445931818182, - 0.0018317907857142855, - 0.0018565178409090909, - 0.0018961646785714285, - 0.0019082298214285714, - 0.0019113905357142857, - 0.0019212611785714285, - 0.00192645725, - 0.0019267673928571427, - 0.0019379231785714285, - 0.0019461344642857142, - 0.001960954214285714, - 0.00196139825, - 0.0019654875454545454, - 0.00196929825, - 0.0019738144642857144, - 0.0019867068214285714, - 0.001997367392857143, - 0.002021937464285714, - 0.0020228614285714287, - 0.002026235, - 0.002037163892857143, - 0.002052771, - 0.0020573004545454544, - 0.002062296857142857, - 0.0020645065714285714, - 0.0020781774285714284, - 0.00208170775, - 0.0020819412727272725, - 0.002089998642857143, - 0.0020922425, - 0.0021167482954545453, - 0.002121533035714286, - 0.002138865392857143, - 0.002141631607142857, - 0.0021517732857142856, - 0.0021572766785714287, - 0.0021596852857142857, - 0.002168844, - 0.0021848327857142856, - 0.0021981289642857144, - 0.002219843, - 0.0022275592142857142, - 0.0022348069285714283, - 0.0022423664999999997, - 0.002243421, - 0.0022525996785714287, - 0.002252631142857143, - 0.002257126392857143, - 0.002261292142857143, - 0.002271149607142857, - 0.002288872857142857, - 0.002301888107142857, - 0.002308963714285714, - 0.0023108312142857143, - 0.0023227298214285714, - 0.0023300501071428573, - 0.0023383690714285713, - 0.00234684025, - 0.0023662166785714286, - 0.0023725962142857144, - 0.0023787318571428574, - 0.0023966170714285716, - 0.002406532392857143, - 0.0024170096785714286, - 0.0024368475714285714, - 0.0024803891785714284, - 0.002494108535714286, - 0.002502319285714286, - 0.002508446107142857, - 0.002538379392857143, - 0.00254306675 - ] - }, - "completed": true, - "percentSlower": 93.94 - }, - { - "name": "decrypt 1 KiB of data with workers", - "ops": 540, - "margin": 1.82, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 76, - "promise": true, - "details": { - "min": 0.0013982539166666667, - "max": 0.0020897399677419354, - "mean": 0.0018533148973145584, - "median": 0.001901493888888889, - "standardDeviation": 0.00015028869191328995, - "marginOfError": 0.00003378901873677949, - "relativeMarginOfError": 1.8231666289274189, - "standardErrorOfMean": 0.000017239295273867086, - "sampleVariance": 2.258669091700778e-8, - "sampleResults": [ - 0.0013982539166666667, - 0.0015572224444444444, - 0.001560245111111111, - 0.0015633978421052631, - 0.00158019025, - 0.001607340861111111, - 0.0016250962258064516, - 0.0016297603225806452, - 0.0016483294722222223, - 0.001673315, - 0.001680659193548387, - 0.0016835580967741936, - 0.0016854398888888889, - 0.0016854691935483872, - 0.0016954939677419354, - 0.0016990200322580646, - 0.001702267935483871, - 0.0017084243870967742, - 0.001717294741935484, - 0.0017516069210526317, - 0.0017647725806451612, - 0.001775495387096774, - 0.0017781848333333335, - 0.0017955736774193547, - 0.0017960329736842104, - 0.0017986313548387096, - 0.0018155641944444445, - 0.0018238112580645162, - 0.001827385387096774, - 0.0018374122258064517, - 0.001838475129032258, - 0.0018389632903225805, - 0.0018462787096774195, - 0.001848428935483871, - 0.0018574989677419354, - 0.0018849998387096775, - 0.0018918826944444443, - 0.00189778, - 0.0019052077777777779, - 0.0019115452258064516, - 0.0019157850967741936, - 0.001920309064516129, - 0.0019241178387096774, - 0.0019251024999999999, - 0.0019257479032258064, - 0.0019282085161290321, - 0.0019333352258064517, - 0.0019426898709677418, - 0.0019451529354838708, - 0.001945492935483871, - 0.0019471584516129032, - 0.0019530736774193548, - 0.0019531316666666666, - 0.0019596769032258063, - 0.0019621365483870968, - 0.001965838, - 0.001968743612903226, - 0.0019708128387096774, - 0.0019841448064516127, - 0.001985296161290323, - 0.001988539064516129, - 0.0019935436451612902, - 0.0019937309032258066, - 0.002002545129032258, - 0.0020029496111111113, - 0.0020052629032258065, - 0.002009388806451613, - 0.0020143831290322578, - 0.0020151485161290323, - 0.002018393387096774, - 0.0020234586451612904, - 0.0020265191612903223, - 0.002031778225806452, - 0.0020445552368421054, - 0.002049731064516129, - 0.0020897399677419354 - ] - }, - "completed": true, - "percentSlower": 92.94 - } - ], - "fastest": { - "name": "decrypt 1 KiB of data", - "index": 1 - }, - "slowest": { - "name": "encrypt 1 KiB of data with workers", - "index": 2 - } -} \ No newline at end of file diff --git a/benches/results/crypto1MiB.chart.html b/benches/results/crypto1MiB.chart.html deleted file mode 100644 index 788e5bb7..00000000 --- a/benches/results/crypto1MiB.chart.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - crypto1MiB - - -
- -
- - - diff --git a/benches/results/crypto1MiB.json b/benches/results/crypto1MiB.json deleted file mode 100644 index 1e509df2..00000000 --- a/benches/results/crypto1MiB.json +++ /dev/null @@ -1,325 +0,0 @@ -{ - "name": "crypto1MiB", - "date": "2022-01-13T08:00:12.420Z", - "version": "3.2.4", - "results": [ - { - "name": "encrypt 1 MiB of data", - "ops": 10.64, - "margin": 3.83, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 53, - "promise": true, - "details": { - "min": 0.079516149, - "max": 0.153430478, - "mean": 0.09402898928301884, - "median": 0.09205822, - "standardDeviation": 0.01339021044813265, - "marginOfError": 0.0036050022427523724, - "relativeMarginOfError": 3.833926398912615, - "standardErrorOfMean": 0.0018392868585471289, - "sampleVariance": 0.0001792977358452808, - "sampleResults": [ - 0.079516149, - 0.079717369, - 0.080372776, - 0.080979709, - 0.08178531, - 0.082535998, - 0.083238542, - 0.083459089, - 0.084464711, - 0.085599461, - 0.085844429, - 0.086095476, - 0.08659885, - 0.086902762, - 0.087500376, - 0.088543931, - 0.08894736, - 0.089155527, - 0.090365834, - 0.090852151, - 0.090991956, - 0.09104893, - 0.091416006, - 0.091927165, - 0.091968783, - 0.091989811, - 0.09205822, - 0.09253804, - 0.092805918, - 0.09311153, - 0.093556357, - 0.093735223, - 0.093905449, - 0.093981574, - 0.094263011, - 0.094395329, - 0.094547993, - 0.094889049, - 0.094906246, - 0.094908267, - 0.097535066, - 0.097847936, - 0.097952966, - 0.098653529, - 0.098904491, - 0.099435729, - 0.099486865, - 0.099690498, - 0.104104025, - 0.105214737, - 0.117318884, - 0.148540561, - 0.153430478 - ] - }, - "completed": true, - "percentSlower": 4.57 - }, - { - "name": "decrypt 1 MiB of data", - "ops": 11.12, - "margin": 4.08, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 55, - "promise": true, - "details": { - "min": 0.076572172, - "max": 0.172927156, - "mean": 0.0899609427090909, - "median": 0.087617746, - "standardDeviation": 0.013895178844624467, - "marginOfError": 0.003672306045051603, - "relativeMarginOfError": 4.082111563600258, - "standardErrorOfMean": 0.0018736255331895932, - "sampleVariance": 0.00019307599512409932, - "sampleResults": [ - 0.076572172, - 0.07742711, - 0.077761857, - 0.078116958, - 0.07816565, - 0.078419628, - 0.079466387, - 0.080742243, - 0.081524468, - 0.081786606, - 0.082676176, - 0.082771937, - 0.082997981, - 0.084010935, - 0.084165765, - 0.084293503, - 0.085030485, - 0.08646004, - 0.086544847, - 0.086728188, - 0.08684411, - 0.086911597, - 0.087153253, - 0.087166507, - 0.087452047, - 0.08756268, - 0.087565315, - 0.087617746, - 0.088146304, - 0.088364843, - 0.089334507, - 0.089516774, - 0.089555257, - 0.089683071, - 0.089854036, - 0.09013156, - 0.090362786, - 0.09040772, - 0.090643843, - 0.090817098, - 0.091072127, - 0.091431819, - 0.091950369, - 0.092031674, - 0.092617213, - 0.093484328, - 0.093723492, - 0.093909701, - 0.094718315, - 0.095572115, - 0.097606096, - 0.102185046, - 0.108143259, - 0.125725149, - 0.172927156 - ] - }, - "completed": true, - "percentSlower": 0.27 - }, - { - "name": "encrypt 1 MiB of data with workers", - "ops": 5.22, - "margin": 2.46, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 30, - "promise": true, - "details": { - "min": 0.175712203, - "max": 0.22946711, - "mean": 0.19139777176666667, - "median": 0.189479202, - "standardDeviation": 0.012593154733668632, - "marginOfError": 0.004701833268955597, - "relativeMarginOfError": 2.456576806279443, - "standardErrorOfMean": 0.002299184972594424, - "sampleVariance": 0.00015858754614612064, - "sampleResults": [ - 0.175712203, - 0.176392428, - 0.176971893, - 0.179721688, - 0.179978207, - 0.180570129, - 0.180752788, - 0.180902122, - 0.18415928, - 0.185481621, - 0.185593796, - 0.186622884, - 0.187324447, - 0.18764031, - 0.189267143, - 0.189691261, - 0.18986752, - 0.190300549, - 0.191934308, - 0.192320768, - 0.193282673, - 0.194716911, - 0.195688899, - 0.19923453, - 0.201526775, - 0.202048641, - 0.205606552, - 0.207894919, - 0.221260798, - 0.22946711 - ] - }, - "completed": true, - "percentSlower": 53.18 - }, - { - "name": "decrypt 1 MiB of data with workers", - "ops": 11.15, - "margin": 1.78, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 56, - "promise": true, - "details": { - "min": 0.080256876, - "max": 0.116379852, - "mean": 0.08969939658928573, - "median": 0.08939782299999999, - "standardDeviation": 0.006092875632131536, - "marginOfError": 0.0015958217180961935, - "relativeMarginOfError": 1.7790774283612167, - "standardErrorOfMean": 0.000814194754130711, - "sampleVariance": 0.00003712313346862226, - "sampleResults": [ - 0.080256876, - 0.080489764, - 0.080586844, - 0.081255377, - 0.083644336, - 0.083690563, - 0.084200285, - 0.084365588, - 0.085082693, - 0.085320903, - 0.08539136, - 0.085512858, - 0.086226389, - 0.086290409, - 0.086298645, - 0.086728271, - 0.086883088, - 0.087337264, - 0.087953197, - 0.087979266, - 0.088074401, - 0.088291877, - 0.088404679, - 0.088426728, - 0.088628916, - 0.088742328, - 0.089096341, - 0.089124448, - 0.089671198, - 0.089692927, - 0.089748282, - 0.08989648, - 0.090115255, - 0.090151972, - 0.090196557, - 0.090218909, - 0.090328408, - 0.090510836, - 0.091137167, - 0.09150918, - 0.091613976, - 0.091694789, - 0.091824248, - 0.091895447, - 0.092164912, - 0.092494879, - 0.092497892, - 0.092691346, - 0.092708516, - 0.093108482, - 0.093871942, - 0.094635926, - 0.095458059, - 0.10356028, - 0.109104798, - 0.116379852 - ] - }, - "completed": true, - "percentSlower": 0 - } - ], - "fastest": { - "name": "decrypt 1 MiB of data with workers", - "index": 3 - }, - "slowest": { - "name": "encrypt 1 MiB of data with workers", - "index": 2 - } -} \ No newline at end of file diff --git a/benches/results/crypto24KiB.chart.html b/benches/results/crypto24KiB.chart.html deleted file mode 100644 index eae2816c..00000000 --- a/benches/results/crypto24KiB.chart.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - crypto24KiB - - -
- -
- - - diff --git a/benches/results/crypto24KiB.json b/benches/results/crypto24KiB.json deleted file mode 100644 index b7b88251..00000000 --- a/benches/results/crypto24KiB.json +++ /dev/null @@ -1,454 +0,0 @@ -{ - "name": "crypto24KiB", - "date": "2022-01-13T07:58:59.200Z", - "version": "3.2.4", - "results": [ - { - "name": "encrypt 24 KiB of data", - "ops": 613, - "margin": 2.59, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 86, - "promise": true, - "details": { - "min": 0.0015837446875, - "max": 0.0034294353125, - "mean": 0.0016324939529140103, - "median": 0.00159996528125, - "standardDeviation": 0.00020024382193744442, - "marginOfError": 0.00004232197940728549, - "relativeMarginOfError": 2.5924738852318887, - "standardErrorOfMean": 0.000021592846636370148, - "sampleVariance": 4.0097588224114946e-8, - "sampleResults": [ - 0.0015837446875, - 0.001584012125, - 0.00158417990625, - 0.001584817875, - 0.00158536053125, - 0.001585571125, - 0.001585574375, - 0.00158656559375, - 0.0015867695, - 0.0015871186875, - 0.00158730309375, - 0.00158782890625, - 0.00158867184375, - 0.00158904034375, - 0.00158938884375, - 0.0015896390625, - 0.00158982815625, - 0.0015900790625, - 0.00159044553125, - 0.00159058221875, - 0.00159117078125, - 0.0015917326875, - 0.001592536, - 0.00159277159375, - 0.0015935410625, - 0.00159429453125, - 0.00159447621875, - 0.00159520240625, - 0.00159552265625, - 0.0015962470625, - 0.00159738253125, - 0.0015974946875, - 0.0015975959375, - 0.00159763659375, - 0.0015981338125, - 0.00159842984375, - 0.0015989558125, - 0.0015990459375, - 0.001599179125, - 0.00159925153125, - 0.001599389625, - 0.00159978034375, - 0.0015999023125, - 0.00160002825, - 0.0016000820625, - 0.00160059471875, - 0.0016011614375, - 0.0016011665, - 0.0016019620625, - 0.0016028101875, - 0.00160293375, - 0.001603564375, - 0.00160426484375, - 0.00160506171875, - 0.00160635503125, - 0.0016072511875, - 0.00160785003125, - 0.0016083999375, - 0.0016087876875, - 0.00160932984375, - 0.00161027178125, - 0.001610395125, - 0.0016104188125, - 0.00161112028125, - 0.00161301375, - 0.0016135943125, - 0.0016173099032258064, - 0.00161871634375, - 0.001618836806451613, - 0.001624385193548387, - 0.0016254755625, - 0.00162730996875, - 0.00162769359375, - 0.0016292674375, - 0.00163293540625, - 0.00163660934375, - 0.0016389625, - 0.00165312259375, - 0.00165391621875, - 0.0016579041875, - 0.00165939640625, - 0.0016806606875, - 0.0016916225161290324, - 0.0017910991875, - 0.00187320853125, - 0.0034294353125 - ] - }, - "completed": true, - "percentSlower": 11.67 - }, - { - "name": "decrypt 24 KiB of data", - "ops": 694, - "margin": 0.34, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 87, - "promise": true, - "details": { - "min": 0.0014203073333333332, - "max": 0.0015519961111111111, - "mean": 0.0014399350893997442, - "median": 0.0014344510555555556, - "standardDeviation": 0.000022986390705798728, - "marginOfError": 0.0000048302235308476965, - "relativeMarginOfError": 0.33544731053545185, - "standardErrorOfMean": 0.00000246439976063658, - "sampleVariance": 5.283741576796301e-10, - "sampleResults": [ - 0.0014203073333333332, - 0.0014208882777777777, - 0.0014211392777777776, - 0.0014213348055555554, - 0.001422136, - 0.0014222254722222223, - 0.0014226480833333334, - 0.0014229460555555554, - 0.001424549861111111, - 0.0014247690833333335, - 0.001425051111111111, - 0.00142516625, - 0.0014251758611111111, - 0.0014252206111111112, - 0.0014255671944444445, - 0.0014269574166666668, - 0.001427222, - 0.0014275459444444444, - 0.0014279043333333332, - 0.0014280821944444445, - 0.0014281260277777777, - 0.0014283286666666667, - 0.0014287613333333333, - 0.0014289323055555556, - 0.0014289686666666666, - 0.0014299851666666667, - 0.0014304079166666667, - 0.0014305046944444446, - 0.0014307833333333333, - 0.0014308358888888888, - 0.0014308766666666665, - 0.0014309911388888888, - 0.001431086861111111, - 0.001431227361111111, - 0.0014316213888888889, - 0.0014316889166666666, - 0.0014320059166666667, - 0.0014325041111111112, - 0.0014328408333333332, - 0.0014335352777777777, - 0.0014336642500000002, - 0.0014340055555555557, - 0.0014342459722222222, - 0.0014344510555555556, - 0.0014347509444444444, - 0.0014351802777777779, - 0.0014354226666666667, - 0.0014356384722222222, - 0.0014361338611111113, - 0.0014363955, - 0.001436435861111111, - 0.001436504111111111, - 0.0014365440555555555, - 0.0014365914166666665, - 0.0014372173055555554, - 0.0014377206111111111, - 0.0014384108611111112, - 0.0014385614166666668, - 0.0014389569722222221, - 0.00143897225, - 0.0014390382777777777, - 0.0014391266111111111, - 0.0014401573333333332, - 0.0014413950833333333, - 0.0014420300277777779, - 0.0014421205833333333, - 0.0014430035, - 0.0014430257777777776, - 0.0014433495833333333, - 0.0014437110833333334, - 0.001444928, - 0.0014452378055555557, - 0.0014466979722222223, - 0.0014488940555555554, - 0.0014495628888888889, - 0.0014510521111111112, - 0.0014518604444444445, - 0.0014549739444444443, - 0.0014587972222222221, - 0.0014601025833333335, - 0.0014606050833333333, - 0.0014659822222222222, - 0.0014662038055555555, - 0.0014996653611111111, - 0.0015348648055555556, - 0.0015393174444444445, - 0.0015519961111111111 - ] - }, - "completed": true, - "percentSlower": 0 - }, - { - "name": "encrypt 24 KiB of data with workers", - "ops": 252, - "margin": 1.79, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 76, - "promise": true, - "details": { - "min": 0.0034239436875, - "max": 0.004877662076923078, - "mean": 0.003964406257224794, - "median": 0.00403551928125, - "standardDeviation": 0.00031545010085840073, - "marginOfError": 0.00007092183206021327, - "relativeMarginOfError": 1.7889647896444583, - "standardErrorOfMean": 0.00003618460819398636, - "sampleVariance": 9.950876613157519e-8, - "sampleResults": [ - 0.0034239436875, - 0.003447183, - 0.003450921, - 0.0034570656875, - 0.003471837933333333, - 0.0034778653125, - 0.003478533125, - 0.003487964, - 0.0034957593125, - 0.0034973448125, - 0.003506803875, - 0.0035343405, - 0.0035363286875, - 0.003540143375, - 0.0035750520625, - 0.0035821328125, - 0.0035995594285714284, - 0.00366149725, - 0.00368327475, - 0.00375945075, - 0.0037677621999999997, - 0.003772817, - 0.0037869235, - 0.0037952526, - 0.0038118500666666664, - 0.0038431914375, - 0.00389418925, - 0.00391136925, - 0.003922808285714286, - 0.003928118625, - 0.0039581037857142854, - 0.003968147857142857, - 0.003972005642857142, - 0.003980812928571429, - 0.0039945101875, - 0.003997166142857143, - 0.004018143066666666, - 0.004019380125, - 0.0040516584375, - 0.004053620266666667, - 0.0040548695, - 0.0040639196428571426, - 0.004070167, - 0.0040776789375, - 0.0040848572857142855, - 0.004103013769230769, - 0.0041081256875, - 0.0041106424375, - 0.0041326133125, - 0.004134070333333333, - 0.0041392146875, - 0.004144401933333333, - 0.0041535275625, - 0.004154196066666667, - 0.0041548616875, - 0.0041886805, - 0.004191149875, - 0.004195964625, - 0.004203342875, - 0.004203477, - 0.0042299466875, - 0.0042355909999999995, - 0.004240677615384616, - 0.0042439929375, - 0.004246735428571428, - 0.004260190538461538, - 0.004260464375, - 0.0042615560000000005, - 0.0042809280625, - 0.0043194874375, - 0.004332153, - 0.004333537625, - 0.004339254692307692, - 0.004390570875, - 0.004658520461538461, - 0.004877662076923078 - ] - }, - "completed": true, - "percentSlower": 63.69 - }, - { - "name": "decrypt 24 KiB of data with workers", - "ops": 289, - "margin": 1.74, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 74, - "promise": true, - "details": { - "min": 0.002832847611111111, - "max": 0.0038679267222222224, - "mean": 0.003464216323372688, - "median": 0.0035779067847222226, - "standardDeviation": 0.0002652916079239132, - "marginOfError": 0.00006044546507942378, - "relativeMarginOfError": 1.7448524987196918, - "standardErrorOfMean": 0.00003083952299970601, - "sampleVariance": 7.03796372348553e-8, - "sampleResults": [ - 0.002832847611111111, - 0.002866938166666667, - 0.0029747417777777774, - 0.002977824277777778, - 0.0029913887777777777, - 0.0029929003684210525, - 0.003011941222222222, - 0.003042069, - 0.003051262052631579, - 0.003102991222222222, - 0.0031419236315789476, - 0.003172806625, - 0.0031733576842105263, - 0.003220349823529412, - 0.003221772823529412, - 0.003222223411764706, - 0.003225437315789474, - 0.0032544071176470587, - 0.0032707396470588236, - 0.0032820058125, - 0.0032987748421052635, - 0.003302317315789474, - 0.0033047662631578946, - 0.0033075342352941175, - 0.003308300294117647, - 0.0033122965789473685, - 0.0033595744117647063, - 0.0033979197647058825, - 0.0034045883684210524, - 0.0034224951764705884, - 0.003463840882352941, - 0.003549311611111111, - 0.003553415166666667, - 0.0035537983157894735, - 0.0035588095294117644, - 0.0035594813529411765, - 0.003564550125, - 0.0035912634444444447, - 0.0035916108947368418, - 0.003591621176470588, - 0.0035924341764705884, - 0.0035927256842105265, - 0.0035930840000000003, - 0.0035940851578947367, - 0.003595321105263158, - 0.0035965265294117645, - 0.0036149515, - 0.0036175527647058824, - 0.0036249395714285713, - 0.0036254037894736845, - 0.003634361, - 0.003639987105263158, - 0.003640012117647059, - 0.003648794, - 0.0036535275, - 0.0036545763529411764, - 0.0036549265000000004, - 0.003666542470588235, - 0.0036667525294117645, - 0.0036689657058823527, - 0.003674846352941176, - 0.0036949754705882347, - 0.0037256122142857143, - 0.0037337185714285716, - 0.0037382961875, - 0.0037605437894736846, - 0.0037699783888888888, - 0.0037730032941176474, - 0.0037827641176470584, - 0.0037834534736842103, - 0.00379750725, - 0.003807382785714286, - 0.0038403316315789473, - 0.0038679267222222224 - ] - }, - "completed": true, - "percentSlower": 58.36 - } - ], - "fastest": { - "name": "decrypt 24 KiB of data", - "index": 1 - }, - "slowest": { - "name": "encrypt 24 KiB of data with workers", - "index": 2 - } -} \ No newline at end of file diff --git a/benches/results/crypto32KiB.chart.html b/benches/results/crypto32KiB.chart.html deleted file mode 100644 index 04b34dc5..00000000 --- a/benches/results/crypto32KiB.chart.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - crypto32KiB - - -
- -
- - - diff --git a/benches/results/crypto32KiB.json b/benches/results/crypto32KiB.json deleted file mode 100644 index 5832cdbe..00000000 --- a/benches/results/crypto32KiB.json +++ /dev/null @@ -1,455 +0,0 @@ -{ - "name": "crypto32KiB", - "date": "2022-01-13T07:59:23.203Z", - "version": "3.2.4", - "results": [ - { - "name": "encrypt 32 KiB of data", - "ops": 458, - "margin": 4.48, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 83, - "promise": true, - "details": { - "min": 0.00202727984, - "max": 0.00412511028, - "mean": 0.0021843823702881087, - "median": 0.00204820784, - "standardDeviation": 0.00045485773180698954, - "marginOfError": 0.00009785715977147115, - "relativeMarginOfError": 4.479854859777334, - "standardErrorOfMean": 0.00004992712233238324, - "sampleVariance": 2.0689555618459924e-7, - "sampleResults": [ - 0.00202727984, - 0.00203112436, - 0.00203269192, - 0.00203461748, - 0.00203647292, - 0.00203695132, - 0.0020372018, - 0.0020372604799999998, - 0.00203780108, - 0.00203782344, - 0.0020382166400000003, - 0.00203838696, - 0.0020384196399999997, - 0.00203844004, - 0.00203880984, - 0.00203907572, - 0.00203944596, - 0.00203954152, - 0.00203976988, - 0.00204039124, - 0.0020410310400000003, - 0.00204178928, - 0.00204258968, - 0.00204264644, - 0.00204300868, - 0.00204317552, - 0.00204339324, - 0.0020438632400000003, - 0.0020445687200000002, - 0.00204462544, - 0.00204552636, - 0.00204578684, - 0.0020467328800000003, - 0.0020471703999999998, - 0.0020472614, - 0.00204750236, - 0.00204754452, - 0.00204779032, - 0.00204787, - 0.0020478842, - 0.00204807988, - 0.00204820784, - 0.0020483086, - 0.00204911572, - 0.0020498034, - 0.00204995856, - 0.00205056104, - 0.00205114408, - 0.0020512168, - 0.00205163504, - 0.00205168268, - 0.0020520388000000002, - 0.00205222392, - 0.00205251424, - 0.00205253016, - 0.0020530108, - 0.00205346124, - 0.00205526336, - 0.00205546972, - 0.0020561528, - 0.002060278, - 0.00206225956, - 0.00206312792, - 0.00207229404, - 0.00207515164, - 0.00207706096, - 0.00208913896, - 0.00210433352, - 0.00211014976, - 0.00211534696, - 0.0021395414800000003, - 0.00214322156, - 0.0021810504, - 0.00218578464, - 0.00218985272, - 0.0021918041739130436, - 0.00252522088, - 0.0029599099600000002, - 0.0029779162399999996, - 0.00400481308, - 0.0040551974, - 0.0041213112800000005, - 0.00412511028 - ] - }, - "completed": true, - "percentSlower": 11.24 - }, - { - "name": "decrypt 32 KiB of data", - "ops": 516, - "margin": 2.61, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 86, - "promise": true, - "details": { - "min": 0.001859713037037037, - "max": 0.0035752741111111114, - "mean": 0.0019366811261843234, - "median": 0.0018764281296296296, - "standardDeviation": 0.00023936206495492335, - "marginOfError": 0.00005058970751703025, - "relativeMarginOfError": 2.6121857043499364, - "standardErrorOfMean": 0.000025811075263790945, - "sampleVariance": 5.7294198139484946e-8, - "sampleResults": [ - 0.001859713037037037, - 0.0018631331851851852, - 0.0018632094074074073, - 0.001863262888888889, - 0.001863384111111111, - 0.0018635250740740741, - 0.0018642620740740741, - 0.0018644791851851852, - 0.0018649637037037037, - 0.0018652190740740741, - 0.001865431962962963, - 0.0018654367037037036, - 0.0018656547037037036, - 0.001866506, - 0.0018671972592592594, - 0.0018672113333333333, - 0.001867227962962963, - 0.0018677705555555557, - 0.0018681935555555555, - 0.0018683466666666666, - 0.0018684342222222222, - 0.0018684882592592594, - 0.0018685139629629629, - 0.0018687723333333335, - 0.001869799074074074, - 0.0018698812962962964, - 0.0018700222592592593, - 0.0018714144814814815, - 0.001871433074074074, - 0.0018718319629629629, - 0.0018723202222222222, - 0.001872812037037037, - 0.0018733803333333332, - 0.0018736845555555554, - 0.0018742135925925926, - 0.0018743070740740739, - 0.0018743172592592592, - 0.0018743197407407406, - 0.0018745800370370369, - 0.0018755141851851853, - 0.0018755505925925925, - 0.0018758129259259257, - 0.0018761419259259258, - 0.0018767143333333334, - 0.0018770683333333333, - 0.001877989037037037, - 0.0018796041851851851, - 0.0018796788518518517, - 0.0018798009259259258, - 0.001879919962962963, - 0.001880016814814815, - 0.0018800625555555556, - 0.0018800909259259258, - 0.0018812853703703706, - 0.001881553888888889, - 0.0018816314444444443, - 0.0018822185925925926, - 0.0018837084074074073, - 0.0018841670370370372, - 0.0018851378148148148, - 0.0018862705925925926, - 0.0018875204444444445, - 0.0018919628518518517, - 0.0018927925185185186, - 0.0018979297777777778, - 0.0018979957407407406, - 0.001899312111111111, - 0.001903025111111111, - 0.0019069348148148147, - 0.0019081591111111112, - 0.0019107081111111113, - 0.0019122966296296296, - 0.0019222151481481482, - 0.0019229377407407407, - 0.0019277548148148149, - 0.0019380471851851851, - 0.0019397171851851852, - 0.0019659425925925927, - 0.0020130603333333333, - 0.002014829962962963, - 0.002048857148148148, - 0.002095463185185185, - 0.0023495585555555554, - 0.002762078851851852, - 0.002943609888888889, - 0.0035752741111111114 - ] - }, - "completed": true, - "percentSlower": 0 - }, - { - "name": "encrypt 32 KiB of data with workers", - "ops": 218, - "margin": 1.99, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 78, - "promise": true, - "details": { - "min": 0.0038384666, - "max": 0.005299041307692307, - "mean": 0.0045782603152038125, - "median": 0.004676994846153847, - "standardDeviation": 0.00041016003278491277, - "marginOfError": 0.00009102529794748483, - "relativeMarginOfError": 1.9882071284850613, - "standardErrorOfMean": 0.000046441478544635116, - "sampleVariance": 1.682312524941207e-7, - "sampleResults": [ - 0.0038384666, - 0.0038555977692307695, - 0.0039029463846153847, - 0.003919711923076923, - 0.003924507461538462, - 0.0039422176923076925, - 0.003978673846153846, - 0.004006796, - 0.0040096319230769235, - 0.0040221165384615384, - 0.004034691384615385, - 0.004039322, - 0.004054397538461539, - 0.004073081076923077, - 0.0040872292307692305, - 0.004104283, - 0.004121295384615384, - 0.004168992769230769, - 0.004175323153846154, - 0.004178693538461538, - 0.004193082666666666, - 0.0042360651538461535, - 0.004259844, - 0.004266326769230769, - 0.004273652384615385, - 0.004340516466666666, - 0.004352726538461539, - 0.004381172846153846, - 0.004390835384615385, - 0.004404999076923077, - 0.004443944692307692, - 0.004548312, - 0.004569036, - 0.004602933230769231, - 0.0046182328461538465, - 0.004627667307692308, - 0.0046568579230769225, - 0.004659226769230769, - 0.0046737100769230775, - 0.0046802796153846155, - 0.0046845184615384615, - 0.00469668676923077, - 0.004700946230769231, - 0.004719855923076923, - 0.004740816923076923, - 0.004748013384615384, - 0.004765152461538461, - 0.004786138384615384, - 0.004798760076923077, - 0.004803283538461539, - 0.004812166076923077, - 0.004876177333333333, - 0.004879101583333333, - 0.004891101615384615, - 0.004891690416666666, - 0.0048925105384615385, - 0.004895362153846154, - 0.00489650075, - 0.004896680769230769, - 0.004908307846153846, - 0.004926755307692308, - 0.004940227916666667, - 0.004943204307692308, - 0.004959655846153847, - 0.004975769166666667, - 0.004999966692307692, - 0.00500471076923077, - 0.005017391153846154, - 0.00503473775, - 0.005055870692307693, - 0.005068802307692308, - 0.005077186230769231, - 0.0050979632499999995, - 0.005195158, - 0.005198452916666666, - 0.005200690692307692, - 0.005207552076923077, - 0.005299041307692307 - ] - }, - "completed": true, - "percentSlower": 57.75 - }, - { - "name": "decrypt 32 KiB of data with workers", - "ops": 260, - "margin": 1.92, - "options": { - "delay": 0.005, - "initCount": 1, - "minTime": 0.05, - "maxTime": 5, - "minSamples": 5 - }, - "samples": 77, - "promise": true, - "details": { - "min": 0.0031386921875, - "max": 0.0044617295, - "mean": 0.003839017137987013, - "median": 0.0039049935, - "standardDeviation": 0.00032972528624749425, - "marginOfError": 0.00007364834004040382, - "relativeMarginOfError": 1.91841654760159, - "standardErrorOfMean": 0.00003757568369408358, - "sampleVariance": 1.0871876439099202e-7, - "sampleResults": [ - 0.0031386921875, - 0.0032448499375, - 0.003269629, - 0.0032967975, - 0.003298905125, - 0.0033469120625, - 0.003364236375, - 0.0033733685, - 0.003389530625, - 0.003396679375, - 0.003399468375, - 0.0034145444375, - 0.003426336875, - 0.0034320054375, - 0.0034413173125, - 0.0034656293125, - 0.003473989, - 0.0034741738125, - 0.003475884875, - 0.0035573693125, - 0.00362132025, - 0.0036236915, - 0.0036402453125, - 0.003651059625, - 0.0036560433125, - 0.0037002796875, - 0.0037027301875, - 0.003703977125, - 0.003727873, - 0.003750061, - 0.003758801125, - 0.003760930625, - 0.003817700125, - 0.00382503675, - 0.0038286139375, - 0.0038655010625, - 0.003868475125, - 0.0038884443125, - 0.0039049935, - 0.0039059345625, - 0.0039109375, - 0.003977131125, - 0.003979017125, - 0.0039813074375, - 0.0039852525625, - 0.0039994514375, - 0.0040066945625, - 0.0040182960625, - 0.004020592125, - 0.00402151025, - 0.0040217395625, - 0.004023748875, - 0.0040355183125, - 0.004065176875, - 0.0040687585, - 0.004095875375, - 0.0041021716875, - 0.0041156335, - 0.0041225203125, - 0.004128726625, - 0.004138754375, - 0.0041453348125, - 0.0041625851875, - 0.0041713205, - 0.0041808435625, - 0.0041829045625, - 0.004193285875, - 0.004227759875, - 0.004229371875, - 0.004231315375, - 0.0042351325, - 0.0042606665, - 0.0042775274375, - 0.00428588275, - 0.0042901295625, - 0.004367684, - 0.0044617295 - ] - }, - "completed": true, - "percentSlower": 49.61 - } - ], - "fastest": { - "name": "decrypt 32 KiB of data", - "index": 1 - }, - "slowest": { - "name": "encrypt 32 KiB of data with workers", - "index": 2 - } -} \ No newline at end of file diff --git a/benches/results/crypto_100KiB.chart.html b/benches/results/crypto_100KiB.chart.html new file mode 100644 index 00000000..fafb0a09 --- /dev/null +++ b/benches/results/crypto_100KiB.chart.html @@ -0,0 +1,116 @@ + + + + + + + + crypto_100KiB + + + +
+ +
+ + + \ No newline at end of file diff --git a/benches/results/crypto_100KiB.json b/benches/results/crypto_100KiB.json new file mode 100644 index 00000000..d7c69e12 --- /dev/null +++ b/benches/results/crypto_100KiB.json @@ -0,0 +1,459 @@ +{ + "name": "crypto_100KiB", + "date": "2022-07-28T06:04:55.568Z", + "version": "3.5.3", + "results": [ + { + "name": "encrypt 100 KiB of data", + "ops": 160, + "margin": 0.4, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 83, + "promise": true, + "details": { + "min": 0.006133948222222223, + "max": 0.006805248888888889, + "mean": 0.0062668374457831326, + "median": 0.006259703777777778, + "standardDeviation": 0.0001178382508014599, + "marginOfError": 0.00002535147965949549, + "relativeMarginOfError": 0.40453386383197387, + "standardErrorOfMean": 0.000012934428397701782, + "sampleVariance": 1.3885853351947764e-8, + "sampleResults": [ + 0.006133948222222223, + 0.006136769111111111, + 0.006138473444444444, + 0.006138996666666667, + 0.006139165777777778, + 0.006143040888888889, + 0.006154294444444444, + 0.0061595232222222225, + 0.006160792333333333, + 0.0061608290000000005, + 0.006163907, + 0.006166253777777778, + 0.006166541, + 0.006168652777777778, + 0.0061713712222222225, + 0.006171618333333333, + 0.006171896666666666, + 0.006176042222222223, + 0.006176641111111111, + 0.0061777755555555555, + 0.006180482888888889, + 0.006182140555555556, + 0.006185084888888889, + 0.006185554777777778, + 0.006188573777777778, + 0.006191389, + 0.006193750222222222, + 0.006195226333333334, + 0.006204284555555556, + 0.0062269552222222226, + 0.006239416555555555, + 0.0062421517777777775, + 0.006245008222222222, + 0.006245045, + 0.0062458186666666665, + 0.006252095, + 0.006253820555555556, + 0.006255375555555556, + 0.0062570832222222225, + 0.0062575163333333335, + 0.0062589667777777774, + 0.006259703777777778, + 0.006264318111111111, + 0.006264396, + 0.006267156777777778, + 0.006268487111111111, + 0.006270783666666667, + 0.006272665, + 0.006276214, + 0.0062762784444444445, + 0.006276487777777778, + 0.006276603555555555, + 0.006276979777777778, + 0.006277985111111111, + 0.0062800166666666666, + 0.006281576222222222, + 0.006283290666666667, + 0.0062846943333333335, + 0.006286120444444444, + 0.006286815111111111, + 0.006287319333333334, + 0.006288971333333334, + 0.006289153888888888, + 0.006291921333333334, + 0.006295981333333333, + 0.006297130111111111, + 0.006298028555555555, + 0.006299258666666667, + 0.006303589, + 0.006304496333333334, + 0.006317045555555556, + 0.006326898666666667, + 0.006371569777777778, + 0.0063720128888888885, + 0.006385731111111111, + 0.006390142666666667, + 0.006395085333333333, + 0.006404932888888889, + 0.006424793777777778, + 0.006531821777777777, + 0.006686158111111111, + 0.006687371444444445, + 0.006805248888888889 + ] + }, + "completed": true, + "percentSlower": 0 + }, + { + "name": "decrypt 100 KiB of data", + "ops": 156, + "margin": 0.37, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 82, + "promise": true, + "details": { + "min": 0.006281665333333334, + "max": 0.006871930555555556, + "mean": 0.0064171121056910575, + "median": 0.006421882222222222, + "standardDeviation": 0.00011063723489205176, + "marginOfError": 0.00002394696383206785, + "relativeMarginOfError": 0.3731735309849165, + "standardErrorOfMean": 0.000012217838689830535, + "sampleVariance": 1.2240597744559036e-8, + "sampleResults": [ + 0.006281665333333334, + 0.006282380111111111, + 0.0062862295555555555, + 0.0062877735555555555, + 0.006288811111111111, + 0.006291084222222222, + 0.006291978222222222, + 0.006296867444444444, + 0.0063025013333333334, + 0.006305394555555555, + 0.006309251888888889, + 0.006309471333333334, + 0.006313097, + 0.006313414222222222, + 0.006313921888888889, + 0.006318621888888889, + 0.006320799333333333, + 0.006321205555555555, + 0.006323129222222222, + 0.0063272515555555554, + 0.006328138666666667, + 0.0063342615555555554, + 0.006335275555555556, + 0.006335435888888889, + 0.0063409151111111116, + 0.006342413444444445, + 0.006346049222222223, + 0.006346217444444444, + 0.0063508405555555555, + 0.0063557810000000005, + 0.0063638217777777775, + 0.006368853444444444, + 0.006373303111111111, + 0.006380335333333333, + 0.006383792888888889, + 0.00638988, + 0.0063913293333333334, + 0.006405650888888888, + 0.006410366444444444, + 0.006413906555555555, + 0.0064209988888888885, + 0.006422765555555555, + 0.006424752666666667, + 0.006425594222222222, + 0.006427606888888889, + 0.006427869555555556, + 0.006432399333333333, + 0.006433778444444444, + 0.0064339777777777775, + 0.006434129222222222, + 0.006434357444444445, + 0.006434517777777778, + 0.006434931888888888, + 0.006437327444444444, + 0.006442247888888889, + 0.006445497333333333, + 0.006446577222222223, + 0.006446910111111111, + 0.006447645888888889, + 0.006448245888888889, + 0.006454959666666666, + 0.00646042, + 0.006468616666666666, + 0.006468785888888889, + 0.006469235555555556, + 0.006470839666666667, + 0.006471410777777778, + 0.006472569666666667, + 0.006483466888888889, + 0.0064874523333333335, + 0.0064980233333333335, + 0.006527050444444444, + 0.006535464222222222, + 0.006557440111111111, + 0.0065704303333333335, + 0.0065775738888888885, + 0.006585338555555555, + 0.006614665111111111, + 0.006622759222222222, + 0.006631526888888888, + 0.00681968388888889, + 0.006871930555555556 + ] + }, + "completed": true, + "percentSlower": 2.5 + }, + { + "name": "encrypt 100 KiB of data with workers", + "ops": 121, + "margin": 1.23, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 82, + "promise": true, + "details": { + "min": 0.007953577285714285, + "max": 0.011132764, + "mean": 0.008292799707026718, + "median": 0.008140125785714287, + "standardDeviation": 0.00047117445429664293, + "marginOfError": 0.00010198372750950417, + "relativeMarginOfError": 1.229786454664889, + "standardErrorOfMean": 0.00005203251403546131, + "sampleVariance": 2.2200536638173926e-7, + "sampleResults": [ + 0.007953577285714285, + 0.007968205, + 0.007972840857142857, + 0.007981085, + 0.00798426542857143, + 0.008003809428571429, + 0.008010708285714286, + 0.008020737142857143, + 0.008025074, + 0.008029374857142857, + 0.008030196571428571, + 0.008039222142857143, + 0.008041049857142856, + 0.008042605714285713, + 0.008043547428571428, + 0.008044276, + 0.008051678571428572, + 0.008052568714285713, + 0.008054966142857143, + 0.008057260571428571, + 0.008059623571428571, + 0.008061305428571428, + 0.008070764714285713, + 0.008071238428571428, + 0.008086804857142856, + 0.008090088428571429, + 0.008091980428571429, + 0.008097903142857143, + 0.008099501857142857, + 0.008108699142857143, + 0.008110020285714286, + 0.008111952571428572, + 0.008115381857142858, + 0.008115809714285714, + 0.008122146142857143, + 0.008127431857142858, + 0.008129198, + 0.008133330142857142, + 0.008134146, + 0.008135731857142857, + 0.008139238428571428, + 0.008141013142857144, + 0.008142670714285715, + 0.008144099, + 0.008144283714285714, + 0.008147511285714285, + 0.008150090285714286, + 0.008151753571428572, + 0.008156234857142857, + 0.008158629428571429, + 0.008158872714285715, + 0.00816424142857143, + 0.008165337714285714, + 0.008172614428571428, + 0.008176652142857144, + 0.008177094285714285, + 0.008182989714285714, + 0.008189642285714286, + 0.008206398285714286, + 0.008222537428571429, + 0.008233818714285714, + 0.008242868571428572, + 0.008275826714285714, + 0.008332571142857143, + 0.008337044, + 0.008344689714285715, + 0.008495520857142858, + 0.008568229857142857, + 0.008584317285714285, + 0.008631353285714285, + 0.008637197285714287, + 0.008658886857142858, + 0.008739775714285714, + 0.008755768571428572, + 0.008829904714285715, + 0.008993345142857143, + 0.008993793142857143, + 0.009004500428571429, + 0.009048107285714285, + 0.009538809571428572, + 0.009858470833333332, + 0.011132764 + ] + }, + "completed": true, + "percentSlower": 24.38 + }, + { + "name": "decrypt 100 KiB of data with workers", + "ops": 137, + "margin": 0.78, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 81, + "promise": true, + "details": { + "min": 0.007004328875, + "max": 0.00798515125, + "mean": 0.007274015412257497, + "median": 0.0071640935, + "standardDeviation": 0.00026096277874558885, + "marginOfError": 0.000056831894037928235, + "relativeMarginOfError": 0.7813001597736566, + "standardErrorOfMean": 0.000028995864305065427, + "sampleVariance": 6.810157189061915e-8, + "sampleResults": [ + 0.007004328875, + 0.007025003, + 0.007033477625, + 0.00710160025, + 0.0071099035, + 0.007111944875, + 0.00711253475, + 0.007116552375, + 0.007117765875, + 0.007121211125, + 0.007121713375, + 0.007124946875, + 0.007125320125, + 0.007129538125, + 0.00713085825, + 0.0071330335, + 0.00713570725, + 0.007136796875, + 0.007142068125, + 0.007142891, + 0.007145537125, + 0.0071459305, + 0.007146852125, + 0.007146968625, + 0.007149086375, + 0.007149200375, + 0.00714983025, + 0.007151511, + 0.007151718875, + 0.007152177125, + 0.0071534835, + 0.007153512375, + 0.007156242375, + 0.007156389714285714, + 0.007156458285714286, + 0.007157142571428571, + 0.007157691375, + 0.007160748375, + 0.007161990875, + 0.00716329575, + 0.0071640935, + 0.007165199375, + 0.007166049625, + 0.007166262625, + 0.007166610428571428, + 0.007166660875, + 0.007171015375, + 0.007172094875, + 0.007178971625, + 0.007181356125, + 0.007182798142857143, + 0.007183835857142857, + 0.007187954875, + 0.007196155375, + 0.007200182875, + 0.007203802375, + 0.007203845142857143, + 0.007205657125, + 0.007211529375, + 0.007213062571428571, + 0.007221130714285714, + 0.007226757, + 0.00724173275, + 0.007245069125, + 0.007252404, + 0.007309310625, + 0.007370377375, + 0.007469279375, + 0.007609525142857143, + 0.007633872, + 0.007729648, + 0.007796605875, + 0.0077998650000000004, + 0.00782994025, + 0.0078913965, + 0.007898724125, + 0.0078990185, + 0.00790032575, + 0.007975872285714286, + 0.007979141285714286, + 0.00798515125 + ] + }, + "completed": true, + "percentSlower": 14.38 + } + ], + "fastest": { + "name": "encrypt 100 KiB of data", + "index": 0 + }, + "slowest": { + "name": "encrypt 100 KiB of data with workers", + "index": 2 + } +} \ No newline at end of file diff --git a/benches/results/crypto_100KiB_metrics.txt b/benches/results/crypto_100KiB_metrics.txt new file mode 100644 index 00000000..ba8d877c --- /dev/null +++ b/benches/results/crypto_100KiB_metrics.txt @@ -0,0 +1,17 @@ +# TYPE crypto_100KiB_ops gauge +crypto_100KiB_ops{name="encrypt 100 KiB of data"} 160 +crypto_100KiB_ops{name="decrypt 100 KiB of data"} 156 +crypto_100KiB_ops{name="encrypt 100 KiB of data with workers"} 121 +crypto_100KiB_ops{name="decrypt 100 KiB of data with workers"} 137 + +# TYPE crypto_100KiB_margin gauge +crypto_100KiB_margin{name="encrypt 100 KiB of data"} 0.4 +crypto_100KiB_margin{name="decrypt 100 KiB of data"} 0.37 +crypto_100KiB_margin{name="encrypt 100 KiB of data with workers"} 1.23 +crypto_100KiB_margin{name="decrypt 100 KiB of data with workers"} 0.78 + +# TYPE crypto_100KiB_samples counter +crypto_100KiB_samples{name="encrypt 100 KiB of data"} 83 +crypto_100KiB_samples{name="decrypt 100 KiB of data"} 82 +crypto_100KiB_samples{name="encrypt 100 KiB of data with workers"} 82 +crypto_100KiB_samples{name="decrypt 100 KiB of data with workers"} 81 diff --git a/benches/results/crypto_10KiB.chart.html b/benches/results/crypto_10KiB.chart.html new file mode 100644 index 00000000..fa3eb25f --- /dev/null +++ b/benches/results/crypto_10KiB.chart.html @@ -0,0 +1,116 @@ + + + + + + + + crypto_10KiB + + + +
+ +
+ + + \ No newline at end of file diff --git a/benches/results/crypto_10KiB.json b/benches/results/crypto_10KiB.json new file mode 100644 index 00000000..1a1a4cb5 --- /dev/null +++ b/benches/results/crypto_10KiB.json @@ -0,0 +1,479 @@ +{ + "name": "crypto_10KiB", + "date": "2022-07-28T06:03:20.818Z", + "version": "3.5.3", + "results": [ + { + "name": "encrypt 10 KiB of data", + "ops": 1224, + "margin": 1.34, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 89, + "promise": true, + "details": { + "min": 0.0007952181111111112, + "max": 0.0012038504761904764, + "mean": 0.0008169909470251689, + "median": 0.000802588253968254, + "standardDeviation": 0.00005251941952006652, + "marginOfError": 0.00001091141277668529, + "relativeMarginOfError": 1.3355610385177432, + "standardErrorOfMean": 0.000005567047335043516, + "sampleVariance": 2.7582894267247446e-9, + "sampleResults": [ + 0.0007952181111111112, + 0.0007960046825396825, + 0.0007964102063492064, + 0.0007965064285714286, + 0.0007966377777777777, + 0.0007969754126984128, + 0.0007970817936507937, + 0.0007972413015873015, + 0.0007977735714285714, + 0.0007978758412698413, + 0.000797901761904762, + 0.0007979388095238095, + 0.0007983292380952382, + 0.0007983658095238095, + 0.0007984198730158731, + 0.0007986730476190477, + 0.0007988171428571428, + 0.0007988556190476191, + 0.0007991383809523809, + 0.0007994441904761906, + 0.0007995008095238095, + 0.000799582238095238, + 0.0007997341111111111, + 0.0007997827777777778, + 0.000800025619047619, + 0.0008000693492063492, + 0.000800169380952381, + 0.0008002461904761904, + 0.0008002593968253969, + 0.0008002616190476191, + 0.0008004055396825397, + 0.0008005615555555556, + 0.0008007269365079365, + 0.0008007700317460317, + 0.0008008048730158729, + 0.0008014214285714286, + 0.0008015454761904762, + 0.0008015750476190476, + 0.0008016246666666667, + 0.0008017883174603175, + 0.0008018754761904762, + 0.0008023258412698412, + 0.0008023306031746032, + 0.0008025115873015874, + 0.000802588253968254, + 0.0008028958095238095, + 0.0008032175238095238, + 0.000804280492063492, + 0.0008047847777777777, + 0.0008050414603174603, + 0.0008051775873015873, + 0.0008052742698412698, + 0.0008053852857142857, + 0.0008061225396825397, + 0.0008063959206349207, + 0.0008066123064516128, + 0.0008069547619047619, + 0.0008083567777777777, + 0.0008087261451612904, + 0.0008089097301587302, + 0.0008091640806451614, + 0.0008091776825396826, + 0.0008096741904761905, + 0.0008108254126984127, + 0.0008108831269841271, + 0.0008112805, + 0.0008116116129032257, + 0.000812552634920635, + 0.0008133443870967743, + 0.0008138556935483871, + 0.0008149156825396826, + 0.0008155823387096774, + 0.000817519064516129, + 0.0008181437903225807, + 0.0008185169365079366, + 0.0008190128548387097, + 0.0008197592857142858, + 0.0008250799838709677, + 0.0008282491587301587, + 0.0008295132096774193, + 0.0008318565737704919, + 0.0008392755483870968, + 0.000845821306451613, + 0.0008611569523809524, + 0.000862741365079365, + 0.0008876548412698412, + 0.0009965867301587302, + 0.0010003573492063493, + 0.0012038504761904764 + ] + }, + "completed": true, + "percentSlower": 15 + }, + { + "name": "decrypt 10 KiB of data", + "ops": 1440, + "margin": 1.02, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 89, + "promise": true, + "details": { + "min": 0.0006801704459459459, + "max": 0.0010030037162162162, + "mean": 0.0006943294649796789, + "median": 0.0006891489189189189, + "standardDeviation": 0.00003418433017696274, + "marginOfError": 0.000007102122233335516, + "relativeMarginOfError": 1.0228749594464315, + "standardErrorOfMean": 0.000003623531751701794, + "sampleVariance": 1.1685684296476056e-9, + "sampleResults": [ + 0.0006801704459459459, + 0.0006815568513513514, + 0.0006820097297297298, + 0.0006821846621621622, + 0.0006822755135135136, + 0.0006823048918918919, + 0.0006835652432432432, + 0.0006837698243243244, + 0.0006840374864864865, + 0.0006842692837837837, + 0.0006843576756756757, + 0.0006846005810810811, + 0.0006848973513513514, + 0.0006850898918918919, + 0.0006851589459459459, + 0.0006852310945945945, + 0.0006856212972972973, + 0.0006857905270270271, + 0.0006859172567567568, + 0.0006861325405405405, + 0.0006861330810810811, + 0.0006863102972972972, + 0.0006863231756756757, + 0.0006865198783783784, + 0.0006865274729729729, + 0.0006865879864864865, + 0.0006867114594594594, + 0.0006867886486486486, + 0.0006871969864864865, + 0.0006872027972972972, + 0.0006875299054054054, + 0.0006875862297297298, + 0.0006877805135135135, + 0.0006880801351351352, + 0.0006881302297297297, + 0.0006883027162162162, + 0.0006883101621621621, + 0.0006883269459459459, + 0.0006883318378378379, + 0.0006884427027027027, + 0.0006885515675675675, + 0.0006886327972972973, + 0.000688639027027027, + 0.0006886560945945946, + 0.0006891489189189189, + 0.0006892048378378379, + 0.000689260472972973, + 0.0006892783513513513, + 0.0006893184324324325, + 0.0006893663513513514, + 0.0006893907162162162, + 0.0006893952191780821, + 0.0006894717945205479, + 0.0006894754864864866, + 0.0006895131081081082, + 0.000689572554054054, + 0.000689579054054054, + 0.0006897485675675675, + 0.0006899061486486486, + 0.0006905391216216216, + 0.0006908, + 0.000690922493150685, + 0.0006917412567567568, + 0.0006922103783783783, + 0.0006922518108108108, + 0.0006923796164383561, + 0.0006931237808219178, + 0.0006931376756756757, + 0.000693549, + 0.0006938270945945947, + 0.0006939887432432432, + 0.0006945931232876713, + 0.0006947126712328768, + 0.0006949448648648649, + 0.0006951267260273972, + 0.0006952361081081081, + 0.0006957596621621622, + 0.000696703608108108, + 0.0006991586164383562, + 0.0007008201756756756, + 0.0007008261506849315, + 0.0007011979315068494, + 0.0007018162328767123, + 0.0007022351486486487, + 0.0007063590405405406, + 0.0007210942027027027, + 0.0007259872432432432, + 0.0007351024324324325, + 0.0010030037162162162 + ] + }, + "completed": true, + "percentSlower": 0 + }, + { + "name": "encrypt 10 KiB of data with workers", + "ops": 451, + "margin": 1.92, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 85, + "promise": true, + "details": { + "min": 0.00202176532, + "max": 0.0031471137083333334, + "mean": 0.0022160249328073323, + "median": 0.0021389918, + "standardDeviation": 0.00020026211310180455, + "marginOfError": 0.00004257409284132785, + "relativeMarginOfError": 1.9211919600287892, + "standardErrorOfMean": 0.000021721475939452983, + "sampleVariance": 4.010491394399996e-8, + "sampleResults": [ + 0.00202176532, + 0.0020299380000000002, + 0.00204293816, + 0.00205154684, + 0.00205932352, + 0.0020617733599999997, + 0.0020630509999999998, + 0.00206393828, + 0.00206818548, + 0.00207239344, + 0.0020739528, + 0.00207439004, + 0.00207519236, + 0.0020789114, + 0.0020809220000000002, + 0.00208877124, + 0.00209104512, + 0.00209470764, + 0.00209475936, + 0.0020958987200000003, + 0.00209591036, + 0.002097244375, + 0.0020993540399999997, + 0.00209984096, + 0.00210057756, + 0.00210147648, + 0.00210150692, + 0.00210483764, + 0.0021052290416666668, + 0.00210907124, + 0.00210951728, + 0.00211415924, + 0.0021146826399999997, + 0.0021169321199999997, + 0.00211780056, + 0.0021207473199999997, + 0.002125447, + 0.00212881056, + 0.0021290406000000002, + 0.0021290943200000002, + 0.00213415508, + 0.00213511088, + 0.0021389918, + 0.0021444644999999997, + 0.0021576062, + 0.0021680799999999997, + 0.00217075228, + 0.0021734234583333334, + 0.00217386016, + 0.00217717804, + 0.002180021, + 0.00219687408, + 0.002198438666666667, + 0.0022035967916666666, + 0.0022053680416666667, + 0.00220816375, + 0.00221256496, + 0.0022240803200000003, + 0.00222768436, + 0.002231944, + 0.0022353881666666666, + 0.00224522792, + 0.0022467552, + 0.0022511562916666668, + 0.00225339576, + 0.0022548954, + 0.00225727672, + 0.002258718958333333, + 0.00226960284, + 0.00228804452, + 0.0022935714, + 0.002301820875, + 0.0023739460416666667, + 0.0023824258333333334, + 0.002434579875, + 0.00246331564, + 0.0024707272, + 0.002558082782608696, + 0.0025627522916666667, + 0.00257494575, + 0.0026096150833333337, + 0.002644847541666667, + 0.00278186248, + 0.0029350083043478263, + 0.0031471137083333334 + ] + }, + "completed": true, + "percentSlower": 68.68 + }, + { + "name": "decrypt 10 KiB of data with workers", + "ops": 532, + "margin": 0.74, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 85, + "promise": true, + "details": { + "min": 0.001762377275862069, + "max": 0.0021908272068965518, + "mean": 0.0018801946789904825, + "median": 0.001867331275862069, + "standardDeviation": 0.00006542996686341287, + "marginOfError": 0.000013909877613404864, + "relativeMarginOfError": 0.7398104977551251, + "standardErrorOfMean": 0.000007096876333369829, + "sampleVariance": 4.281080563747307e-9, + "sampleResults": [ + 0.001762377275862069, + 0.0017777794827586206, + 0.001787808357142857, + 0.0017926710689655171, + 0.0017956664642857143, + 0.0017995320344827586, + 0.001800222620689655, + 0.0018042443793103448, + 0.001816613620689655, + 0.001818111275862069, + 0.001819484, + 0.0018216707586206895, + 0.0018268851034482759, + 0.001830364214285714, + 0.001832168896551724, + 0.001832203448275862, + 0.0018331219285714286, + 0.0018366767586206897, + 0.0018373632068965518, + 0.0018374782413793104, + 0.0018376046896551724, + 0.0018382918620689656, + 0.0018406743103448276, + 0.0018407313103448275, + 0.0018435591785714285, + 0.001845911448275862, + 0.0018468171071428572, + 0.0018473291785714285, + 0.0018481249310344828, + 0.0018500017142857143, + 0.0018505709310344827, + 0.0018539105357142857, + 0.0018555371785714287, + 0.0018575703214285713, + 0.0018581490689655172, + 0.0018583972142857143, + 0.0018642264137931034, + 0.0018643463448275862, + 0.0018654527142857142, + 0.001866167642857143, + 0.0018664173928571429, + 0.0018666900714285715, + 0.001867331275862069, + 0.0018678118275862068, + 0.0018693404285714287, + 0.0018696073103448277, + 0.001870453724137931, + 0.0018712124137931034, + 0.0018722902857142858, + 0.001872867275862069, + 0.0018732764642857144, + 0.0018741345, + 0.0018771937241379311, + 0.0018775770714285715, + 0.0018865687142857143, + 0.0018927024642857143, + 0.0018940525357142857, + 0.001897054607142857, + 0.0019026142068965517, + 0.001904538551724138, + 0.0019060155, + 0.0019071154285714286, + 0.001909418714285714, + 0.0019099361428571427, + 0.0019134681785714285, + 0.001917192, + 0.0019213959310344828, + 0.0019216987142857145, + 0.0019247563846153846, + 0.0019259750357142856, + 0.0019284167857142858, + 0.0019321866896551724, + 0.0019425773846153845, + 0.0019491856538461538, + 0.0019542363448275864, + 0.001957791344827586, + 0.0019590801153846153, + 0.0019621484642857144, + 0.001973382892857143, + 0.001987814857142857, + 0.0019935564285714284, + 0.0020098486785714285, + 0.0020136036428571426, + 0.0020353671153846152, + 0.0021908272068965518 + ] + }, + "completed": true, + "percentSlower": 63.06 + } + ], + "fastest": { + "name": "decrypt 10 KiB of data", + "index": 1 + }, + "slowest": { + "name": "encrypt 10 KiB of data with workers", + "index": 2 + } +} \ No newline at end of file diff --git a/benches/results/crypto_10KiB_metrics.txt b/benches/results/crypto_10KiB_metrics.txt new file mode 100644 index 00000000..17f4da17 --- /dev/null +++ b/benches/results/crypto_10KiB_metrics.txt @@ -0,0 +1,17 @@ +# TYPE crypto_10KiB_ops gauge +crypto_10KiB_ops{name="encrypt 10 KiB of data"} 1224 +crypto_10KiB_ops{name="decrypt 10 KiB of data"} 1440 +crypto_10KiB_ops{name="encrypt 10 KiB of data with workers"} 451 +crypto_10KiB_ops{name="decrypt 10 KiB of data with workers"} 532 + +# TYPE crypto_10KiB_margin gauge +crypto_10KiB_margin{name="encrypt 10 KiB of data"} 1.34 +crypto_10KiB_margin{name="decrypt 10 KiB of data"} 1.02 +crypto_10KiB_margin{name="encrypt 10 KiB of data with workers"} 1.92 +crypto_10KiB_margin{name="decrypt 10 KiB of data with workers"} 0.74 + +# TYPE crypto_10KiB_samples counter +crypto_10KiB_samples{name="encrypt 10 KiB of data"} 89 +crypto_10KiB_samples{name="decrypt 10 KiB of data"} 89 +crypto_10KiB_samples{name="encrypt 10 KiB of data with workers"} 85 +crypto_10KiB_samples{name="decrypt 10 KiB of data with workers"} 85 diff --git a/benches/results/crypto_16KiB.chart.html b/benches/results/crypto_16KiB.chart.html new file mode 100644 index 00000000..c4b35fd8 --- /dev/null +++ b/benches/results/crypto_16KiB.chart.html @@ -0,0 +1,116 @@ + + + + + + + + crypto_16KiB + + + +
+ +
+ + + \ No newline at end of file diff --git a/benches/results/crypto_16KiB.json b/benches/results/crypto_16KiB.json new file mode 100644 index 00000000..de081a2f --- /dev/null +++ b/benches/results/crypto_16KiB.json @@ -0,0 +1,486 @@ +{ + "name": "crypto_16KiB", + "date": "2022-07-28T06:03:44.672Z", + "version": "3.5.3", + "results": [ + { + "name": "encrypt 16 KiB of data", + "ops": 868, + "margin": 0.26, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 91, + "promise": true, + "details": { + "min": 0.0011398835454545454, + "max": 0.001230130590909091, + "mean": 0.001152197449050949, + "median": 0.0011477411136363636, + "standardDeviation": 0.000014737085031746028, + "marginOfError": 0.0000030279379041471386, + "relativeMarginOfError": 0.26279678944274826, + "standardErrorOfMean": 0.0000015448662776260912, + "sampleVariance": 2.1718167523291282e-10, + "sampleResults": [ + 0.0011398835454545454, + 0.0011399163409090908, + 0.0011405828181818183, + 0.001140904340909091, + 0.0011410366363636363, + 0.001141107, + 0.001141322159090909, + 0.0011416327499999999, + 0.0011417980681818181, + 0.0011419458636363637, + 0.0011423035681818181, + 0.0011430340454545455, + 0.00114306525, + 0.00114321575, + 0.0011432485454545454, + 0.001143309340909091, + 0.001143387431818182, + 0.0011435238409090909, + 0.0011436607045454546, + 0.0011436930227272729, + 0.0011438041363636363, + 0.001143968090909091, + 0.0011439901818181817, + 0.0011442203636363637, + 0.001144249068181818, + 0.0011444617499999999, + 0.0011444827045454546, + 0.001144535090909091, + 0.001144551, + 0.0011447274772727273, + 0.0011448242727272726, + 0.0011449096363636364, + 0.0011449882045454546, + 0.0011451949545454546, + 0.0011454074090909091, + 0.0011454725227272727, + 0.0011459657045454546, + 0.0011460397272727272, + 0.0011461932045454546, + 0.001146328909090909, + 0.0011464252272727273, + 0.0011465705000000001, + 0.0011470072499999999, + 0.0011472324318181819, + 0.0011472324545454546, + 0.0011477411136363636, + 0.0011480681136363637, + 0.001148183568181818, + 0.0011484625, + 0.0011489333863636364, + 0.0011491142045454547, + 0.001149189090909091, + 0.0011492335000000001, + 0.0011499004318181818, + 0.0011501256363636364, + 0.0011502351590909092, + 0.0011502756818181819, + 0.001150636159090909, + 0.0011506470909090909, + 0.0011506525454545455, + 0.0011506823863636365, + 0.0011512411590909092, + 0.00115127575, + 0.00115171525, + 0.0011517587272727272, + 0.0011519377045454545, + 0.0011525513636363638, + 0.0011537570454545456, + 0.001154215181818182, + 0.0011544285454545453, + 0.001154534659090909, + 0.0011546856136363636, + 0.0011561645454545454, + 0.0011572242954545455, + 0.0011574069318181818, + 0.0011576373409090909, + 0.0011586904772727272, + 0.0011589671363636362, + 0.0011594575909090908, + 0.0011660437045454546, + 0.001166192409090909, + 0.0011699545227272729, + 0.00117010775, + 0.0011703910227272728, + 0.0011710848181818183, + 0.0011721992272727274, + 0.001184543909090909, + 0.0011849175681818182, + 0.0011986305681818182, + 0.0012106885909090909, + 0.001230130590909091 + ] + }, + "completed": true, + "percentSlower": 7.66 + }, + { + "name": "decrypt 16 KiB of data", + "ops": 940, + "margin": 0.27, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 91, + "promise": true, + "details": { + "min": 0.0010536537708333335, + "max": 0.0011649457083333333, + "mean": 0.0010634728630952383, + "median": 0.0010597609375, + "standardDeviation": 0.000013750439728657213, + "marginOfError": 0.000002825217983298761, + "relativeMarginOfError": 0.2656596215418194, + "standardErrorOfMean": 0.0000014414377465810004, + "sampleVariance": 1.8907459273143463e-10, + "sampleResults": [ + 0.0010536537708333335, + 0.0010537412291666667, + 0.0010541409375, + 0.0010546195416666667, + 0.0010546333125, + 0.0010548401666666666, + 0.0010553388333333334, + 0.0010555721875, + 0.0010556302291666667, + 0.0010556640208333333, + 0.0010558427083333334, + 0.0010559249375, + 0.0010559493541666667, + 0.0010560616666666666, + 0.0010566903333333333, + 0.0010567873958333333, + 0.0010568756875, + 0.0010569915416666668, + 0.0010570821250000001, + 0.001057174375, + 0.0010571745833333334, + 0.0010573121458333334, + 0.0010574574166666666, + 0.0010575611458333333, + 0.0010576269166666667, + 0.0010578506666666667, + 0.0010578529583333332, + 0.0010579218333333334, + 0.0010579389583333333, + 0.0010580090833333335, + 0.001058031625, + 0.0010582046875, + 0.001058336375, + 0.0010583879375, + 0.001058402125, + 0.0010584776875, + 0.0010585267291666667, + 0.0010588477708333333, + 0.0010589427291666667, + 0.0010589734166666666, + 0.0010590036666666667, + 0.0010590116041666667, + 0.0010591675416666668, + 0.0010594077708333332, + 0.0010596663958333332, + 0.0010597609375, + 0.0010598753125, + 0.00105988325, + 0.0010600074583333333, + 0.0010602589791666667, + 0.0010609379583333333, + 0.0010610183333333333, + 0.0010610633958333335, + 0.0010612003333333334, + 0.0010614080208333333, + 0.0010614633125, + 0.0010614994375, + 0.00106173175, + 0.0010619141874999999, + 0.0010619262916666667, + 0.0010621671666666667, + 0.0010623591666666667, + 0.0010627323958333334, + 0.0010627789375, + 0.0010630152291666666, + 0.0010631045625, + 0.0010634483333333332, + 0.0010635836041666667, + 0.0010638359375000001, + 0.0010650903958333332, + 0.001065287875, + 0.001065385125, + 0.0010655909375, + 0.0010661018958333334, + 0.0010663634375, + 0.0010664120625, + 0.0010689061458333334, + 0.0010693526249999999, + 0.0010697698750000001, + 0.001070036625, + 0.0010750208541666667, + 0.0010759256875, + 0.0010759290208333333, + 0.0010772555, + 0.0010773485833333334, + 0.0010777399375, + 0.0010782022916666666, + 0.0010783429583333334, + 0.0010997171458333333, + 0.0011050234375, + 0.0011649457083333333 + ] + }, + "completed": true, + "percentSlower": 0 + }, + { + "name": "encrypt 16 KiB of data with workers", + "ops": 394, + "margin": 0.78, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 85, + "promise": true, + "details": { + "min": 0.002396531, + "max": 0.0028963146499999997, + "mean": 0.0025374773009503707, + "median": 0.0025101220476190476, + "standardDeviation": 0.00009273310199290924, + "marginOfError": 0.00001971430158486062, + "relativeMarginOfError": 0.7769252389953183, + "standardErrorOfMean": 0.00001005831713513297, + "sampleVariance": 8.599428205227307e-9, + "sampleResults": [ + 0.002396531, + 0.002411656761904762, + 0.002413062772727273, + 0.002425809238095238, + 0.0024263282857142857, + 0.0024276207727272725, + 0.002435422190476191, + 0.002436328142857143, + 0.0024401510952380954, + 0.002443077727272727, + 0.002450607409090909, + 0.002454961, + 0.002459501, + 0.0024612010909090907, + 0.0024622203181818183, + 0.002464028666666667, + 0.0024679279047619047, + 0.0024726010476190476, + 0.0024730151904761902, + 0.0024741824545454548, + 0.002476115809523809, + 0.002477137285714286, + 0.0024793852857142857, + 0.0024853385454545454, + 0.0024864410476190474, + 0.0024882416190476187, + 0.002488302619047619, + 0.002488925238095238, + 0.002489109904761905, + 0.0024894238095238097, + 0.0024923584285714284, + 0.0024935382857142856, + 0.0024938884761904765, + 0.002494245333333333, + 0.0024986684761904763, + 0.0024994127142857142, + 0.0025016335714285716, + 0.0025021526666666664, + 0.0025033215238095237, + 0.0025045257142857144, + 0.002506093, + 0.002507188857142857, + 0.0025101220476190476, + 0.0025132560476190478, + 0.0025138210454545454, + 0.002514082857142857, + 0.0025174139047619047, + 0.002520869476190476, + 0.002522675090909091, + 0.00252281525, + 0.002523425761904762, + 0.002531243857142857, + 0.0025353707142857142, + 0.0025422341904761904, + 0.002543130619047619, + 0.0025481644285714287, + 0.0025484488095238096, + 0.002550743619047619, + 0.0025596451904761905, + 0.0025683515, + 0.0025692767619047616, + 0.002571261428571429, + 0.00257207895, + 0.002583995, + 0.0025934949499999997, + 0.0025947391904761904, + 0.00260163835, + 0.0026120800476190477, + 0.002616214619047619, + 0.0026167580000000003, + 0.0026198561904761906, + 0.002622446857142857, + 0.002628280714285714, + 0.0026315015714285716, + 0.002643483238095238, + 0.0026564168095238095, + 0.002666659, + 0.002673023736842105, + 0.0026819799047619044, + 0.002697586571428571, + 0.0027179317142857146, + 0.002721635857142857, + 0.0027792863000000003, + 0.002790133476190476, + 0.0028963146499999997 + ] + }, + "completed": true, + "percentSlower": 58.09 + }, + { + "name": "decrypt 16 KiB of data with workers", + "ops": 455, + "margin": 0.5, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 88, + "promise": true, + "details": { + "min": 0.0021025401666666665, + "max": 0.002390039695652174, + "mean": 0.002195860974617095, + "median": 0.0021844070833333335, + "standardDeviation": 0.00005234270119483096, + "marginOfError": 0.000010936311362911113, + "relativeMarginOfError": 0.4980420659289754, + "standardErrorOfMean": 0.000005579750695362813, + "sampleVariance": 2.7397583683713583e-9, + "sampleResults": [ + 0.0021025401666666665, + 0.00212294375, + 0.0021286916666666666, + 0.0021360380833333335, + 0.0021378460833333334, + 0.0021396770416666666, + 0.0021398832916666665, + 0.002140129583333333, + 0.0021408459166666668, + 0.0021444665416666666, + 0.00214476, + 0.00214522175, + 0.002148310875, + 0.002148738375, + 0.002152309708333333, + 0.002152839875, + 0.002155322916666667, + 0.002162832125, + 0.002162928125, + 0.0021645870833333332, + 0.002165243291666667, + 0.002166082, + 0.002166913125, + 0.0021672441666666666, + 0.0021679872916666666, + 0.0021682369166666667, + 0.0021688910416666667, + 0.0021697430833333333, + 0.0021698412083333333, + 0.002169982291666667, + 0.0021734354999999998, + 0.0021736220833333333, + 0.0021746774166666667, + 0.0021749416666666664, + 0.0021754685416666667, + 0.0021755273333333336, + 0.0021777002499999997, + 0.0021778772500000002, + 0.002178851166666667, + 0.0021789876666666666, + 0.00217965725, + 0.0021810164583333336, + 0.0021820864583333333, + 0.002183546708333333, + 0.0021852674583333334, + 0.002186192541666667, + 0.002186460125, + 0.0021881654583333333, + 0.002188314875, + 0.002189158125, + 0.0021905144583333333, + 0.002190548666666667, + 0.002191565695652174, + 0.002192908125, + 0.0021940185833333333, + 0.0021958194583333334, + 0.00219597225, + 0.0021975373333333334, + 0.002198788, + 0.002199251791666667, + 0.002200658625, + 0.00220101475, + 0.002204685, + 0.00220507825, + 0.002206376125, + 0.002207668125, + 0.0022081336250000002, + 0.0022150487916666665, + 0.0022154353333333336, + 0.002216115375, + 0.002217746, + 0.0022260712916666666, + 0.0022405729166666668, + 0.002241472541666667, + 0.0022437071666666667, + 0.002252745458333333, + 0.0022623403333333334, + 0.0022644205, + 0.002265388541666667, + 0.0022658560833333334, + 0.00228312, + 0.0022873672083333334, + 0.002292616291666667, + 0.002301548583333333, + 0.0023151564166666665, + 0.002347396166666667, + 0.0023490305, + 0.002390039695652174 + ] + }, + "completed": true, + "percentSlower": 51.6 + } + ], + "fastest": { + "name": "decrypt 16 KiB of data", + "index": 1 + }, + "slowest": { + "name": "encrypt 16 KiB of data with workers", + "index": 2 + } +} \ No newline at end of file diff --git a/benches/results/crypto_16KiB_metrics.txt b/benches/results/crypto_16KiB_metrics.txt new file mode 100644 index 00000000..3fb38853 --- /dev/null +++ b/benches/results/crypto_16KiB_metrics.txt @@ -0,0 +1,17 @@ +# TYPE crypto_16KiB_ops gauge +crypto_16KiB_ops{name="encrypt 16 KiB of data"} 868 +crypto_16KiB_ops{name="decrypt 16 KiB of data"} 940 +crypto_16KiB_ops{name="encrypt 16 KiB of data with workers"} 394 +crypto_16KiB_ops{name="decrypt 16 KiB of data with workers"} 455 + +# TYPE crypto_16KiB_margin gauge +crypto_16KiB_margin{name="encrypt 16 KiB of data"} 0.26 +crypto_16KiB_margin{name="decrypt 16 KiB of data"} 0.27 +crypto_16KiB_margin{name="encrypt 16 KiB of data with workers"} 0.78 +crypto_16KiB_margin{name="decrypt 16 KiB of data with workers"} 0.5 + +# TYPE crypto_16KiB_samples counter +crypto_16KiB_samples{name="encrypt 16 KiB of data"} 91 +crypto_16KiB_samples{name="decrypt 16 KiB of data"} 91 +crypto_16KiB_samples{name="encrypt 16 KiB of data with workers"} 85 +crypto_16KiB_samples{name="decrypt 16 KiB of data with workers"} 88 diff --git a/benches/results/crypto_1KiB.chart.html b/benches/results/crypto_1KiB.chart.html new file mode 100644 index 00000000..7bfa6818 --- /dev/null +++ b/benches/results/crypto_1KiB.chart.html @@ -0,0 +1,116 @@ + + + + + + + + crypto_1KiB + + + +
+ +
+ + + \ No newline at end of file diff --git a/benches/results/crypto_1KiB.json b/benches/results/crypto_1KiB.json new file mode 100644 index 00000000..4f128963 --- /dev/null +++ b/benches/results/crypto_1KiB.json @@ -0,0 +1,471 @@ +{ + "name": "crypto_1KiB", + "date": "2022-07-28T06:02:56.948Z", + "version": "3.5.3", + "results": [ + { + "name": "encrypt 1 KiB of data", + "ops": 3546, + "margin": 1.43, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 84, + "promise": true, + "details": { + "min": 0.0002691210376344086, + "max": 0.0003944868766233766, + "mean": 0.0002819755651253124, + "median": 0.0002745832972972973, + "standardDeviation": 0.000018860980073762583, + "marginOfError": 0.000004033487213889972, + "relativeMarginOfError": 1.4304385601984537, + "standardErrorOfMean": 0.0000020579016397397816, + "sampleVariance": 3.557365693428692e-10, + "sampleResults": [ + 0.0002691210376344086, + 0.00026993251612903227, + 0.0002704335698924731, + 0.0002709156129032258, + 0.0002710669945945946, + 0.0002710947688172043, + 0.00027110150537634406, + 0.00027111641935483873, + 0.00027113683870967745, + 0.0002711451344086022, + 0.00027134475806451613, + 0.0002713591935483871, + 0.0002713625837837838, + 0.0002714097688172043, + 0.0002714232365591398, + 0.0002715484193548387, + 0.0002715816021505376, + 0.00027163266666666665, + 0.0002716579027027027, + 0.0002716688918918919, + 0.000271721427027027, + 0.0002717229462365591, + 0.0002717566075268817, + 0.00027184872043010754, + 0.0002718511837837838, + 0.0002718915837837838, + 0.0002719080806451613, + 0.00027191885483870965, + 0.00027195946774193546, + 0.00027200875268817206, + 0.00027220681720430107, + 0.0002726382258064516, + 0.0002726775483870968, + 0.0002727416756756757, + 0.00027299955376344087, + 0.000273015064516129, + 0.0002732978648648649, + 0.0002734694193548387, + 0.00027355679032258065, + 0.00027364319354838707, + 0.00027369565591397853, + 0.00027446515135135137, + 0.00027470144324324324, + 0.0002749369247311828, + 0.0002751024032258065, + 0.0002753658010752688, + 0.0002754708956043956, + 0.00027571481621621623, + 0.00027681752688172044, + 0.0002768997258064516, + 0.0002770542634408602, + 0.00027730290860215054, + 0.0002774104731182796, + 0.0002781680376344086, + 0.0002795131129032258, + 0.00027994930769230765, + 0.00028056707567567565, + 0.000281556435483871, + 0.00028163552197802197, + 0.00028175205494505493, + 0.0002827608064516129, + 0.0002831056021505376, + 0.0002857044488636363, + 0.00028683529670329674, + 0.0002872826451612903, + 0.00028848601704545453, + 0.0002915226264367816, + 0.00029236870689655176, + 0.0002932962126436782, + 0.00029333749425287356, + 0.00029386245161290326, + 0.0002943944411764706, + 0.00029505519886363635, + 0.00029664035057471263, + 0.0002974777988505747, + 0.0002979225459770115, + 0.0002979664252873563, + 0.0002994713965517242, + 0.00030438477011494257, + 0.00030441833516483516, + 0.00032450410240963853, + 0.00033486339156626506, + 0.00034683279411764706, + 0.0003944868766233766 + ] + }, + "completed": true, + "percentSlower": 52.1 + }, + { + "name": "decrypt 1 KiB of data", + "ops": 7403, + "margin": 0.46, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 86, + "promise": true, + "details": { + "min": 0.00013194982105263158, + "max": 0.00014811557549857549, + "mean": 0.00013508915352594456, + "median": 0.0001341812657894737, + "standardDeviation": 0.0000029578616247559877, + "marginOfError": 6.251506666289539e-7, + "relativeMarginOfError": 0.46276895687919944, + "standardErrorOfMean": 3.1895442174946627e-7, + "sampleVariance": 8.74894539120413e-12, + "sampleResults": [ + 0.00013194982105263158, + 0.00013211587105263159, + 0.00013221629023746703, + 0.00013226926649076518, + 0.0001323997, + 0.00013245293157894736, + 0.00013248127440633245, + 0.00013249784960422164, + 0.00013271603421052632, + 0.00013274195, + 0.00013277445789473683, + 0.00013283101319261215, + 0.00013285218421052632, + 0.0001328564432717678, + 0.0001328646649076517, + 0.00013297523421052632, + 0.00013297662005277045, + 0.0001330018894736842, + 0.0001330026552631579, + 0.00013300283684210528, + 0.00013300782105263157, + 0.000133017963060686, + 0.00013303866226912928, + 0.0001330996595744681, + 0.00013323522631578948, + 0.0001332478552631579, + 0.0001333125303430079, + 0.00013342347894736842, + 0.0001335144105263158, + 0.00013352118684210526, + 0.00013352886052631579, + 0.00013355701842105263, + 0.00013369069210526316, + 0.0001336996052631579, + 0.00013381611968085107, + 0.00013387659736842106, + 0.0001339102165775401, + 0.00013391090159574467, + 0.00013394761213720316, + 0.00013399554010695187, + 0.0001340186552631579, + 0.00013410048548812665, + 0.00013417587368421053, + 0.00013418665789473682, + 0.00013423174210526316, + 0.00013425415263157894, + 0.00013431426649076515, + 0.0001344190290237467, + 0.00013448487894736843, + 0.00013459432453825858, + 0.00013480121315789472, + 0.00013490504210526315, + 0.00013501926737967916, + 0.00013508287631578948, + 0.0001352092210526316, + 0.0001353558395721925, + 0.0001354415052631579, + 0.0001355458052631579, + 0.00013560104210526316, + 0.0001356767894736842, + 0.00013573281842105264, + 0.00013589272631578947, + 0.0001359430052631579, + 0.00013614470263157897, + 0.00013615392894736843, + 0.00013617533684210528, + 0.0001363394432717678, + 0.00013635320000000001, + 0.00013641608421052632, + 0.00013662766842105262, + 0.00013686095, + 0.00013706734210526317, + 0.0001372194447368421, + 0.0001373063447368421, + 0.00013744381842105264, + 0.00013746469680851064, + 0.0001374737219251337, + 0.00013807221578947368, + 0.0001384967052631579, + 0.00013850837467018468, + 0.00013893300263852242, + 0.0001406649255319149, + 0.00014338509574468084, + 0.00014417560949868074, + 0.00014595085185185183, + 0.00014811557549857549 + ] + }, + "completed": true, + "percentSlower": 0 + }, + { + "name": "encrypt 1 KiB of data with workers", + "ops": 646, + "margin": 1.21, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 84, + "promise": true, + "details": { + "min": 0.001439797657142857, + "max": 0.0019401784838709677, + "mean": 0.0015475918705834383, + "median": 0.0015284675, + "standardDeviation": 0.00008736748194265345, + "marginOfError": 0.000018683844633061856, + "relativeMarginOfError": 1.2072850076433972, + "standardErrorOfMean": 0.000009532573792378499, + "sampleVariance": 7.633076900999875e-9, + "sampleResults": [ + 0.001439797657142857, + 0.0014416236857142859, + 0.0014423164285714285, + 0.0014522294571428572, + 0.001465156457142857, + 0.0014663579142857144, + 0.0014676308857142857, + 0.0014696148857142857, + 0.0014709680285714287, + 0.0014719430571428571, + 0.0014724877714285716, + 0.0014729509142857142, + 0.0014749178, + 0.0014794621142857143, + 0.001480129657142857, + 0.0014855524857142859, + 0.0014913411428571428, + 0.0014934723142857145, + 0.0014964485428571428, + 0.0014987798, + 0.0015018224, + 0.0015031995714285713, + 0.0015035235999999999, + 0.0015047344571428572, + 0.0015059645142857143, + 0.0015108701470588235, + 0.0015142605142857142, + 0.0015149675428571428, + 0.0015152374857142856, + 0.0015156084857142857, + 0.0015157982571428572, + 0.001517820657142857, + 0.0015183531142857142, + 0.0015184363636363636, + 0.001518737542857143, + 0.0015214696666666667, + 0.0015234189714285716, + 0.0015238326000000001, + 0.0015239708571428573, + 0.001524503, + 0.0015246756285714285, + 0.0015283545714285713, + 0.0015285804285714286, + 0.0015290106857142856, + 0.0015321205714285714, + 0.0015329361142857143, + 0.0015329635714285714, + 0.001534468142857143, + 0.0015351365714285714, + 0.0015354789090909092, + 0.0015357245142857143, + 0.0015374987575757575, + 0.0015398114, + 0.0015400235142857142, + 0.0015409727142857144, + 0.0015460577714285714, + 0.0015538897142857143, + 0.0015589212285714287, + 0.0015591904242424244, + 0.0015593798484848484, + 0.0015608488857142856, + 0.001563998542857143, + 0.0015660533142857144, + 0.0015667243636363637, + 0.0015687558571428571, + 0.0015721371142857143, + 0.0015761503636363638, + 0.0015824194, + 0.0015828696857142857, + 0.001589220257142857, + 0.0015941209714285713, + 0.0015950637272727271, + 0.0016028823999999998, + 0.00160488753125, + 0.0016191482857142857, + 0.0016305710285714286, + 0.0016335759393939393, + 0.00166914715625, + 0.0016931085454545453, + 0.00171588590625, + 0.0017521469714285715, + 0.0018065440666666665, + 0.0018963725, + 0.0019401784838709677 + ] + }, + "completed": true, + "percentSlower": 91.27 + }, + { + "name": "decrypt 1 KiB of data with workers", + "ops": 759, + "margin": 0.48, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 86, + "promise": true, + "details": { + "min": 0.001264016375, + "max": 0.0013814593414634146, + "mean": 0.0013175587799875972, + "median": 0.0013211460499999998, + "standardDeviation": 0.000029832938825172807, + "marginOfError": 0.000006305258311600747, + "relativeMarginOfError": 0.4785561302745143, + "standardErrorOfMean": 0.0000032169685263269118, + "sampleVariance": 8.90004238946503e-10, + "sampleResults": [ + 0.001264016375, + 0.001268220325, + 0.001268366625, + 0.001268745325, + 0.001270636875, + 0.001270758875, + 0.0012711736750000001, + 0.001272358425, + 0.001276446875, + 0.001276634975, + 0.0012774435250000001, + 0.0012786343658536586, + 0.001279414, + 0.001279702243902439, + 0.0012819027, + 0.0012828818, + 0.0012835613250000001, + 0.0012878765, + 0.001289286675, + 0.0012900198, + 0.001296793875, + 0.0012989443846153847, + 0.0012992415, + 0.00129963275, + 0.00130050965, + 0.00130052995, + 0.001302824275, + 0.0013034373658536585, + 0.001305114125, + 0.001305798875, + 0.001305868275, + 0.00130595545, + 0.001306148325, + 0.001307553975, + 0.001308290625, + 0.0013095414749999998, + 0.001310422375, + 0.0013104695128205127, + 0.0013132013999999999, + 0.001317123825, + 0.00131745295, + 0.00132058335, + 0.001320930525, + 0.001321361575, + 0.00132264025, + 0.0013230132631578946, + 0.0013232226249999999, + 0.001323418725, + 0.0013237888205128205, + 0.0013239013333333333, + 0.0013242217250000001, + 0.001325287775, + 0.0013290441, + 0.00132943685, + 0.001329636282051282, + 0.001330568, + 0.0013306974878048781, + 0.001330865575, + 0.001331040875, + 0.0013316508, + 0.0013321872564102564, + 0.001333129282051282, + 0.0013354593333333334, + 0.001335482525, + 0.0013371855, + 0.001339354375, + 0.0013394796, + 0.001339672225, + 0.0013428139, + 0.001343404525, + 0.0013452671282051282, + 0.0013476270000000001, + 0.001348917975, + 0.0013495683333333334, + 0.0013500721025641025, + 0.0013544994615384616, + 0.0013573781999999999, + 0.0013576433333333333, + 0.001357789282051282, + 0.001360265175, + 0.0013632848499999998, + 0.001371464358974359, + 0.00137297045, + 0.0013771872307692308, + 0.001378246175, + 0.0013814593414634146 + ] + }, + "completed": true, + "percentSlower": 89.75 + } + ], + "fastest": { + "name": "decrypt 1 KiB of data", + "index": 1 + }, + "slowest": { + "name": "encrypt 1 KiB of data with workers", + "index": 2 + } +} \ No newline at end of file diff --git a/benches/results/crypto_1KiB_metrics.txt b/benches/results/crypto_1KiB_metrics.txt new file mode 100644 index 00000000..a59146ce --- /dev/null +++ b/benches/results/crypto_1KiB_metrics.txt @@ -0,0 +1,17 @@ +# TYPE crypto_1KiB_ops gauge +crypto_1KiB_ops{name="encrypt 1 KiB of data"} 3546 +crypto_1KiB_ops{name="decrypt 1 KiB of data"} 7403 +crypto_1KiB_ops{name="encrypt 1 KiB of data with workers"} 646 +crypto_1KiB_ops{name="decrypt 1 KiB of data with workers"} 759 + +# TYPE crypto_1KiB_margin gauge +crypto_1KiB_margin{name="encrypt 1 KiB of data"} 1.43 +crypto_1KiB_margin{name="decrypt 1 KiB of data"} 0.46 +crypto_1KiB_margin{name="encrypt 1 KiB of data with workers"} 1.21 +crypto_1KiB_margin{name="decrypt 1 KiB of data with workers"} 0.48 + +# TYPE crypto_1KiB_samples counter +crypto_1KiB_samples{name="encrypt 1 KiB of data"} 84 +crypto_1KiB_samples{name="decrypt 1 KiB of data"} 86 +crypto_1KiB_samples{name="encrypt 1 KiB of data with workers"} 84 +crypto_1KiB_samples{name="decrypt 1 KiB of data with workers"} 86 diff --git a/benches/results/crypto_1MiB.chart.html b/benches/results/crypto_1MiB.chart.html new file mode 100644 index 00000000..8d5b8f43 --- /dev/null +++ b/benches/results/crypto_1MiB.chart.html @@ -0,0 +1,116 @@ + + + + + + + + crypto_1MiB + + + +
+ +
+ + + \ No newline at end of file diff --git a/benches/results/crypto_1MiB.json b/benches/results/crypto_1MiB.json new file mode 100644 index 00000000..08025a90 --- /dev/null +++ b/benches/results/crypto_1MiB.json @@ -0,0 +1,329 @@ +{ + "name": "crypto_1MiB", + "date": "2022-07-28T06:05:20.308Z", + "version": "3.5.3", + "results": [ + { + "name": "encrypt 1 MiB of data", + "ops": 11.18, + "margin": 0.81, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 56, + "promise": true, + "details": { + "min": 0.081309408, + "max": 0.09259403, + "mean": 0.08947537451785713, + "median": 0.090528995, + "standardDeviation": 0.0027746442604598856, + "marginOfError": 0.0007267237734973755, + "relativeMarginOfError": 0.812205344111009, + "standardErrorOfMean": 0.0003707774354578447, + "sampleVariance": 0.000007698650772102986, + "sampleResults": [ + 0.081309408, + 0.081909444, + 0.083045111, + 0.083935636, + 0.084471018, + 0.08566209, + 0.085725901, + 0.085891295, + 0.086212572, + 0.086635672, + 0.086638116, + 0.08683059, + 0.086884953, + 0.087062248, + 0.088762514, + 0.088964607, + 0.089499508, + 0.090059467, + 0.090166629, + 0.090178633, + 0.090319649, + 0.090320761, + 0.090322895, + 0.090350217, + 0.090372348, + 0.090380233, + 0.090483128, + 0.090523625, + 0.090534365, + 0.090782855, + 0.090799036, + 0.09080136, + 0.090856375, + 0.09092832, + 0.090955561, + 0.090969819, + 0.090977243, + 0.090978265, + 0.090982733, + 0.091031546, + 0.091142385, + 0.091156883, + 0.091203881, + 0.091219992, + 0.091253756, + 0.0914726, + 0.09154683, + 0.09157827, + 0.091675303, + 0.091706362, + 0.091889638, + 0.092024904, + 0.092079508, + 0.092094837, + 0.092466048, + 0.09259403 + ] + }, + "completed": true, + "percentSlower": 0 + }, + { + "name": "decrypt 1 MiB of data", + "ops": 10.96, + "margin": 1.09, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 55, + "promise": true, + "details": { + "min": 0.080562846, + "max": 0.095623098, + "mean": 0.09121820932727279, + "median": 0.092660205, + "standardDeviation": 0.003775508470534833, + "marginOfError": 0.0009978153382928488, + "relativeMarginOfError": 1.0938773580973136, + "standardErrorOfMean": 0.000509089458312678, + "sampleVariance": 0.000014254464211080274, + "sampleResults": [ + 0.080562846, + 0.081169995, + 0.081972203, + 0.084574855, + 0.084603338, + 0.084761488, + 0.08596298, + 0.086186471, + 0.088508994, + 0.088701408, + 0.089037103, + 0.089059476, + 0.089140949, + 0.089372848, + 0.089491973, + 0.089595058, + 0.089639593, + 0.090255478, + 0.090271978, + 0.090305873, + 0.090532281, + 0.09064269, + 0.091053467, + 0.091556167, + 0.091607925, + 0.09185433, + 0.092537573, + 0.092660205, + 0.092714487, + 0.092965913, + 0.093058298, + 0.093317759, + 0.093443356, + 0.093495254, + 0.09368345, + 0.093698368, + 0.093932721, + 0.094012803, + 0.094018413, + 0.094044522, + 0.094062346, + 0.094121108, + 0.094210758, + 0.09434953, + 0.094361923, + 0.094450731, + 0.094475789, + 0.094538697, + 0.094570708, + 0.094597749, + 0.094655898, + 0.094916813, + 0.094990482, + 0.095070994, + 0.095623098 + ] + }, + "completed": true, + "percentSlower": 1.97 + }, + { + "name": "encrypt 1 MiB of data with workers", + "ops": 5.34, + "margin": 1.73, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 31, + "promise": true, + "details": { + "min": 0.17606747, + "max": 0.223644116, + "mean": 0.18720514338709682, + "median": 0.18544823, + "standardDeviation": 0.008833203154727354, + "marginOfError": 0.003239612825997019, + "relativeMarginOfError": 1.7305148605336398, + "standardErrorOfMean": 0.0015864901204686675, + "sampleVariance": 0.00007802547797268527, + "sampleResults": [ + 0.17606747, + 0.178401775, + 0.178487006, + 0.179884478, + 0.180075349, + 0.180691415, + 0.180700882, + 0.181609411, + 0.183287234, + 0.184280693, + 0.184664318, + 0.184842345, + 0.184945479, + 0.185068352, + 0.185249915, + 0.18544823, + 0.185533011, + 0.186610218, + 0.186953907, + 0.187271939, + 0.187836065, + 0.18809683, + 0.188294083, + 0.190054783, + 0.190742903, + 0.19137545, + 0.191469417, + 0.193083159, + 0.193372788, + 0.205316424, + 0.223644116 + ] + }, + "completed": true, + "percentSlower": 52.24 + }, + { + "name": "decrypt 1 MiB of data with workers", + "ops": 11.03, + "margin": 1.24, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 56, + "promise": true, + "details": { + "min": 0.081148654, + "max": 0.099990246, + "mean": 0.0906521374285714, + "median": 0.0916176175, + "standardDeviation": 0.004290761808044179, + "marginOfError": 0.001123819242976921, + "relativeMarginOfError": 1.2397051794420457, + "standardErrorOfMean": 0.0005733771647841434, + "sampleVariance": 0.00001841063689337055, + "sampleResults": [ + 0.081148654, + 0.081979415, + 0.082341109, + 0.082983023, + 0.08305064, + 0.084277511, + 0.085283232, + 0.085636331, + 0.086179789, + 0.086277172, + 0.086336425, + 0.087187554, + 0.087201441, + 0.087604623, + 0.087615393, + 0.087662723, + 0.087710093, + 0.08898808, + 0.089348491, + 0.089671932, + 0.089785648, + 0.090259373, + 0.090287386, + 0.090327603, + 0.090467647, + 0.090600999, + 0.09138384, + 0.091525037, + 0.091710198, + 0.091777405, + 0.091854791, + 0.091909926, + 0.091997941, + 0.092066241, + 0.092151883, + 0.092493178, + 0.092566086, + 0.09261586, + 0.093869711, + 0.093880262, + 0.093952848, + 0.094008333, + 0.094039602, + 0.094232448, + 0.094298171, + 0.094304835, + 0.094379685, + 0.0944719, + 0.09465674, + 0.094754525, + 0.094811082, + 0.095115417, + 0.09535486, + 0.096199006, + 0.099935352, + 0.099990246 + ] + }, + "completed": true, + "percentSlower": 1.34 + } + ], + "fastest": { + "name": "encrypt 1 MiB of data", + "index": 0 + }, + "slowest": { + "name": "encrypt 1 MiB of data with workers", + "index": 2 + } +} \ No newline at end of file diff --git a/benches/results/crypto_1MiB_metrics.txt b/benches/results/crypto_1MiB_metrics.txt new file mode 100644 index 00000000..0352b45f --- /dev/null +++ b/benches/results/crypto_1MiB_metrics.txt @@ -0,0 +1,17 @@ +# TYPE crypto_1MiB_ops gauge +crypto_1MiB_ops{name="encrypt 1 MiB of data"} 11.18 +crypto_1MiB_ops{name="decrypt 1 MiB of data"} 10.96 +crypto_1MiB_ops{name="encrypt 1 MiB of data with workers"} 5.34 +crypto_1MiB_ops{name="decrypt 1 MiB of data with workers"} 11.03 + +# TYPE crypto_1MiB_margin gauge +crypto_1MiB_margin{name="encrypt 1 MiB of data"} 0.81 +crypto_1MiB_margin{name="decrypt 1 MiB of data"} 1.09 +crypto_1MiB_margin{name="encrypt 1 MiB of data with workers"} 1.73 +crypto_1MiB_margin{name="decrypt 1 MiB of data with workers"} 1.24 + +# TYPE crypto_1MiB_samples counter +crypto_1MiB_samples{name="encrypt 1 MiB of data"} 56 +crypto_1MiB_samples{name="decrypt 1 MiB of data"} 55 +crypto_1MiB_samples{name="encrypt 1 MiB of data with workers"} 31 +crypto_1MiB_samples{name="decrypt 1 MiB of data with workers"} 56 diff --git a/benches/results/crypto_24KiB.chart.html b/benches/results/crypto_24KiB.chart.html new file mode 100644 index 00000000..e2dd6a70 --- /dev/null +++ b/benches/results/crypto_24KiB.chart.html @@ -0,0 +1,116 @@ + + + + + + + + crypto_24KiB + + + +
+ +
+ + + \ No newline at end of file diff --git a/benches/results/crypto_24KiB.json b/benches/results/crypto_24KiB.json new file mode 100644 index 00000000..d1a483f4 --- /dev/null +++ b/benches/results/crypto_24KiB.json @@ -0,0 +1,476 @@ +{ + "name": "crypto_24KiB", + "date": "2022-07-28T06:04:08.315Z", + "version": "3.5.3", + "results": [ + { + "name": "encrypt 24 KiB of data", + "ops": 619, + "margin": 0.54, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 89, + "promise": true, + "details": { + "min": 0.00158767078125, + "max": 0.00179983578125, + "mean": 0.001614916372576115, + "median": 0.00160038421875, + "standardDeviation": 0.000041821923637239634, + "marginOfError": 0.00000868890547707933, + "relativeMarginOfError": 0.538040583687859, + "standardErrorOfMean": 0.000004433115039326189, + "sampleVariance": 1.749073296719103e-9, + "sampleResults": [ + 0.00158767078125, + 0.00159007721875, + 0.00159014671875, + 0.0015921601875, + 0.0015924764375, + 0.00159259696875, + 0.001592808625, + 0.001592946375, + 0.0015946565, + 0.00159480365625, + 0.00159501684375, + 0.00159522884375, + 0.001595566, + 0.001595628, + 0.00159577015625, + 0.0015960810625, + 0.00159610675, + 0.00159619846875, + 0.0015965209375, + 0.0015967050625, + 0.0015967858125, + 0.001597051625, + 0.001597132125, + 0.00159728646875, + 0.00159734878125, + 0.001597424875, + 0.0015974649375, + 0.0015974774375, + 0.0015974978125, + 0.0015975604375, + 0.001597830625, + 0.0015980028125, + 0.0015980995625, + 0.0015981051875, + 0.00159857265625, + 0.001598598625, + 0.00159910553125, + 0.001599232625, + 0.0015993873125, + 0.00159944053125, + 0.00159973109375, + 0.001599777125, + 0.00159982253125, + 0.001600089875, + 0.00160038421875, + 0.0016011948125, + 0.00160133315625, + 0.0016017355, + 0.0016017580625, + 0.00160202759375, + 0.0016026535, + 0.0016029931875, + 0.0016031265625, + 0.001603222375, + 0.00160370515625, + 0.00160511221875, + 0.001605637875, + 0.0016057165, + 0.00160573746875, + 0.001605758125, + 0.001605768125, + 0.00160852209375, + 0.00160871840625, + 0.0016089791875, + 0.00160902615625, + 0.00160986021875, + 0.00161124725, + 0.0016116686875, + 0.00161219309375, + 0.00161300715625, + 0.0016174515483870968, + 0.00161817190625, + 0.00161844240625, + 0.00162091771875, + 0.001621589064516129, + 0.00162273053125, + 0.0016241096875, + 0.0016284288125, + 0.001630893125, + 0.0016338115, + 0.0016438304838709678, + 0.0016557980625, + 0.00166499984375, + 0.00168533078125, + 0.0017171421875, + 0.00177334034375, + 0.00177857465625, + 0.00178308003125, + 0.00179983578125 + ] + }, + "completed": true, + "percentSlower": 2.67 + }, + { + "name": "decrypt 24 KiB of data", + "ops": 636, + "margin": 0.42, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 89, + "promise": true, + "details": { + "min": 0.0015329758787878786, + "max": 0.0017158028484848486, + "mean": 0.001573547268045625, + "median": 0.0015665490303030302, + "standardDeviation": 0.00003168925477311074, + "marginOfError": 0.0000065837464041818465, + "relativeMarginOfError": 0.41840156555061625, + "standardErrorOfMean": 0.000003359054287847881, + "sampleVariance": 1.0042088680751217e-9, + "sampleResults": [ + 0.0015329758787878786, + 0.0015365547575757576, + 0.0015373541515151514, + 0.0015390394848484848, + 0.0015395434545454546, + 0.001539734393939394, + 0.0015397705454545454, + 0.0015400805454545453, + 0.0015405729696969697, + 0.0015412281515151515, + 0.0015412934242424242, + 0.0015421195454545455, + 0.0015429161818181817, + 0.0015444117272727272, + 0.0015451033636363636, + 0.001545352606060606, + 0.0015455013636363638, + 0.0015463229393939393, + 0.0015465667272727274, + 0.001547745909090909, + 0.0015484873333333332, + 0.0015486221515151515, + 0.0015494127272727273, + 0.0015495958181818183, + 0.0015499935151515151, + 0.001550541515151515, + 0.001551106818181818, + 0.0015514113333333333, + 0.0015532080606060605, + 0.001553371696969697, + 0.001554119515151515, + 0.001555510606060606, + 0.0015555546363636363, + 0.0015575320303030302, + 0.0015586532424242425, + 0.0015598430606060605, + 0.001560648212121212, + 0.0015606539696969696, + 0.0015626944848484848, + 0.00156390178125, + 0.0015642155757575758, + 0.00156470546875, + 0.0015654147878787878, + 0.0015655001212121211, + 0.0015665490303030302, + 0.001569366212121212, + 0.0015713848787878787, + 0.0015713894242424243, + 0.001571976909090909, + 0.0015720716363636365, + 0.0015731585454545453, + 0.0015735040303030304, + 0.0015738452727272726, + 0.001575692393939394, + 0.0015767325757575757, + 0.0015790539393939393, + 0.0015815987272727273, + 0.0015816248484848486, + 0.001582279121212121, + 0.001583876090909091, + 0.0015841031818181817, + 0.0015867339090909092, + 0.001587441606060606, + 0.0015878317575757576, + 0.0015887137272727273, + 0.0015887155454545453, + 0.0015895376969696968, + 0.0015895768484848485, + 0.001590211696969697, + 0.001591097303030303, + 0.0015916477272727271, + 0.0015943789696969697, + 0.0015948195151515151, + 0.0015954476363636363, + 0.0015984900909090907, + 0.0015986871212121214, + 0.0016041522727272726, + 0.0016041662727272726, + 0.0016078158787878787, + 0.0016131957575757575, + 0.0016147235151515152, + 0.0016153674545454546, + 0.0016167199999999999, + 0.0016210506363636364, + 0.0016225042727272727, + 0.0016354539090909091, + 0.001661301303030303, + 0.0016630281818181818, + 0.0017158028484848486 + ] + }, + "completed": true, + "percentSlower": 0 + }, + { + "name": "encrypt 24 KiB of data with workers", + "ops": 316, + "margin": 0.82, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 82, + "promise": true, + "details": { + "min": 0.002961602722222222, + "max": 0.0035349866875, + "mean": 0.00316955689809501, + "median": 0.0031395781666666667, + "standardDeviation": 0.00011947777302003134, + "marginOfError": 0.000025860461100987324, + "relativeMarginOfError": 0.8159014629625412, + "standardErrorOfMean": 0.000013194112806626187, + "sampleVariance": 1.4274938245826129e-8, + "sampleResults": [ + 0.002961602722222222, + 0.002964177705882353, + 0.0029688477058823527, + 0.0029947159999999997, + 0.003005677722222222, + 0.0030263169411764703, + 0.0030304583529411765, + 0.0030376905555555556, + 0.003041835705882353, + 0.0030451061666666667, + 0.003046590588235294, + 0.0030570632222222224, + 0.0030635455882352942, + 0.0030659837647058824, + 0.0030726677222222224, + 0.0030737914705882352, + 0.003073821055555556, + 0.0030742084444444445, + 0.003074730555555556, + 0.003083152611111111, + 0.003083675277777778, + 0.0030858649444444448, + 0.003086050277777778, + 0.003088318294117647, + 0.0030904731111111115, + 0.003094348166666667, + 0.0031047411176470586, + 0.0031054141666666665, + 0.003107324388888889, + 0.003109214941176471, + 0.0031143534705882353, + 0.0031158455555555555, + 0.0031165925, + 0.0031202351764705884, + 0.003123377, + 0.003124435111111111, + 0.003125419777777778, + 0.003125730823529412, + 0.003134237, + 0.003134513611111111, + 0.003138960888888889, + 0.0031401954444444445, + 0.0031562827647058822, + 0.003164279117647059, + 0.0031646389444444445, + 0.0031751360000000003, + 0.003178441117647059, + 0.003188036882352941, + 0.0031958891666666665, + 0.003198619277777778, + 0.0032013294375, + 0.0032015403888888887, + 0.003202368, + 0.003202484823529412, + 0.003206612647058824, + 0.003206995722222222, + 0.003211699611111111, + 0.0032162109444444447, + 0.003216666411764706, + 0.003220247882352941, + 0.003224856111111111, + 0.0032254647647058828, + 0.003228547, + 0.003236701833333333, + 0.0032458959444444445, + 0.003255475722222222, + 0.003270991722222222, + 0.0032771979375, + 0.0032806608823529415, + 0.003295268722222222, + 0.0033021233888888887, + 0.003322118444444444, + 0.0033295698823529413, + 0.0033491940555555556, + 0.0033501213333333333, + 0.0033720454375, + 0.0033771457647058826, + 0.003377317823529412, + 0.003420217277777778, + 0.003429883176470588, + 0.0034590969444444446, + 0.0035349866875 + ] + }, + "completed": true, + "percentSlower": 50.31 + }, + { + "name": "decrypt 24 KiB of data with workers", + "ops": 361, + "margin": 1.4, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 85, + "promise": true, + "details": { + "min": 0.00262030305, + "max": 0.0037599725263157894, + "mean": 0.0027728064951083606, + "median": 0.0027105910526315793, + "standardDeviation": 0.00018229622521443898, + "marginOfError": 0.00003875469152249348, + "relativeMarginOfError": 1.3976702518139101, + "standardErrorOfMean": 0.00001977280179719055, + "sampleVariance": 3.323191372743346e-8, + "sampleResults": [ + 0.00262030305, + 0.0026361555, + 0.0026370625263157895, + 0.002637986894736842, + 0.002646864684210526, + 0.00265409145, + 0.0026552767500000003, + 0.0026598373, + 0.00266140325, + 0.0026700265500000002, + 0.0026706167, + 0.002671575684210526, + 0.0026718066315789472, + 0.002672599736842105, + 0.00267285045, + 0.0026728934999999997, + 0.002673685, + 0.00267386285, + 0.002680561105263158, + 0.00268063965, + 0.0026806587, + 0.00268153735, + 0.0026826635000000002, + 0.00268380615, + 0.00268390835, + 0.0026847458421052632, + 0.0026870528, + 0.0026872060999999997, + 0.00268723665, + 0.00268883265, + 0.002690448263157895, + 0.00269120065, + 0.0026928042105263156, + 0.00269384965, + 0.0026945991, + 0.00269727765, + 0.0027002098421052634, + 0.00270144805, + 0.00270267435, + 0.0027067495789473684, + 0.00270833, + 0.0027090003, + 0.0027105910526315793, + 0.0027171271052631577, + 0.00271807295, + 0.002718382, + 0.002723724842105263, + 0.0027239741, + 0.0027267588499999998, + 0.00272747425, + 0.002730325263157895, + 0.0027321044999999997, + 0.0027324692, + 0.00273730135, + 0.0027443852000000003, + 0.00276121005, + 0.00276431645, + 0.002767479684210526, + 0.0027686651, + 0.0027804584, + 0.0027858757, + 0.00278632505, + 0.0027969470999999997, + 0.0028032868947368422, + 0.0028036096315789474, + 0.002812253315789474, + 0.0028204846, + 0.00282122405, + 0.002822707842105263, + 0.002825350736842105, + 0.002848309894736842, + 0.002861529105263158, + 0.0028633938, + 0.002881260157894737, + 0.00288950815, + 0.00292307215, + 0.002938323, + 0.002942806052631579, + 0.0029684687368421053, + 0.0029693056315789473, + 0.0029985224736842103, + 0.0030257794000000003, + 0.0034870273684210525, + 0.0035120493684210525, + 0.0037599725263157894 + ] + }, + "completed": true, + "percentSlower": 43.24 + } + ], + "fastest": { + "name": "decrypt 24 KiB of data", + "index": 1 + }, + "slowest": { + "name": "encrypt 24 KiB of data with workers", + "index": 2 + } +} \ No newline at end of file diff --git a/benches/results/crypto_24KiB_metrics.txt b/benches/results/crypto_24KiB_metrics.txt new file mode 100644 index 00000000..7a96a4ed --- /dev/null +++ b/benches/results/crypto_24KiB_metrics.txt @@ -0,0 +1,17 @@ +# TYPE crypto_24KiB_ops gauge +crypto_24KiB_ops{name="encrypt 24 KiB of data"} 619 +crypto_24KiB_ops{name="decrypt 24 KiB of data"} 636 +crypto_24KiB_ops{name="encrypt 24 KiB of data with workers"} 316 +crypto_24KiB_ops{name="decrypt 24 KiB of data with workers"} 361 + +# TYPE crypto_24KiB_margin gauge +crypto_24KiB_margin{name="encrypt 24 KiB of data"} 0.54 +crypto_24KiB_margin{name="decrypt 24 KiB of data"} 0.42 +crypto_24KiB_margin{name="encrypt 24 KiB of data with workers"} 0.82 +crypto_24KiB_margin{name="decrypt 24 KiB of data with workers"} 1.4 + +# TYPE crypto_24KiB_samples counter +crypto_24KiB_samples{name="encrypt 24 KiB of data"} 89 +crypto_24KiB_samples{name="decrypt 24 KiB of data"} 89 +crypto_24KiB_samples{name="encrypt 24 KiB of data with workers"} 82 +crypto_24KiB_samples{name="decrypt 24 KiB of data with workers"} 85 diff --git a/benches/results/crypto_32KiB.chart.html b/benches/results/crypto_32KiB.chart.html new file mode 100644 index 00000000..a1479aa0 --- /dev/null +++ b/benches/results/crypto_32KiB.chart.html @@ -0,0 +1,116 @@ + + + + + + + + crypto_32KiB + + + +
+ +
+ + + \ No newline at end of file diff --git a/benches/results/crypto_32KiB.json b/benches/results/crypto_32KiB.json new file mode 100644 index 00000000..5d3a4ffb --- /dev/null +++ b/benches/results/crypto_32KiB.json @@ -0,0 +1,474 @@ +{ + "name": "crypto_32KiB", + "date": "2022-07-28T06:04:32.027Z", + "version": "3.5.3", + "results": [ + { + "name": "encrypt 32 KiB of data", + "ops": 468, + "margin": 1.5, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 87, + "promise": true, + "details": { + "min": 0.0020572042, + "max": 0.0029829786400000003, + "mean": 0.0021352787997892717, + "median": 0.0020894576, + "standardDeviation": 0.00015253904948759933, + "marginOfError": 0.000032053649293548, + "relativeMarginOfError": 1.5011458595810223, + "standardErrorOfMean": 0.000016353902700789793, + "sampleVariance": 2.3268161618580282e-8, + "sampleResults": [ + 0.0020572042, + 0.0020574462800000003, + 0.0020578602400000002, + 0.00205971656, + 0.00206025716, + 0.00206279876, + 0.00206292424, + 0.00206344524, + 0.0020649272, + 0.00206528428, + 0.00206556764, + 0.0020667486400000002, + 0.00206702676, + 0.00206733052, + 0.0020689576400000002, + 0.0020691556, + 0.0020695707599999997, + 0.00206972948, + 0.00206986092, + 0.00207015028, + 0.00207016592, + 0.0020702264000000002, + 0.00207140508, + 0.0020715978400000002, + 0.0020717905999999998, + 0.00207325456, + 0.00207377956, + 0.0020740112, + 0.0020742861200000002, + 0.0020746251600000003, + 0.00207628748, + 0.00207662132, + 0.00207719764, + 0.00207763764, + 0.0020777174, + 0.00207885072, + 0.00208007584, + 0.00208095072, + 0.0020814156, + 0.00208146008, + 0.00208250524, + 0.00208345748, + 0.0020856496, + 0.0020894576, + 0.0020906166, + 0.00209186012, + 0.0020920665199999997, + 0.00209219996, + 0.0020930456, + 0.0020964352, + 0.00209757096, + 0.00210001436, + 0.0021011092400000002, + 0.0021048569583333333, + 0.0021056394, + 0.00210660444, + 0.00210726328, + 0.0021074836799999997, + 0.002108389, + 0.00210866792, + 0.0021139429166666668, + 0.0021139936, + 0.0021151241200000003, + 0.00211638612, + 0.00211669108, + 0.00212523884, + 0.0021271568800000002, + 0.00212755204, + 0.0021306395, + 0.0021350436249999998, + 0.00213814732, + 0.00214611996, + 0.0021575766666666668, + 0.0021594143199999997, + 0.002166362041666667, + 0.00217629424, + 0.0021837495416666664, + 0.002207200125, + 0.0022301831666666667, + 0.00223777852, + 0.00224781712, + 0.0022490454, + 0.0024359012, + 0.00264466964, + 0.00270428396, + 0.00272575256, + 0.0029829786400000003 + ] + }, + "completed": true, + "percentSlower": 3.31 + }, + { + "name": "decrypt 32 KiB of data", + "ops": 484, + "margin": 0.36, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 90, + "promise": true, + "details": { + "min": 0.00202288408, + "max": 0.0022137318, + "mean": 0.0020672814440000006, + "median": 0.0020567887999999998, + "standardDeviation": 0.00003582422579370005, + "marginOfError": 0.000007401361729456039, + "relativeMarginOfError": 0.3580239038538981, + "standardErrorOfMean": 0.000003776204964008183, + "sampleVariance": 1.283375153718004e-9, + "sampleResults": [ + 0.00202288408, + 0.00202382704, + 0.0020250513600000002, + 0.00202534876, + 0.00202797328, + 0.0020280234, + 0.0020291054399999998, + 0.00203006284, + 0.00203158732, + 0.0020326666, + 0.0020326874, + 0.00203336032, + 0.00203485352, + 0.00203490444, + 0.00203671948, + 0.0020398678, + 0.00204025012, + 0.00204141392, + 0.00204217896, + 0.0020434498, + 0.00204383288, + 0.0020440473200000002, + 0.00204445248, + 0.00204550528, + 0.0020455353200000003, + 0.00204659412, + 0.0020470522, + 0.00204792748, + 0.00204803004, + 0.00204807052, + 0.00204837388, + 0.0020494563599999997, + 0.0020517771200000002, + 0.00205238908, + 0.0020526203200000002, + 0.00205328, + 0.00205391116, + 0.00205444176, + 0.0020545608000000003, + 0.0020550737599999997, + 0.0020551246400000002, + 0.0020551852000000002, + 0.00205555228, + 0.00205644036, + 0.00205656176, + 0.00205701584, + 0.00205963356, + 0.00205968408, + 0.00206132156, + 0.0020616454, + 0.00206211028, + 0.00206267932, + 0.00206415492, + 0.00206528908, + 0.00206574036, + 0.00206743836, + 0.00206880692, + 0.0020696974000000003, + 0.00207209836, + 0.0020725448, + 0.00207281892, + 0.00207363844, + 0.0020739835200000003, + 0.00207501064, + 0.00207843556, + 0.00207872208, + 0.0020792189999999998, + 0.00207923628, + 0.00208075476, + 0.0020830122, + 0.00208345748, + 0.0020856620000000003, + 0.00209187416, + 0.0020936575199999997, + 0.0020938847999999997, + 0.0020940126, + 0.00209898076, + 0.0020999895199999997, + 0.0021045978, + 0.00210657836, + 0.0021098008400000003, + 0.00211281176, + 0.00211552488, + 0.00212006028, + 0.0021249395200000003, + 0.00212558512, + 0.00213468632, + 0.00216833156, + 0.00221045924, + 0.0022137318 + ] + }, + "completed": true, + "percentSlower": 0 + }, + { + "name": "encrypt 32 KiB of data with workers", + "ops": 265, + "margin": 1.23, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 82, + "promise": true, + "details": { + "min": 0.003513001133333333, + "max": 0.004651775466666667, + "mean": 0.0037766186491289214, + "median": 0.003721274835714286, + "standardDeviation": 0.00021435141009398982, + "marginOfError": 0.00004639546053263014, + "relativeMarginOfError": 1.2284920677212476, + "standardErrorOfMean": 0.00002367115333297456, + "sampleVariance": 4.59465270092818e-8, + "sampleResults": [ + 0.003513001133333333, + 0.0035462987333333335, + 0.0035521044, + 0.0035565922666666665, + 0.0035568894, + 0.0035590903333333336, + 0.0035625353999999996, + 0.0035625568, + 0.0035663834, + 0.003571107, + 0.003572497, + 0.003579013933333333, + 0.003579692533333333, + 0.003583308133333333, + 0.003587178066666667, + 0.0035871888, + 0.0035877545333333335, + 0.0035919731333333336, + 0.0035992969333333335, + 0.0036118286666666664, + 0.0036121559333333335, + 0.0036124565333333337, + 0.003615530333333333, + 0.0036185707333333335, + 0.0036265485333333335, + 0.0036314370666666665, + 0.0036323408000000002, + 0.0036352062, + 0.0036436969333333335, + 0.0036461649285714284, + 0.0036521516, + 0.0036765444, + 0.0036928766, + 0.003693158785714286, + 0.0036937002, + 0.003694642357142857, + 0.003695416642857143, + 0.0037076218666666663, + 0.003708241, + 0.003710627533333333, + 0.0037205256000000003, + 0.0037220240714285714, + 0.0037221714, + 0.0037238345333333333, + 0.003725376066666667, + 0.0037643551333333336, + 0.0037824126, + 0.0037849807999999997, + 0.003806235, + 0.0038069657333333336, + 0.0038186304666666666, + 0.0038237514666666665, + 0.0038249377333333333, + 0.003828767, + 0.0038318895333333334, + 0.0038386460714285716, + 0.003842386, + 0.0038633650666666667, + 0.003863571466666667, + 0.0038824618666666666, + 0.0038898217999999997, + 0.0038919838666666663, + 0.003892697133333333, + 0.0039046718666666666, + 0.0039054085333333336, + 0.0039096452, + 0.0039166645333333335, + 0.003916967785714286, + 0.0039436482, + 0.003953994466666667, + 0.0039741686666666665, + 0.003977575, + 0.0040270720000000005, + 0.004027460733333333, + 0.004036463785714286, + 0.004067346133333333, + 0.004093726733333333, + 0.0041008308, + 0.004145904666666667, + 0.004350840999999999, + 0.004501393666666667, + 0.004651775466666667 + ] + }, + "completed": true, + "percentSlower": 45.25 + }, + { + "name": "decrypt 32 KiB of data with workers", + "ops": 308, + "margin": 0.67, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 84, + "promise": true, + "details": { + "min": 0.0030703053529411765, + "max": 0.003598853176470588, + "mean": 0.0032426703089985997, + "median": 0.0032091385, + "standardDeviation": 0.0001015509364350195, + "marginOfError": 0.000021717026478332536, + "relativeMarginOfError": 0.6697266267886229, + "standardErrorOfMean": 0.000011080115550169661, + "sampleVariance": 1.031259269082937e-8, + "sampleResults": [ + 0.0030703053529411765, + 0.003092023470588235, + 0.0031108809411764704, + 0.0031371370588235297, + 0.003137635588235294, + 0.003145268294117647, + 0.0031454380588235293, + 0.0031463503529411767, + 0.0031489588235294116, + 0.0031499035294117648, + 0.003153483235294118, + 0.0031571389999999998, + 0.00315750025, + 0.0031580848823529414, + 0.0031590467647058824, + 0.003159456294117647, + 0.0031596920588235294, + 0.003160472352941177, + 0.003160909647058823, + 0.003161603294117647, + 0.003165211294117647, + 0.003171038823529412, + 0.0031712126470588237, + 0.003172410823529412, + 0.0031726807647058826, + 0.0031747316470588237, + 0.003175002764705882, + 0.00317907475, + 0.003181535625, + 0.003182977294117647, + 0.003184439411764706, + 0.003184569117647059, + 0.003186233875, + 0.003191774470588235, + 0.0031973833529411765, + 0.003199256294117647, + 0.003200816882352941, + 0.003201839625, + 0.0032024559411764704, + 0.003202536647058824, + 0.0032049488235294118, + 0.0032086481764705883, + 0.0032096288235294117, + 0.003210715, + 0.0032127165, + 0.0032135123125, + 0.003220895470588235, + 0.00322299025, + 0.00322593775, + 0.003238837588235294, + 0.0032453823529411765, + 0.0032463653529411765, + 0.003249411705882353, + 0.0032511190588235296, + 0.0032515357647058822, + 0.003251803294117647, + 0.0032560991875, + 0.0032629284705882355, + 0.003262999176470588, + 0.0033000084375, + 0.003302476235294118, + 0.0033034150588235295, + 0.003305843764705882, + 0.0033073379375, + 0.003316977117647059, + 0.0033219418235294115, + 0.0033230674705882353, + 0.003330769117647059, + 0.0033352534705882353, + 0.0033479492352941173, + 0.0033526923529411767, + 0.0033578963529411767, + 0.0033679824705882353, + 0.0033689324705882353, + 0.0033776902352941176, + 0.0033851448823529412, + 0.003402914411764706, + 0.003415660882352941, + 0.00341770975, + 0.0034230159411764707, + 0.0034240944117647056, + 0.0034294457058823527, + 0.003552286882352941, + 0.003598853176470588 + ] + }, + "completed": true, + "percentSlower": 36.36 + } + ], + "fastest": { + "name": "decrypt 32 KiB of data", + "index": 1 + }, + "slowest": { + "name": "encrypt 32 KiB of data with workers", + "index": 2 + } +} \ No newline at end of file diff --git a/benches/results/crypto_32KiB_metrics.txt b/benches/results/crypto_32KiB_metrics.txt new file mode 100644 index 00000000..44ec010e --- /dev/null +++ b/benches/results/crypto_32KiB_metrics.txt @@ -0,0 +1,17 @@ +# TYPE crypto_32KiB_ops gauge +crypto_32KiB_ops{name="encrypt 32 KiB of data"} 468 +crypto_32KiB_ops{name="decrypt 32 KiB of data"} 484 +crypto_32KiB_ops{name="encrypt 32 KiB of data with workers"} 265 +crypto_32KiB_ops{name="decrypt 32 KiB of data with workers"} 308 + +# TYPE crypto_32KiB_margin gauge +crypto_32KiB_margin{name="encrypt 32 KiB of data"} 1.5 +crypto_32KiB_margin{name="decrypt 32 KiB of data"} 0.36 +crypto_32KiB_margin{name="encrypt 32 KiB of data with workers"} 1.23 +crypto_32KiB_margin{name="decrypt 32 KiB of data with workers"} 0.67 + +# TYPE crypto_32KiB_samples counter +crypto_32KiB_samples{name="encrypt 32 KiB of data"} 87 +crypto_32KiB_samples{name="decrypt 32 KiB of data"} 90 +crypto_32KiB_samples{name="encrypt 32 KiB of data with workers"} 82 +crypto_32KiB_samples{name="decrypt 32 KiB of data with workers"} 84 diff --git a/benches/results/db_1KiB.chart.html b/benches/results/db_1KiB.chart.html new file mode 100644 index 00000000..e998fadd --- /dev/null +++ b/benches/results/db_1KiB.chart.html @@ -0,0 +1,116 @@ + + + + + + + + db_1KiB + + + +
+ +
+ + + \ No newline at end of file diff --git a/benches/results/db_1KiB.json b/benches/results/db_1KiB.json new file mode 100644 index 00000000..32b499b5 --- /dev/null +++ b/benches/results/db_1KiB.json @@ -0,0 +1,932 @@ +{ + "name": "db_1KiB", + "date": "2022-07-28T06:06:07.786Z", + "version": "3.5.3", + "results": [ + { + "name": "get 1 KiB of data", + "ops": 5962, + "margin": 1.01, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 82, + "promise": true, + "details": { + "min": 0.00016080536012861736, + "max": 0.00020643248449612404, + "mean": 0.00016773275429835793, + "median": 0.00016452809163987139, + "standardDeviation": 0.000007809267509444806, + "marginOfError": 0.0000016902830840456237, + "relativeMarginOfError": 1.0077239183940183, + "standardErrorOfMean": 8.62389328594706e-7, + "sampleVariance": 6.098465903407029e-11, + "sampleResults": [ + 0.00016080536012861736, + 0.00016109374919614147, + 0.0001612470610932476, + 0.00016157305144694534, + 0.00016170022115384616, + 0.00016178563665594854, + 0.00016189420257234726, + 0.00016194745337620579, + 0.00016196407717041801, + 0.00016202718649517686, + 0.00016207592926045016, + 0.00016209076129032257, + 0.0001621227041800643, + 0.00016227510967741936, + 0.00016229276848874597, + 0.00016238177813504822, + 0.0001624534919614148, + 0.00016245683922829583, + 0.00016246779742765273, + 0.0001625099646302251, + 0.0001625288424437299, + 0.0001625616516129032, + 0.0001627255498392283, + 0.0001627316806451613, + 0.00016275045016077172, + 0.00016275602572347268, + 0.00016276904180064308, + 0.00016288781672025722, + 0.0001629364308681672, + 0.0001631362958199357, + 0.0001633338870967742, + 0.00016341577243589742, + 0.00016351360128617363, + 0.00016356814147909968, + 0.0001635917877813505, + 0.0001636992572347267, + 0.000163968961414791, + 0.00016403606752411577, + 0.00016413586816720256, + 0.0001642796109324759, + 0.000164516077170418, + 0.00016454010610932477, + 0.00016488999356913185, + 0.00016495857236842104, + 0.00016529597427652733, + 0.00016547293247588425, + 0.00016551686513157897, + 0.0001663023118971061, + 0.00016635604934210526, + 0.0001663809064516129, + 0.00016647752960526315, + 0.00016674398713826367, + 0.00016738668421052632, + 0.0001680938092105263, + 0.00016853886184210526, + 0.00016923052090032155, + 0.00016930503536977492, + 0.00016963747811447812, + 0.00017008704713804713, + 0.00017009035016835015, + 0.00017032545337620578, + 0.00017064119191919193, + 0.00017081673311897106, + 0.00017091673311897106, + 0.00017115192255892257, + 0.0001714707395498392, + 0.00017197136334405144, + 0.00017213330868167203, + 0.0001723823344051447, + 0.00017403046623794212, + 0.0001742682154340836, + 0.000174298077170418, + 0.00017458718835616438, + 0.0001779551245791246, + 0.00017842234083601286, + 0.00018231783870967743, + 0.0001826614265232975, + 0.0001829847956989247, + 0.00018318686021505376, + 0.0001859401301369863, + 0.00019087814695340502, + 0.00020643248449612404 + ] + }, + "completed": true, + "percentSlower": 0 + }, + { + "name": "put 1 KiB of data", + "ops": 3005, + "margin": 0.79, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 84, + "promise": true, + "details": { + "min": 0.00032067866455696205, + "max": 0.00039797594039735104, + "mean": 0.0003328022176572083, + "median": 0.00033148831209657136, + "standardDeviation": 0.000012275896308856403, + "marginOfError": 0.0000026252437894089613, + "relativeMarginOfError": 0.7888300167858272, + "standardErrorOfMean": 0.0000013394100966372252, + "sampleVariance": 1.5069763018579425e-10, + "sampleResults": [ + 0.00032067866455696205, + 0.00032078918987341775, + 0.00032089920253164557, + 0.00032108874050632913, + 0.0003212309683544304, + 0.0003213160696202532, + 0.00032141220253164557, + 0.0003217353417721519, + 0.00032206101898734176, + 0.0003221083291139241, + 0.0003222803670886076, + 0.0003222895506329114, + 0.00032248936708860763, + 0.0003225062911392405, + 0.0003225480886075949, + 0.000322603, + 0.000323086, + 0.00032322353797468355, + 0.0003232804810126582, + 0.00032366183870967744, + 0.0003237046193548387, + 0.00032398770253164557, + 0.00032408954430379746, + 0.00032442923417721516, + 0.00032483365584415585, + 0.00032518197402597404, + 0.00032527482278481014, + 0.000325299170886076, + 0.0003253979548387097, + 0.00032549409493670884, + 0.0003255300569620253, + 0.00032677430379746835, + 0.00032678632258064516, + 0.00032692425806451613, + 0.000327429082278481, + 0.0003275793670886076, + 0.0003281055506329114, + 0.0003287206193548387, + 0.00032978918354430376, + 0.00033051917088607594, + 0.0003313031835443038, + 0.00033142823178807944, + 0.0003315483924050633, + 0.0003315709683544304, + 0.00033179681578947366, + 0.0003319220322580645, + 0.0003330648734177215, + 0.00033331927848101266, + 0.00033332423225806453, + 0.0003350970632911393, + 0.00033547003225806453, + 0.00033563035443037975, + 0.00033593313924050634, + 0.00033615104000000003, + 0.00033621690506329115, + 0.00033621703797468355, + 0.0003362355506329114, + 0.00033641253164556965, + 0.0003367200063291139, + 0.00033709711392405066, + 0.00033727965584415585, + 0.00033818214556962024, + 0.00033828360126582276, + 0.0003385423797468355, + 0.0003389268636363636, + 0.000339003, + 0.0003395717974683544, + 0.000339638753164557, + 0.0003399272151898734, + 0.00034000698734177215, + 0.00034007426582278484, + 0.00034031706962025317, + 0.0003408204240506329, + 0.0003416436265822785, + 0.0003417692405063291, + 0.00034234704430379745, + 0.00034311406329113925, + 0.00034311596202531646, + 0.00034324526582278484, + 0.00034371038607594937, + 0.00034518798734177214, + 0.0003738206139240506, + 0.0003752842721518987, + 0.00039797594039735104 + ] + }, + "completed": true, + "percentSlower": 49.6 + }, + { + "name": "put zero data", + "ops": 3814, + "margin": 0.73, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 88, + "promise": true, + "details": { + "min": 0.0002526860909090909, + "max": 0.00029946881052631577, + "mean": 0.0002621716493133288, + "median": 0.0002579861257296584, + "standardDeviation": 0.000009211262594195676, + "marginOfError": 0.0000019245708279497136, + "relativeMarginOfError": 0.7340880804581598, + "standardErrorOfMean": 9.819238918110783e-7, + "sampleVariance": 8.484735857922846e-11, + "sampleResults": [ + 0.0002526860909090909, + 0.00025292589393939395, + 0.0002534713181818182, + 0.00025367822222222225, + 0.0002537235101010101, + 0.00025385416666666666, + 0.00025394205555555555, + 0.0002539885050505051, + 0.0002542566363636364, + 0.00025430693434343437, + 0.00025435263131313134, + 0.00025438698484848483, + 0.0002544256464646464, + 0.0002544898080808081, + 0.00025475394444444445, + 0.000254876904040404, + 0.0002549583686868687, + 0.00025497891414141415, + 0.0002550004696969697, + 0.0002550016818181818, + 0.00025501514646464644, + 0.0002550575, + 0.0002550701464646465, + 0.000255111648241206, + 0.0002551574848484848, + 0.0002551652777777778, + 0.000255176005050505, + 0.00025530655555555556, + 0.00025537173232323233, + 0.00025538301515151517, + 0.00025555910606060603, + 0.0002556279191919192, + 0.00025572011616161616, + 0.00025577208585858584, + 0.00025593177777777777, + 0.00025595940404040405, + 0.0002560047424242424, + 0.0002561326616161616, + 0.00025662526262626266, + 0.00025679097474747475, + 0.0002571869292929293, + 0.0002577107474747475, + 0.000257968303030303, + 0.0002579762110552764, + 0.0002579960404040404, + 0.000258014, + 0.00025943663636363636, + 0.0002599182575757576, + 0.000261611505050505, + 0.00026166226262626266, + 0.000262389696969697, + 0.00026246322222222223, + 0.00026301952525252525, + 0.0002642365757575757, + 0.0002642674898989899, + 0.0002642800404040404, + 0.0002643403585858586, + 0.00026496360606060606, + 0.0002650724494949495, + 0.0002656052727272727, + 0.00026594434848484845, + 0.00026627401010101014, + 0.00026655494949494947, + 0.0002669408787878788, + 0.00026726199494949495, + 0.0002672995404040404, + 0.00026763016666666667, + 0.00026786991414141416, + 0.00026805404545454545, + 0.00026834383838383836, + 0.0002685235202020202, + 0.0002689986111111111, + 0.0002690557373737374, + 0.00026947936868686867, + 0.0002700871818181818, + 0.00027195762631578946, + 0.0002739726161616161, + 0.00027460071717171715, + 0.00027465860606060605, + 0.0002748555454545455, + 0.00027510217171717173, + 0.00027575481818181816, + 0.00027716364646464644, + 0.00027742646969696974, + 0.00027771974747474746, + 0.0002778398787878788, + 0.00029615, + 0.00029946881052631577 + ] + }, + "completed": true, + "percentSlower": 36.03 + }, + { + "name": "put zero data then del", + "ops": 3500, + "margin": 0.85, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 87, + "promise": true, + "details": { + "min": 0.00027527932417582417, + "max": 0.0003357617197802198, + "mean": 0.0002857218050716666, + "median": 0.000282124521978022, + "standardDeviation": 0.000011615015531911186, + "marginOfError": 0.0000024407103338431407, + "relativeMarginOfError": 0.8542261355345091, + "standardErrorOfMean": 0.0000012452603744097657, + "sampleVariance": 1.349085858065381e-10, + "sampleResults": [ + 0.00027527932417582417, + 0.0002756341153846154, + 0.0002758366978021978, + 0.0002764507637362637, + 0.0002768939120879121, + 0.00027740163186813186, + 0.0002776292637362637, + 0.00027776831868131865, + 0.00027778914917127073, + 0.000277897021978022, + 0.0002779247637362637, + 0.0002779260879120879, + 0.00027792636263736264, + 0.0002780391043956044, + 0.0002781011978021978, + 0.0002781048846153846, + 0.0002782188351648352, + 0.0002782776868131868, + 0.0002783521648351648, + 0.0002784073791208791, + 0.0002784615494505495, + 0.00027846254395604394, + 0.0002785852472527472, + 0.00027859680769230766, + 0.00027864976373626375, + 0.0002789953076923077, + 0.0002790193076923077, + 0.0002791874285714286, + 0.00027923846153846154, + 0.0002793944120879121, + 0.0002797735530726257, + 0.0002799441318681319, + 0.0002802693076923077, + 0.00028086851648351647, + 0.000280889989010989, + 0.0002808969230769231, + 0.0002810567857142857, + 0.00028114613186813183, + 0.0002812465989010989, + 0.0002817927967032967, + 0.00028189073076923075, + 0.0002819477582417583, + 0.0002819706145251397, + 0.000282124521978022, + 0.000282175, + 0.00028233948901098903, + 0.00028240934615384616, + 0.00028243098324022347, + 0.0002825064505494506, + 0.00028264093406593405, + 0.0002827037318435754, + 0.0002827907747252747, + 0.0002831374285714286, + 0.00028357330219780217, + 0.000283670521978022, + 0.00028394059776536314, + 0.0002839609065934066, + 0.00028405283516483515, + 0.00028408333516483515, + 0.00028464368681318684, + 0.00028476665934065937, + 0.0002849522905027933, + 0.00028519086813186815, + 0.00028519874175824176, + 0.00028527058241758244, + 0.0002853639050279329, + 0.0002858232197802198, + 0.0002863095769230769, + 0.0002882089497206704, + 0.0002888631978021978, + 0.0002904521284916201, + 0.000290651279329609, + 0.0002932739615384615, + 0.00029356309497206704, + 0.00029384026815642455, + 0.00029593020111731846, + 0.00029624700558659214, + 0.0002995556033519553, + 0.00030214922346368715, + 0.00030574417877094975, + 0.0003104225934065934, + 0.0003140362849162011, + 0.0003159436740331492, + 0.00031773664835164835, + 0.0003185643131868132, + 0.0003186496923076923, + 0.0003357617197802198 + ] + }, + "completed": true, + "percentSlower": 41.29 + }, + { + "name": "get 1 KiB of data with workers", + "ops": 733, + "margin": 0.5, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 87, + "promise": true, + "details": { + "min": 0.0013011146666666667, + "max": 0.0014603627435897436, + "mean": 0.0013649594249916536, + "median": 0.001357730054054054, + "standardDeviation": 0.00003246032254464516, + "marginOfError": 0.000006821019262258419, + "relativeMarginOfError": 0.4997232252746361, + "standardErrorOfMean": 0.0000034801118684991936, + "sampleVariance": 1.0536725397023987e-9, + "sampleResults": [ + 0.0013011146666666667, + 0.0013209002820512821, + 0.001326417641025641, + 0.0013267906666666668, + 0.0013277169210526316, + 0.0013300152368421053, + 0.001330683923076923, + 0.0013322163076923078, + 0.001332783105263158, + 0.0013329043684210528, + 0.0013330399230769231, + 0.001333522894736842, + 0.0013339408461538462, + 0.0013359559210526315, + 0.0013361111025641025, + 0.0013363777692307693, + 0.0013363796315789473, + 0.001336416, + 0.001336903, + 0.0013374524473684212, + 0.0013390890256410257, + 0.0013407534210526316, + 0.0013411095384615384, + 0.0013418549736842105, + 0.001343528205128205, + 0.0013444011052631578, + 0.0013447433076923076, + 0.0013451712368421052, + 0.0013456787894736842, + 0.0013460552894736843, + 0.0013479296052631578, + 0.0013484459743589743, + 0.0013496141052631578, + 0.001350116657894737, + 0.0013510768205128205, + 0.0013510906315789474, + 0.0013511752307692308, + 0.0013522678205128205, + 0.0013529303333333334, + 0.0013544301025641026, + 0.001356338157894737, + 0.0013566247692307692, + 0.001356779, + 0.001357730054054054, + 0.0013577693513513514, + 0.0013588075135135137, + 0.0013591549487179486, + 0.0013611944594594594, + 0.0013612513947368421, + 0.0013618209210526314, + 0.001361917394736842, + 0.0013623687894736842, + 0.0013627162631578947, + 0.0013642599736842106, + 0.0013693793783783783, + 0.0013693840256410257, + 0.0013699772702702702, + 0.0013715068421052631, + 0.0013723030789473685, + 0.0013737183783783782, + 0.0013746596756756756, + 0.0013760820810810811, + 0.0013766412162162162, + 0.001376880054054054, + 0.0013771566666666666, + 0.0013778055945945947, + 0.0013793607027027027, + 0.0013813248205128204, + 0.0013813937297297298, + 0.0013829371578947369, + 0.0013963920526315788, + 0.0014000317179487178, + 0.0014019976578947368, + 0.001403127947368421, + 0.0014059221025641024, + 0.0014095586216216216, + 0.001409756027027027, + 0.0014175833333333334, + 0.0014189472777777776, + 0.0014210949444444444, + 0.0014259241621621622, + 0.001427993657894737, + 0.0014299567692307692, + 0.0014299763076923077, + 0.001439452157894737, + 0.001445044, + 0.0014603627435897436 + ] + }, + "completed": true, + "percentSlower": 87.71 + }, + { + "name": "put 1 KiB of data with workers", + "ops": 644, + "margin": 0.76, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 82, + "promise": true, + "details": { + "min": 0.0014652948108108109, + "max": 0.0017645453243243243, + "mean": 0.0015528192579461694, + "median": 0.0015399308243243242, + "standardDeviation": 0.00005454467890724044, + "marginOfError": 0.000011805966176738548, + "relativeMarginOfError": 0.7602923596113604, + "standardErrorOfMean": 0.000006023452130989055, + "sampleVariance": 2.97512199709396e-9, + "sampleResults": [ + 0.0014652948108108109, + 0.0014749197837837839, + 0.0014795988918918919, + 0.0014803646756756756, + 0.0014877037027027026, + 0.0014908293243243243, + 0.0014915872432432432, + 0.0014946286756756756, + 0.0014972853243243245, + 0.0014983105135135135, + 0.0014983199729729731, + 0.001499347891891892, + 0.0014997857297297298, + 0.0015038487837837837, + 0.0015092325135135135, + 0.0015095512162162162, + 0.0015098157567567567, + 0.001510471081081081, + 0.001510494891891892, + 0.001511244135135135, + 0.001514452108108108, + 0.0015156312352941177, + 0.0015163397297297298, + 0.0015178000540540541, + 0.0015187556764705882, + 0.0015190513513513514, + 0.0015226303636363637, + 0.0015230912424242424, + 0.0015241431351351352, + 0.0015252834054054053, + 0.0015257302121212122, + 0.0015262852972972973, + 0.0015265855945945947, + 0.0015277464242424244, + 0.0015324466486486487, + 0.001534705810810811, + 0.001538691189189189, + 0.0015390207297297297, + 0.0015391642432432432, + 0.0015392490000000001, + 0.0015393757027027026, + 0.0015404859459459458, + 0.0015436795757575758, + 0.0015466903783783784, + 0.0015479794705882352, + 0.0015492376666666667, + 0.0015500947575757575, + 0.001552095515151515, + 0.0015579267567567567, + 0.001558825818181818, + 0.0015590140303030303, + 0.0015628271081081081, + 0.0015632815151515151, + 0.0015637114864864865, + 0.0015638167575757578, + 0.0015681282424242424, + 0.0015699222424242424, + 0.0015730166486486487, + 0.00157402603125, + 0.0015740873636363635, + 0.0015754202121212122, + 0.001581562424242424, + 0.0015865218181818181, + 0.001589746375, + 0.0015930591875, + 0.0015931398378378377, + 0.0015943578484848484, + 0.0015982797878787878, + 0.001600620909090909, + 0.0016027109117647059, + 0.0016045116216216217, + 0.0016059546060606061, + 0.001608107027027027, + 0.0016135305405405405, + 0.0016236488918918918, + 0.0016305156875, + 0.001656274108108108, + 0.001657190606060606, + 0.001667743891891892, + 0.0016844273125, + 0.001691648837837838, + 0.0017645453243243243 + ] + }, + "completed": true, + "percentSlower": 89.2 + }, + { + "name": "put zero data with workers", + "ops": 692, + "margin": 0.75, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 87, + "promise": true, + "details": { + "min": 0.0013525453513513514, + "max": 0.0016845437567567568, + "mean": 0.001445027116495806, + "median": 0.0014344478378378379, + "standardDeviation": 0.000051417958456624064, + "marginOfError": 0.000010804664204314667, + "relativeMarginOfError": 0.7477135951964695, + "standardErrorOfMean": 0.000005512583777711565, + "sampleVariance": 2.6438064518471178e-9, + "sampleResults": [ + 0.0013525453513513514, + 0.0013878174864864865, + 0.0013893430810810812, + 0.0013914557027027027, + 0.001392816945945946, + 0.0013942943243243243, + 0.0013976485135135134, + 0.0013977397567567567, + 0.0013985423783783783, + 0.0014004205135135135, + 0.0014014481351351353, + 0.0014036615135135135, + 0.0014069523243243243, + 0.0014089044054054055, + 0.001412197918918919, + 0.0014122274324324326, + 0.0014129731891891894, + 0.0014143400810810811, + 0.0014167697837837838, + 0.0014179328108108109, + 0.0014190833783783783, + 0.0014193517297297297, + 0.0014195461351351351, + 0.0014203582162162162, + 0.0014208894864864866, + 0.001420915756756757, + 0.0014228190810810812, + 0.0014235512972972974, + 0.0014250963513513513, + 0.0014262848108108107, + 0.0014268941081081081, + 0.0014277484054054054, + 0.0014284570540540541, + 0.0014286124864864864, + 0.0014291738108108108, + 0.001429530972972973, + 0.0014303525135135136, + 0.001431682054054054, + 0.0014318147567567569, + 0.0014322374324324324, + 0.0014324768108108109, + 0.0014326915405405405, + 0.0014344204864864866, + 0.0014344478378378379, + 0.0014362702162162163, + 0.0014365063243243243, + 0.001437737027027027, + 0.0014383124594594594, + 0.001439086891891892, + 0.001439608135135135, + 0.0014400787297297298, + 0.0014403108108108108, + 0.001440354972972973, + 0.0014415948648648649, + 0.001441703972972973, + 0.0014419108648648649, + 0.0014467015405405406, + 0.0014468897567567567, + 0.0014497400000000001, + 0.001449968810810811, + 0.001450875918918919, + 0.0014514640540540542, + 0.0014518022972972973, + 0.0014519823513513513, + 0.0014526268108108107, + 0.0014527673243243243, + 0.0014536246486486486, + 0.0014572024864864866, + 0.001459093108108108, + 0.0014596067567567569, + 0.001462032945945946, + 0.001462118, + 0.001462923027027027, + 0.0014648304054054055, + 0.0014653773783783785, + 0.0014732414594594595, + 0.0014759593243243243, + 0.0014822701621621621, + 0.001500895108108108, + 0.0015029102972972973, + 0.001504006135135135, + 0.0015142173243243243, + 0.001573608027027027, + 0.0015875706756756757, + 0.0015985941891891891, + 0.0016359716216216215, + 0.0016845437567567568 + ] + }, + "completed": true, + "percentSlower": 88.39 + }, + { + "name": "put zero data then del with workers", + "ops": 686, + "margin": 0.46, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 88, + "promise": true, + "details": { + "min": 0.001400528, + "max": 0.0016057313055555555, + "mean": 0.001457182807765151, + "median": 0.001452214625, + "standardDeviation": 0.000032362803518912234, + "marginOfError": 0.000006761777435637799, + "relativeMarginOfError": 0.4640308271278733, + "standardErrorOfMean": 0.000003449886446753979, + "sampleVariance": 1.047351051603718e-9, + "sampleResults": [ + 0.001400528, + 0.0014014494444444445, + 0.00141520075, + 0.0014184265555555555, + 0.0014189695277777778, + 0.0014194025833333334, + 0.0014199419166666667, + 0.0014203554722222221, + 0.0014207050555555556, + 0.0014211625555555557, + 0.0014229239444444445, + 0.0014230427777777777, + 0.0014237903055555555, + 0.0014271421944444444, + 0.0014339400555555557, + 0.0014348854722222224, + 0.0014359828055555556, + 0.0014386623333333332, + 0.0014390970277777778, + 0.0014396369444444445, + 0.0014416232222222221, + 0.0014420718333333334, + 0.0014422916666666668, + 0.00144241025, + 0.0014429298333333332, + 0.0014432985833333332, + 0.0014436868055555554, + 0.0014437653055555555, + 0.0014445526388888888, + 0.0014449328055555555, + 0.0014450766944444444, + 0.0014454763055555555, + 0.0014455589722222222, + 0.0014463285, + 0.0014464693333333333, + 0.0014467423333333332, + 0.0014467971388888888, + 0.001448441111111111, + 0.001448544361111111, + 0.0014485758055555555, + 0.001451039638888889, + 0.0014512400000000001, + 0.001451713138888889, + 0.001452062388888889, + 0.001452366861111111, + 0.001453210388888889, + 0.0014537302777777776, + 0.0014545315, + 0.0014565956944444444, + 0.0014571497777777778, + 0.0014572115833333334, + 0.00145723775, + 0.0014572819722222222, + 0.0014585499444444445, + 0.0014586095, + 0.0014588268611111111, + 0.001460700138888889, + 0.001460783888888889, + 0.0014608651388888889, + 0.001461044111111111, + 0.0014614365, + 0.0014620465277777777, + 0.0014630576388888889, + 0.0014636072499999999, + 0.0014665765, + 0.0014669608333333333, + 0.0014669672222222222, + 0.0014674286666666668, + 0.0014696019444444446, + 0.0014729321388888888, + 0.0014731002222222222, + 0.0014732182222222223, + 0.0014735738888888889, + 0.0014735803055555556, + 0.0014744205, + 0.0014757869722222222, + 0.0014811209444444444, + 0.0014817632777777779, + 0.0014891016111111112, + 0.0014894581111111111, + 0.0015022325555555556, + 0.0015097367499999998, + 0.0015205463333333334, + 0.0015214867222222222, + 0.0015269423333333335, + 0.0015404951666666668, + 0.001559606861111111, + 0.0016057313055555555 + ] + }, + "completed": true, + "percentSlower": 88.49 + } + ], + "fastest": { + "name": "get 1 KiB of data", + "index": 0 + }, + "slowest": { + "name": "put 1 KiB of data with workers", + "index": 5 + } +} \ No newline at end of file diff --git a/benches/results/db_1KiB_metrics.txt b/benches/results/db_1KiB_metrics.txt new file mode 100644 index 00000000..2ff9552b --- /dev/null +++ b/benches/results/db_1KiB_metrics.txt @@ -0,0 +1,29 @@ +# TYPE db_1KiB_ops gauge +db_1KiB_ops{name="get 1 KiB of data"} 5962 +db_1KiB_ops{name="put 1 KiB of data"} 3005 +db_1KiB_ops{name="put zero data"} 3814 +db_1KiB_ops{name="put zero data then del"} 3500 +db_1KiB_ops{name="get 1 KiB of data with workers"} 733 +db_1KiB_ops{name="put 1 KiB of data with workers"} 644 +db_1KiB_ops{name="put zero data with workers"} 692 +db_1KiB_ops{name="put zero data then del with workers"} 686 + +# TYPE db_1KiB_margin gauge +db_1KiB_margin{name="get 1 KiB of data"} 1.01 +db_1KiB_margin{name="put 1 KiB of data"} 0.79 +db_1KiB_margin{name="put zero data"} 0.73 +db_1KiB_margin{name="put zero data then del"} 0.85 +db_1KiB_margin{name="get 1 KiB of data with workers"} 0.5 +db_1KiB_margin{name="put 1 KiB of data with workers"} 0.76 +db_1KiB_margin{name="put zero data with workers"} 0.75 +db_1KiB_margin{name="put zero data then del with workers"} 0.46 + +# TYPE db_1KiB_samples counter +db_1KiB_samples{name="get 1 KiB of data"} 82 +db_1KiB_samples{name="put 1 KiB of data"} 84 +db_1KiB_samples{name="put zero data"} 88 +db_1KiB_samples{name="put zero data then del"} 87 +db_1KiB_samples{name="get 1 KiB of data with workers"} 87 +db_1KiB_samples{name="put 1 KiB of data with workers"} 82 +db_1KiB_samples{name="put zero data with workers"} 87 +db_1KiB_samples{name="put zero data then del with workers"} 88 diff --git a/benches/results/db_1MiB.chart.html b/benches/results/db_1MiB.chart.html new file mode 100644 index 00000000..73b537b9 --- /dev/null +++ b/benches/results/db_1MiB.chart.html @@ -0,0 +1,116 @@ + + + + + + + + db_1MiB + + + +
+ +
+ + + \ No newline at end of file diff --git a/benches/results/db_1MiB.json b/benches/results/db_1MiB.json new file mode 100644 index 00000000..37355841 --- /dev/null +++ b/benches/results/db_1MiB.json @@ -0,0 +1,324 @@ +{ + "name": "db_1MiB", + "date": "2022-07-28T06:06:56.357Z", + "version": "3.5.3", + "results": [ + { + "name": "get 1 MiB of data", + "ops": 10.5, + "margin": 1.94, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 53, + "promise": true, + "details": { + "min": 0.081764353, + "max": 0.124822489, + "mean": 0.09529153873584906, + "median": 0.094868443, + "standardDeviation": 0.006854947995463158, + "marginOfError": 0.0018455350640916794, + "relativeMarginOfError": 1.936725011029108, + "standardErrorOfMean": 0.0009415995224957548, + "sampleVariance": 0.00004699031202050437, + "sampleResults": [ + 0.081764353, + 0.082214384, + 0.085651213, + 0.086727408, + 0.087523224, + 0.087607322, + 0.088640617, + 0.089282791, + 0.089737049, + 0.09003321, + 0.090278704, + 0.090482339, + 0.092382563, + 0.092581429, + 0.09266182, + 0.092816212, + 0.092890363, + 0.093653646, + 0.094028836, + 0.094180763, + 0.09424204, + 0.09431609, + 0.094467846, + 0.094502442, + 0.094505377, + 0.094741744, + 0.094868443, + 0.094883562, + 0.094985104, + 0.095127143, + 0.095446837, + 0.095640263, + 0.096042114, + 0.096184663, + 0.096504939, + 0.096524275, + 0.09670665, + 0.096806249, + 0.096979406, + 0.097624575, + 0.097698446, + 0.097985699, + 0.098149929, + 0.098222066, + 0.099225684, + 0.099284886, + 0.099375106, + 0.101561351, + 0.103493153, + 0.107068956, + 0.10768457, + 0.10964121, + 0.124822489 + ] + }, + "completed": true, + "percentSlower": 5.41 + }, + { + "name": "put 1 MiB of data", + "ops": 10.7, + "margin": 0.98, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 54, + "promise": true, + "details": { + "min": 0.085379078, + "max": 0.107988144, + "mean": 0.09327049244444445, + "median": 0.0943761625, + "standardDeviation": 0.0034279618194465226, + "marginOfError": 0.0009143135743420983, + "relativeMarginOfError": 0.980281705799612, + "standardErrorOfMean": 0.00046648651752147875, + "sampleVariance": 0.000011750922235583113, + "sampleResults": [ + 0.085379078, + 0.086092518, + 0.086339644, + 0.088910377, + 0.089083113, + 0.08932448, + 0.089388841, + 0.089476827, + 0.089662649, + 0.089917962, + 0.090198221, + 0.090336994, + 0.090792185, + 0.091148879, + 0.091206108, + 0.091367813, + 0.091726171, + 0.092149212, + 0.092425032, + 0.093481521, + 0.093849016, + 0.093980263, + 0.094011653, + 0.094106562, + 0.094123294, + 0.094292544, + 0.094361244, + 0.094391081, + 0.094450494, + 0.094453759, + 0.094509224, + 0.09451745, + 0.094527187, + 0.094535804, + 0.094550563, + 0.094637707, + 0.094646043, + 0.094681731, + 0.094740471, + 0.094744909, + 0.094778424, + 0.094792049, + 0.094810394, + 0.095296563, + 0.095392063, + 0.095421729, + 0.095595539, + 0.095768826, + 0.095970978, + 0.09600359, + 0.096012236, + 0.096110612, + 0.096146821, + 0.107988144 + ] + }, + "completed": true, + "percentSlower": 3.6 + }, + { + "name": "get 1 MiB of data with workers", + "ops": 11.1, + "margin": 1.27, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 56, + "promise": true, + "details": { + "min": 0.080152764, + "max": 0.096797711, + "mean": 0.08974970278571427, + "median": 0.090894533, + "standardDeviation": 0.004353898728791886, + "marginOfError": 0.0011403558137894885, + "relativeMarginOfError": 1.2705956436559946, + "standardErrorOfMean": 0.0005818141907089227, + "sampleVariance": 0.0000189564341405756, + "sampleResults": [ + 0.080152764, + 0.080467109, + 0.080575535, + 0.080709878, + 0.080710539, + 0.084040837, + 0.084888861, + 0.085416969, + 0.085418302, + 0.08543279, + 0.085575228, + 0.08561797, + 0.08572943, + 0.086088249, + 0.0864377, + 0.086755059, + 0.088259104, + 0.08839477, + 0.088730635, + 0.088790409, + 0.089004705, + 0.089147063, + 0.089227375, + 0.089352111, + 0.089521071, + 0.090050843, + 0.090771265, + 0.090819827, + 0.090969239, + 0.09099595, + 0.091224101, + 0.091258537, + 0.091780564, + 0.091909378, + 0.091960414, + 0.09198979, + 0.092128351, + 0.092225375, + 0.092309494, + 0.0924665, + 0.092596015, + 0.092811644, + 0.092948662, + 0.093064181, + 0.093133632, + 0.09323821, + 0.093794381, + 0.093896084, + 0.094158209, + 0.094267516, + 0.094616395, + 0.095340877, + 0.095391211, + 0.09583482, + 0.096789717, + 0.096797711 + ] + }, + "completed": true, + "percentSlower": 0 + }, + { + "name": "put 1 MiB of data with workers", + "ops": 5.3, + "margin": 1.56, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 30, + "promise": true, + "details": { + "min": 0.177669745, + "max": 0.218812841, + "mean": 0.18829568006666664, + "median": 0.188841402, + "standardDeviation": 0.00785648987564051, + "marginOfError": 0.0029333321360483318, + "relativeMarginOfError": 1.5578329439155358, + "standardErrorOfMean": 0.0014343922425664214, + "sampleVariance": 0.00006172443316604182, + "sampleResults": [ + 0.177669745, + 0.17783589, + 0.178866428, + 0.179374108, + 0.17962386, + 0.180092687, + 0.180130609, + 0.181578788, + 0.187206029, + 0.187226256, + 0.187730912, + 0.187752553, + 0.188542617, + 0.188567905, + 0.188835942, + 0.188846862, + 0.189020381, + 0.189389698, + 0.189622458, + 0.189793843, + 0.190221361, + 0.190543491, + 0.190991428, + 0.191030701, + 0.191531228, + 0.192184444, + 0.193065611, + 0.195586025, + 0.197195701, + 0.218812841 + ] + }, + "completed": true, + "percentSlower": 52.25 + } + ], + "fastest": { + "name": "get 1 MiB of data with workers", + "index": 2 + }, + "slowest": { + "name": "put 1 MiB of data with workers", + "index": 3 + } +} \ No newline at end of file diff --git a/benches/results/db_1MiB_metrics.txt b/benches/results/db_1MiB_metrics.txt new file mode 100644 index 00000000..da632201 --- /dev/null +++ b/benches/results/db_1MiB_metrics.txt @@ -0,0 +1,17 @@ +# TYPE db_1MiB_ops gauge +db_1MiB_ops{name="get 1 MiB of data"} 10.5 +db_1MiB_ops{name="put 1 MiB of data"} 10.7 +db_1MiB_ops{name="get 1 MiB of data with workers"} 11.1 +db_1MiB_ops{name="put 1 MiB of data with workers"} 5.3 + +# TYPE db_1MiB_margin gauge +db_1MiB_margin{name="get 1 MiB of data"} 1.94 +db_1MiB_margin{name="put 1 MiB of data"} 0.98 +db_1MiB_margin{name="get 1 MiB of data with workers"} 1.27 +db_1MiB_margin{name="put 1 MiB of data with workers"} 1.56 + +# TYPE db_1MiB_samples counter +db_1MiB_samples{name="get 1 MiB of data"} 53 +db_1MiB_samples{name="put 1 MiB of data"} 54 +db_1MiB_samples{name="get 1 MiB of data with workers"} 56 +db_1MiB_samples{name="put 1 MiB of data with workers"} 30 diff --git a/benches/results/db_24KiB.chart.html b/benches/results/db_24KiB.chart.html new file mode 100644 index 00000000..6249bee1 --- /dev/null +++ b/benches/results/db_24KiB.chart.html @@ -0,0 +1,116 @@ + + + + + + + + db_24KiB + + + +
+ +
+ + + \ No newline at end of file diff --git a/benches/results/db_24KiB.json b/benches/results/db_24KiB.json new file mode 100644 index 00000000..57f9ea54 --- /dev/null +++ b/benches/results/db_24KiB.json @@ -0,0 +1,471 @@ +{ + "name": "db_24KiB", + "date": "2022-07-28T06:06:31.621Z", + "version": "3.5.3", + "results": [ + { + "name": "get 24 KiB of data", + "ops": 599, + "margin": 1.65, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 86, + "promise": true, + "details": { + "min": 0.0015866743125, + "max": 0.0023083844375, + "mean": 0.0016687738363552363, + "median": 0.0016260204375, + "standardDeviation": 0.00013029421522550502, + "marginOfError": 0.00002753797365785847, + "relativeMarginOfError": 1.6501920786344586, + "standardErrorOfMean": 0.000014049986560131874, + "sampleVariance": 1.697658252123022e-8, + "sampleResults": [ + 0.0015866743125, + 0.0015888255625, + 0.00158965309375, + 0.00159118628125, + 0.00159152975, + 0.00159273765625, + 0.00159383690625, + 0.00159504109375, + 0.001595437125, + 0.00159568884375, + 0.001596335375, + 0.00159766446875, + 0.0015980508125, + 0.0015992336875, + 0.00159959028125, + 0.00159983390625, + 0.00159986015625, + 0.001600482, + 0.00160053959375, + 0.001600914375, + 0.00160363296875, + 0.00160420559375, + 0.00160474253125, + 0.00160613265625, + 0.00160625946875, + 0.00160675509375, + 0.0016074533125, + 0.0016125256875, + 0.001612622125, + 0.0016141305483870969, + 0.0016153, + 0.00161686075, + 0.00161708653125, + 0.00161806490625, + 0.0016180743125, + 0.00162252178125, + 0.0016228395625, + 0.00162391725, + 0.00162427290625, + 0.001624523375, + 0.001624548125, + 0.00162484303125, + 0.00162496203125, + 0.00162707884375, + 0.0016273215, + 0.001627525, + 0.001629103, + 0.00163037009375, + 0.0016328513125, + 0.001634764741935484, + 0.00163544746875, + 0.00163658965625, + 0.001636677625, + 0.0016416498125, + 0.00164314140625, + 0.001644123875, + 0.00164581928125, + 0.0016464783125, + 0.00164760046875, + 0.00164765371875, + 0.0016486455625, + 0.00165064625, + 0.0016553504375, + 0.00165609778125, + 0.0016600778125, + 0.00166603721875, + 0.00166661296875, + 0.00166962396875, + 0.00168315803125, + 0.00168818534375, + 0.0016961735625, + 0.00170042690625, + 0.001702410375, + 0.0017040353870967741, + 0.0017622109032258064, + 0.00176318309375, + 0.0017997586896551724, + 0.00180418878125, + 0.00183221990625, + 0.0018366273125, + 0.0018406370625, + 0.00186945721875, + 0.00196967984375, + 0.00207105565625, + 0.00230607946875, + 0.0023083844375 + ] + }, + "completed": true, + "percentSlower": 0 + }, + { + "name": "put 24 KiB of data", + "ops": 540, + "margin": 1.56, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 86, + "promise": true, + "details": { + "min": 0.0017403881034482758, + "max": 0.0025157288620689658, + "mean": 0.0018522156972734568, + "median": 0.0017956082586206897, + "standardDeviation": 0.0001366703267711541, + "marginOfError": 0.00002888557908669321, + "relativeMarginOfError": 1.559514862616382, + "standardErrorOfMean": 0.00001473754035035368, + "sampleVariance": 1.8678778219734045e-8, + "sampleResults": [ + 0.0017403881034482758, + 0.0017408856206896552, + 0.001745293275862069, + 0.001745760724137931, + 0.0017476733103448275, + 0.0017487297586206896, + 0.0017519634482758622, + 0.001752612655172414, + 0.0017534096896551724, + 0.001756944275862069, + 0.0017585345172413793, + 0.0017602045862068966, + 0.0017608944827586207, + 0.001761356724137931, + 0.0017644602068965516, + 0.001765577827586207, + 0.001766290551724138, + 0.0017676562413793102, + 0.0017703762068965517, + 0.0017711, + 0.0017726011379310346, + 0.0017739913448275861, + 0.0017743637586206896, + 0.0017744605172413793, + 0.0017751521379310345, + 0.0017763219310344828, + 0.0017809216896551726, + 0.0017811362413793104, + 0.001781172827586207, + 0.0017823958620689657, + 0.0017828746896551724, + 0.0017831016551724138, + 0.0017848052413793104, + 0.001785872103448276, + 0.0017867361379310344, + 0.001786868448275862, + 0.0017909430689655172, + 0.001791393551724138, + 0.0017919349310344828, + 0.0017923328965517241, + 0.0017932926551724139, + 0.0017949668620689655, + 0.0017954875172413794, + 0.001795729, + 0.001796531896551724, + 0.0017979791379310345, + 0.0017993811034482758, + 0.0018081438620689656, + 0.0018083214137931034, + 0.0018087874827586207, + 0.001809898551724138, + 0.001810715275862069, + 0.0018116501379310346, + 0.0018137406551724136, + 0.0018141607586206897, + 0.0018227545862068966, + 0.0018279461379310344, + 0.0018315266896551726, + 0.001831528103448276, + 0.0018433956896551724, + 0.0018533182413793103, + 0.0018568532068965516, + 0.001870702827586207, + 0.001876258172413793, + 0.0018765497586206896, + 0.0019113003103448276, + 0.001911873448275862, + 0.0019133068620689655, + 0.0019181235517241378, + 0.0019287422758620689, + 0.0019450441379310346, + 0.0019499582413793103, + 0.0019579557586206896, + 0.0019664476896551725, + 0.0019693607931034482, + 0.0019742531379310342, + 0.0020121026551724137, + 0.002025008103448276, + 0.0020413054827586206, + 0.002066039482758621, + 0.002074558689655172, + 0.0021595138620689653, + 0.002231716931034483, + 0.0022443453103448275, + 0.002244752275862069, + 0.0025157288620689658 + ] + }, + "completed": true, + "percentSlower": 9.85 + }, + { + "name": "get 24 KiB of data with workers", + "ops": 354, + "margin": 1.19, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 84, + "promise": true, + "details": { + "min": 0.002637635, + "max": 0.003519087722222222, + "mean": 0.002820941043136897, + "median": 0.0027607095, + "standardDeviation": 0.00015713927534809533, + "marginOfError": 0.000033604789116880576, + "relativeMarginOfError": 1.1912616606659714, + "standardErrorOfMean": 0.000017145300569837028, + "sampleVariance": 2.4692751856924523e-8, + "sampleResults": [ + 0.002637635, + 0.0026426933684210526, + 0.00264601635, + 0.00265850345, + 0.00268829175, + 0.00269456165, + 0.0026978869499999997, + 0.0026989885500000002, + 0.00269920545, + 0.0026992811, + 0.002703060105263158, + 0.0027034872631578944, + 0.0027055885789473684, + 0.0027058507368421052, + 0.002706277842105263, + 0.002707431052631579, + 0.002707664105263158, + 0.0027078502631578947, + 0.00270840785, + 0.00270911165, + 0.002715773105263158, + 0.002717469, + 0.00271921275, + 0.0027200258000000003, + 0.0027229874, + 0.0027246431052631577, + 0.00272496, + 0.0027250137894736844, + 0.0027263593, + 0.00272793125, + 0.00272888505, + 0.0027352146315789473, + 0.00273542295, + 0.0027366046315789472, + 0.0027389495789473684, + 0.0027402273157894736, + 0.0027419588000000003, + 0.0027429229473684208, + 0.0027429381499999997, + 0.0027459998999999997, + 0.002753156473684211, + 0.0027604733, + 0.0027609457, + 0.0027621865499999998, + 0.00277710625, + 0.0027834407500000003, + 0.0027844166315789476, + 0.00279165675, + 0.002794864789473684, + 0.002801666105263158, + 0.0028081388421052635, + 0.002813914, + 0.002820849, + 0.00282565955, + 0.0028275925263157894, + 0.0028369206842105265, + 0.0028386987368421053, + 0.002840667263157895, + 0.002841193, + 0.0028438532631578947, + 0.002843918105263158, + 0.0028562455789473682, + 0.0028596167368421053, + 0.002866287736842105, + 0.0028799127, + 0.0028952741578947365, + 0.00290158465, + 0.002903410611111111, + 0.00290622745, + 0.0029082798, + 0.0029982449500000003, + 0.003005979611111111, + 0.0030107701, + 0.0030379405500000002, + 0.00303902305, + 0.003040241705882353, + 0.0030630544999999997, + 0.003096303315789474, + 0.00310965965, + 0.0031100002631578947, + 0.0031500275263157897, + 0.003179095277777778, + 0.0032701691875, + 0.003519087722222222 + ] + }, + "completed": true, + "percentSlower": 40.9 + }, + { + "name": "put 24 KiB of data with workers", + "ops": 306, + "margin": 0.74, + "options": { + "delay": 0.005, + "initCount": 1, + "minTime": 0.05, + "maxTime": 5, + "minSamples": 5 + }, + "samples": 84, + "promise": true, + "details": { + "min": 0.0030203865294117648, + "max": 0.0036067854117647056, + "mean": 0.0032680292279907795, + "median": 0.003242514564338235, + "standardDeviation": 0.00011295497938435498, + "marginOfError": 0.00002415582134704588, + "relativeMarginOfError": 0.7391556091405322, + "standardErrorOfMean": 0.000012324398646451979, + "sampleVariance": 1.2758827367720059e-8, + "sampleResults": [ + 0.0030203865294117648, + 0.0030788140588235294, + 0.0031139522352941176, + 0.003119652470588235, + 0.0031257186470588236, + 0.0031309114117647058, + 0.0031459580588235297, + 0.003147464470588235, + 0.0031505410625, + 0.0031526842941176467, + 0.0031535749375, + 0.0031610790000000002, + 0.0031683439411764706, + 0.0031750611875, + 0.003176128705882353, + 0.0031761805294117647, + 0.003176436941176471, + 0.0031767940588235295, + 0.0031782798125, + 0.0031831219411764707, + 0.003184495705882353, + 0.0031858748125, + 0.0031880783529411767, + 0.003189072625, + 0.003192734823529412, + 0.0031991073125, + 0.003200808941176471, + 0.0032026270588235294, + 0.0032026815625, + 0.003203485705882353, + 0.003204867705882353, + 0.0032063033529411765, + 0.0032156048125, + 0.0032164814705882352, + 0.0032181670588235295, + 0.0032210825294117645, + 0.003225810882352941, + 0.0032323779999999997, + 0.003236436823529412, + 0.0032372772352941177, + 0.00324127075, + 0.0032424859411764703, + 0.0032425431875, + 0.003253396529411765, + 0.0032536666875, + 0.003254956588235294, + 0.0032613168823529414, + 0.00326236, + 0.0032713116470588235, + 0.0032837557647058826, + 0.0032852220588235298, + 0.0032863553529411766, + 0.0032879409375, + 0.003291307058823529, + 0.0032927992941176472, + 0.003299533235294118, + 0.003303417588235294, + 0.0033078866470588235, + 0.003308250882352941, + 0.0033085549411764705, + 0.003311843, + 0.0033164717647058825, + 0.0033206301764705883, + 0.0033209596470588237, + 0.0033320264117647058, + 0.003342937647058824, + 0.0033436378235294118, + 0.0033717869411764704, + 0.0033725896875, + 0.0033939865294117647, + 0.0034030936875, + 0.0034148008125, + 0.0034157046470588235, + 0.0034202721176470586, + 0.003424648058823529, + 0.0034299670666666665, + 0.003434761294117647, + 0.0034441213529411764, + 0.00344429475, + 0.0034744198125, + 0.003484537176470588, + 0.003523977705882353, + 0.003553408588235294, + 0.0036067854117647056 + ] + }, + "completed": true, + "percentSlower": 48.91 + } + ], + "fastest": { + "name": "get 24 KiB of data", + "index": 0 + }, + "slowest": { + "name": "put 24 KiB of data with workers", + "index": 3 + } +} \ No newline at end of file diff --git a/benches/results/db_24KiB_metrics.txt b/benches/results/db_24KiB_metrics.txt new file mode 100644 index 00000000..6253969b --- /dev/null +++ b/benches/results/db_24KiB_metrics.txt @@ -0,0 +1,17 @@ +# TYPE db_24KiB_ops gauge +db_24KiB_ops{name="get 24 KiB of data"} 599 +db_24KiB_ops{name="put 24 KiB of data"} 540 +db_24KiB_ops{name="get 24 KiB of data with workers"} 354 +db_24KiB_ops{name="put 24 KiB of data with workers"} 306 + +# TYPE db_24KiB_margin gauge +db_24KiB_margin{name="get 24 KiB of data"} 1.65 +db_24KiB_margin{name="put 24 KiB of data"} 1.56 +db_24KiB_margin{name="get 24 KiB of data with workers"} 1.19 +db_24KiB_margin{name="put 24 KiB of data with workers"} 0.74 + +# TYPE db_24KiB_samples counter +db_24KiB_samples{name="get 24 KiB of data"} 86 +db_24KiB_samples{name="put 24 KiB of data"} 86 +db_24KiB_samples{name="get 24 KiB of data with workers"} 84 +db_24KiB_samples{name="put 24 KiB of data with workers"} 84 diff --git a/benches/results/metrics.txt b/benches/results/metrics.txt new file mode 100644 index 00000000..e7705a2d --- /dev/null +++ b/benches/results/metrics.txt @@ -0,0 +1,191 @@ +# TYPE crypto_100KiB_ops gauge +crypto_100KiB_ops{name="encrypt 100 KiB of data"} 160 +crypto_100KiB_ops{name="decrypt 100 KiB of data"} 156 +crypto_100KiB_ops{name="encrypt 100 KiB of data with workers"} 121 +crypto_100KiB_ops{name="decrypt 100 KiB of data with workers"} 137 + +# TYPE crypto_100KiB_margin gauge +crypto_100KiB_margin{name="encrypt 100 KiB of data"} 0.4 +crypto_100KiB_margin{name="decrypt 100 KiB of data"} 0.37 +crypto_100KiB_margin{name="encrypt 100 KiB of data with workers"} 1.23 +crypto_100KiB_margin{name="decrypt 100 KiB of data with workers"} 0.78 + +# TYPE crypto_100KiB_samples counter +crypto_100KiB_samples{name="encrypt 100 KiB of data"} 83 +crypto_100KiB_samples{name="decrypt 100 KiB of data"} 82 +crypto_100KiB_samples{name="encrypt 100 KiB of data with workers"} 82 +crypto_100KiB_samples{name="decrypt 100 KiB of data with workers"} 81 + +# TYPE crypto_10KiB_ops gauge +crypto_10KiB_ops{name="encrypt 10 KiB of data"} 1224 +crypto_10KiB_ops{name="decrypt 10 KiB of data"} 1440 +crypto_10KiB_ops{name="encrypt 10 KiB of data with workers"} 451 +crypto_10KiB_ops{name="decrypt 10 KiB of data with workers"} 532 + +# TYPE crypto_10KiB_margin gauge +crypto_10KiB_margin{name="encrypt 10 KiB of data"} 1.34 +crypto_10KiB_margin{name="decrypt 10 KiB of data"} 1.02 +crypto_10KiB_margin{name="encrypt 10 KiB of data with workers"} 1.92 +crypto_10KiB_margin{name="decrypt 10 KiB of data with workers"} 0.74 + +# TYPE crypto_10KiB_samples counter +crypto_10KiB_samples{name="encrypt 10 KiB of data"} 89 +crypto_10KiB_samples{name="decrypt 10 KiB of data"} 89 +crypto_10KiB_samples{name="encrypt 10 KiB of data with workers"} 85 +crypto_10KiB_samples{name="decrypt 10 KiB of data with workers"} 85 + +# TYPE crypto_16KiB_ops gauge +crypto_16KiB_ops{name="encrypt 16 KiB of data"} 868 +crypto_16KiB_ops{name="decrypt 16 KiB of data"} 940 +crypto_16KiB_ops{name="encrypt 16 KiB of data with workers"} 394 +crypto_16KiB_ops{name="decrypt 16 KiB of data with workers"} 455 + +# TYPE crypto_16KiB_margin gauge +crypto_16KiB_margin{name="encrypt 16 KiB of data"} 0.26 +crypto_16KiB_margin{name="decrypt 16 KiB of data"} 0.27 +crypto_16KiB_margin{name="encrypt 16 KiB of data with workers"} 0.78 +crypto_16KiB_margin{name="decrypt 16 KiB of data with workers"} 0.5 + +# TYPE crypto_16KiB_samples counter +crypto_16KiB_samples{name="encrypt 16 KiB of data"} 91 +crypto_16KiB_samples{name="decrypt 16 KiB of data"} 91 +crypto_16KiB_samples{name="encrypt 16 KiB of data with workers"} 85 +crypto_16KiB_samples{name="decrypt 16 KiB of data with workers"} 88 + +# TYPE crypto_1KiB_ops gauge +crypto_1KiB_ops{name="encrypt 1 KiB of data"} 3546 +crypto_1KiB_ops{name="decrypt 1 KiB of data"} 7403 +crypto_1KiB_ops{name="encrypt 1 KiB of data with workers"} 646 +crypto_1KiB_ops{name="decrypt 1 KiB of data with workers"} 759 + +# TYPE crypto_1KiB_margin gauge +crypto_1KiB_margin{name="encrypt 1 KiB of data"} 1.43 +crypto_1KiB_margin{name="decrypt 1 KiB of data"} 0.46 +crypto_1KiB_margin{name="encrypt 1 KiB of data with workers"} 1.21 +crypto_1KiB_margin{name="decrypt 1 KiB of data with workers"} 0.48 + +# TYPE crypto_1KiB_samples counter +crypto_1KiB_samples{name="encrypt 1 KiB of data"} 84 +crypto_1KiB_samples{name="decrypt 1 KiB of data"} 86 +crypto_1KiB_samples{name="encrypt 1 KiB of data with workers"} 84 +crypto_1KiB_samples{name="decrypt 1 KiB of data with workers"} 86 + +# TYPE crypto_1MiB_ops gauge +crypto_1MiB_ops{name="encrypt 1 MiB of data"} 11.18 +crypto_1MiB_ops{name="decrypt 1 MiB of data"} 10.96 +crypto_1MiB_ops{name="encrypt 1 MiB of data with workers"} 5.34 +crypto_1MiB_ops{name="decrypt 1 MiB of data with workers"} 11.03 + +# TYPE crypto_1MiB_margin gauge +crypto_1MiB_margin{name="encrypt 1 MiB of data"} 0.81 +crypto_1MiB_margin{name="decrypt 1 MiB of data"} 1.09 +crypto_1MiB_margin{name="encrypt 1 MiB of data with workers"} 1.73 +crypto_1MiB_margin{name="decrypt 1 MiB of data with workers"} 1.24 + +# TYPE crypto_1MiB_samples counter +crypto_1MiB_samples{name="encrypt 1 MiB of data"} 56 +crypto_1MiB_samples{name="decrypt 1 MiB of data"} 55 +crypto_1MiB_samples{name="encrypt 1 MiB of data with workers"} 31 +crypto_1MiB_samples{name="decrypt 1 MiB of data with workers"} 56 + +# TYPE crypto_24KiB_ops gauge +crypto_24KiB_ops{name="encrypt 24 KiB of data"} 619 +crypto_24KiB_ops{name="decrypt 24 KiB of data"} 636 +crypto_24KiB_ops{name="encrypt 24 KiB of data with workers"} 316 +crypto_24KiB_ops{name="decrypt 24 KiB of data with workers"} 361 + +# TYPE crypto_24KiB_margin gauge +crypto_24KiB_margin{name="encrypt 24 KiB of data"} 0.54 +crypto_24KiB_margin{name="decrypt 24 KiB of data"} 0.42 +crypto_24KiB_margin{name="encrypt 24 KiB of data with workers"} 0.82 +crypto_24KiB_margin{name="decrypt 24 KiB of data with workers"} 1.4 + +# TYPE crypto_24KiB_samples counter +crypto_24KiB_samples{name="encrypt 24 KiB of data"} 89 +crypto_24KiB_samples{name="decrypt 24 KiB of data"} 89 +crypto_24KiB_samples{name="encrypt 24 KiB of data with workers"} 82 +crypto_24KiB_samples{name="decrypt 24 KiB of data with workers"} 85 + +# TYPE crypto_32KiB_ops gauge +crypto_32KiB_ops{name="encrypt 32 KiB of data"} 468 +crypto_32KiB_ops{name="decrypt 32 KiB of data"} 484 +crypto_32KiB_ops{name="encrypt 32 KiB of data with workers"} 265 +crypto_32KiB_ops{name="decrypt 32 KiB of data with workers"} 308 + +# TYPE crypto_32KiB_margin gauge +crypto_32KiB_margin{name="encrypt 32 KiB of data"} 1.5 +crypto_32KiB_margin{name="decrypt 32 KiB of data"} 0.36 +crypto_32KiB_margin{name="encrypt 32 KiB of data with workers"} 1.23 +crypto_32KiB_margin{name="decrypt 32 KiB of data with workers"} 0.67 + +# TYPE crypto_32KiB_samples counter +crypto_32KiB_samples{name="encrypt 32 KiB of data"} 87 +crypto_32KiB_samples{name="decrypt 32 KiB of data"} 90 +crypto_32KiB_samples{name="encrypt 32 KiB of data with workers"} 82 +crypto_32KiB_samples{name="decrypt 32 KiB of data with workers"} 84 + +# TYPE db_1KiB_ops gauge +db_1KiB_ops{name="get 1 KiB of data"} 5962 +db_1KiB_ops{name="put 1 KiB of data"} 3005 +db_1KiB_ops{name="put zero data"} 3814 +db_1KiB_ops{name="put zero data then del"} 3500 +db_1KiB_ops{name="get 1 KiB of data with workers"} 733 +db_1KiB_ops{name="put 1 KiB of data with workers"} 644 +db_1KiB_ops{name="put zero data with workers"} 692 +db_1KiB_ops{name="put zero data then del with workers"} 686 + +# TYPE db_1KiB_margin gauge +db_1KiB_margin{name="get 1 KiB of data"} 1.01 +db_1KiB_margin{name="put 1 KiB of data"} 0.79 +db_1KiB_margin{name="put zero data"} 0.73 +db_1KiB_margin{name="put zero data then del"} 0.85 +db_1KiB_margin{name="get 1 KiB of data with workers"} 0.5 +db_1KiB_margin{name="put 1 KiB of data with workers"} 0.76 +db_1KiB_margin{name="put zero data with workers"} 0.75 +db_1KiB_margin{name="put zero data then del with workers"} 0.46 + +# TYPE db_1KiB_samples counter +db_1KiB_samples{name="get 1 KiB of data"} 82 +db_1KiB_samples{name="put 1 KiB of data"} 84 +db_1KiB_samples{name="put zero data"} 88 +db_1KiB_samples{name="put zero data then del"} 87 +db_1KiB_samples{name="get 1 KiB of data with workers"} 87 +db_1KiB_samples{name="put 1 KiB of data with workers"} 82 +db_1KiB_samples{name="put zero data with workers"} 87 +db_1KiB_samples{name="put zero data then del with workers"} 88 + +# TYPE db_1MiB_ops gauge +db_1MiB_ops{name="get 1 MiB of data"} 10.5 +db_1MiB_ops{name="put 1 MiB of data"} 10.7 +db_1MiB_ops{name="get 1 MiB of data with workers"} 11.1 +db_1MiB_ops{name="put 1 MiB of data with workers"} 5.3 + +# TYPE db_1MiB_margin gauge +db_1MiB_margin{name="get 1 MiB of data"} 1.94 +db_1MiB_margin{name="put 1 MiB of data"} 0.98 +db_1MiB_margin{name="get 1 MiB of data with workers"} 1.27 +db_1MiB_margin{name="put 1 MiB of data with workers"} 1.56 + +# TYPE db_1MiB_samples counter +db_1MiB_samples{name="get 1 MiB of data"} 53 +db_1MiB_samples{name="put 1 MiB of data"} 54 +db_1MiB_samples{name="get 1 MiB of data with workers"} 56 +db_1MiB_samples{name="put 1 MiB of data with workers"} 30 + +# TYPE db_24KiB_ops gauge +db_24KiB_ops{name="get 24 KiB of data"} 599 +db_24KiB_ops{name="put 24 KiB of data"} 540 +db_24KiB_ops{name="get 24 KiB of data with workers"} 354 +db_24KiB_ops{name="put 24 KiB of data with workers"} 306 + +# TYPE db_24KiB_margin gauge +db_24KiB_margin{name="get 24 KiB of data"} 1.65 +db_24KiB_margin{name="put 24 KiB of data"} 1.56 +db_24KiB_margin{name="get 24 KiB of data with workers"} 1.19 +db_24KiB_margin{name="put 24 KiB of data with workers"} 0.74 + +# TYPE db_24KiB_samples counter +db_24KiB_samples{name="get 24 KiB of data"} 86 +db_24KiB_samples{name="put 24 KiB of data"} 86 +db_24KiB_samples{name="get 24 KiB of data with workers"} 84 +db_24KiB_samples{name="put 24 KiB of data with workers"} 84 diff --git a/benches/results/system.json b/benches/results/system.json index d5b48080..a9969787 100644 --- a/benches/results/system.json +++ b/benches/results/system.json @@ -1,39 +1,41 @@ { "cpu": { - "manufacturer": "Intel®", - "brand": "Xeon® E3-1241 v3", - "vendor": "GenuineIntel", - "family": "6", - "model": "60", - "stepping": "3", + "manufacturer": "AMD", + "brand": "Ryzen 7 2700X Eight-Core Processor", + "vendor": "AMD", + "family": "23", + "model": "8", + "stepping": "2", "revision": "", "voltage": "", - "speed": 3.5, - "speedMin": 0.8, - "speedMax": 3.9, - "governor": "ondemand", - "cores": 8, - "physicalCores": 4, + "speed": 3.7, + "speedMin": 2.2, + "speedMax": 3.7, + "governor": "performance", + "cores": 16, + "physicalCores": 8, + "performanceCores": 8, + "efficiencyCores": 0, "processors": 1, "socket": "", - "flags": "fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts md_clear flush_l1d", + "flags": "fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ibpb vmmcall sev_es fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor smca", "virtualization": true, "cache": { - "l1d": 131072, - "l1i": 131072, - "l2": 1048576, - "l3": 8388608 + "l1d": 262144, + "l1i": 524288, + "l2": 4194304, + "l3": 16777216 } }, "osInfo": { "platform": "linux", - "distro": "Matrix Central", - "release": "unknown", - "kernel": "5.10.81", + "distro": "nixos", + "release": "22.05", + "kernel": "5.10.118", "arch": "x64" }, "system": { - "model": "P7 Pro SE", - "manufacturer": "EUROCOM" + "model": "System Product Name", + "manufacturer": "System manufacturer" } } \ No newline at end of file diff --git a/benches/utils/index.ts b/benches/utils/index.ts new file mode 100644 index 00000000..04bca77e --- /dev/null +++ b/benches/utils/index.ts @@ -0,0 +1 @@ +export * from './utils'; diff --git a/benches/utils/utils.ts b/benches/utils/utils.ts new file mode 100644 index 00000000..71c4d103 --- /dev/null +++ b/benches/utils/utils.ts @@ -0,0 +1,61 @@ +import fs from 'fs'; +import path from 'path'; +import b from 'benny'; +import { codeBlock } from 'common-tags'; +import packageJson from '../../package.json'; + +const suiteCommon = [ + b.cycle(), + b.complete(), + b.save({ + file: (summary) => summary.name, + folder: path.join(__dirname, '../results'), + version: packageJson.version, + details: true, + }), + b.save({ + file: (summary) => summary.name, + folder: path.join(__dirname, '../results'), + version: packageJson.version, + format: 'chart.html', + }), + b.complete((summary) => { + const filePath = path.join( + __dirname, + '../results', + summary.name + '_metrics.txt', + ); + fs.writeFileSync( + filePath, + codeBlock` + # TYPE ${summary.name}_ops gauge + ${summary.results + .map( + (result) => + `${summary.name}_ops{name="${result.name}"} ${result.ops}`, + ) + .join('\n')} + + # TYPE ${summary.name}_margin gauge + ${summary.results + .map( + (result) => + `${summary.name}_margin{name="${result.name}"} ${result.margin}`, + ) + .join('\n')} + + # TYPE ${summary.name}_samples counter + ${summary.results + .map( + (result) => + `${summary.name}_samples{name="${result.name}"} ${result.samples}`, + ) + .join('\n')} + ` + '\n', + ); + // eslint-disable-next-line no-console + console.log('\nSaved to:', path.resolve(filePath)); + }), +]; + +export { suiteCommon }; diff --git a/docs/classes/EncryptedFS.html b/docs/classes/EncryptedFS.html index 3002c0de..a7e79db7 100644 --- a/docs/classes/EncryptedFS.html +++ b/docs/classes/EncryptedFS.html @@ -1,33 +1,33 @@ -EncryptedFS | encryptedfs
Options
All
  • Public
  • Public/Protected
  • All
Menu

Class EncryptedFS

Hierarchy

  • CreateDestroyStartStop
    • EncryptedFS

Index

Constructors

Properties

[initLock]: RWLockWriter
_cwd: CurrentDirectory
blockSize: number
chrootParent?: EncryptedFS
chroots: Set<EncryptedFS>
db: DB
fdMgr: FileDescriptorManager
gid: number = permissions.DEFAULT_ROOT_GID
iNodeMgr: INodeManager
logger: Logger
rootIno: INodeIndex
uid: number = permissions.DEFAULT_ROOT_UID
umask: number

Accessors

  • get [destroyed](): boolean
  • Returns boolean

  • get [running](): boolean
  • Returns boolean

  • get [status](): Status
  • Returns Status

  • get cwd(): string
  • get promises(): this

Methods

  • _open(path: Path, flags: string | number, mode?: number): Promise<[FileDescriptor, FdIndex]>
  • truncate(file: File, len?: number): Promise<void>
  • truncate(file: File, callback: Callback<[], any, Error>): Promise<void>
  • truncate(file: File, len: number, callback: Callback<[], any, Error>): Promise<void>
  • unlink(path: Path, callback?: Callback<[], any, Error>): Promise<void>
  • unsetWorkerManager(): void
  • utimes(path: Path, atime: string | number | Date, mtime: string | number | Date, callback?: Callback<[], any, Error>): Promise<void>
  • Parameters

    • path: Path
    • atime: string | number | Date
    • mtime: string | number | Date
    • Optional callback: Callback<[], any, Error>

    Returns Promise<void>

  • write(fdIndex: FdIndex, data: Data, offsetOrPos?: number, lengthOrEncoding?: string | number, position?: number): Promise<number>
  • write(fdIndex: FdIndex, data: Data, callback: Callback<[number], any, Error>): Promise<void>
  • write(fdIndex: FdIndex, data: Data, offsetOrPos: number, callback: Callback<[number], any, Error>): Promise<void>
  • write(fdIndex: FdIndex, data: Data, offsetOrPos: number, lengthOrEncoding: string | number, callback: Callback<[number], any, Error>): Promise<void>
  • write(fdIndex: FdIndex, data: Data, offsetOrPos: number, lengthOrEncoding: string | number, position: number, callback: Callback<[number], any, Error>): Promise<void>
  • Parameters

    • fdIndex: FdIndex
    • data: Data
    • Optional offsetOrPos: number
    • Optional lengthOrEncoding: string | number
    • Optional position: number

    Returns Promise<number>

  • Parameters

    • fdIndex: FdIndex
    • data: Data
    • callback: Callback<[number], any, Error>

    Returns Promise<void>

  • Parameters

    • fdIndex: FdIndex
    • data: Data
    • offsetOrPos: number
    • callback: Callback<[number], any, Error>

    Returns Promise<void>

  • Parameters

    • fdIndex: FdIndex
    • data: Data
    • offsetOrPos: number
    • lengthOrEncoding: string | number
    • callback: Callback<[number], any, Error>

    Returns Promise<void>

  • Parameters

    • fdIndex: FdIndex
    • data: Data
    • offsetOrPos: number
    • lengthOrEncoding: string | number
    • position: number
    • callback: Callback<[number], any, Error>

    Returns Promise<void>

  • createEncryptedFS(__namedParameters: { blockSize?: number; dbKey: Buffer; dbPath: string; fdMgr?: FileDescriptorManager; fresh?: boolean; iNodeMgr?: INodeManager; logger?: Logger; umask?: number }): Promise<EncryptedFS>
  • createEncryptedFS(__namedParameters: { blockSize?: number; db: DB; fdMgr?: FileDescriptorManager; fresh?: boolean; iNodeMgr?: INodeManager; logger?: Logger; umask?: number }): Promise<EncryptedFS>
  • Parameters

    • __namedParameters: { blockSize?: number; dbKey: Buffer; dbPath: string; fdMgr?: FileDescriptorManager; fresh?: boolean; iNodeMgr?: INodeManager; logger?: Logger; umask?: number }
      • Optional blockSize?: number
      • dbKey: Buffer
      • dbPath: string
      • Optional fdMgr?: FileDescriptorManager
      • Optional fresh?: boolean
      • Optional iNodeMgr?: INodeManager
      • Optional logger?: Logger
      • Optional umask?: number

    Returns Promise<EncryptedFS>

  • Parameters

    • __namedParameters: { blockSize?: number; db: DB; fdMgr?: FileDescriptorManager; fresh?: boolean; iNodeMgr?: INodeManager; logger?: Logger; umask?: number }
      • Optional blockSize?: number
      • db: DB
      • Optional fdMgr?: FileDescriptorManager
      • Optional fresh?: boolean
      • Optional iNodeMgr?: INodeManager
      • Optional logger?: Logger
      • Optional umask?: number

    Returns Promise<EncryptedFS>

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/errors.ErrorEncryptedFS.html b/docs/classes/errors.ErrorEncryptedFS.html index c68d8e33..3dce888c 100644 --- a/docs/classes/errors.ErrorEncryptedFS.html +++ b/docs/classes/errors.ErrorEncryptedFS.html @@ -10,9 +10,14 @@
description: string = 'EncryptedFS error'
prepareStackTrace?: (err: Error, stackTraces: CallSite[]) => any

Type declaration

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • +

    Parameters

    • err: Error
    • stackTraces: CallSite[]

    Returns any

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • Encoding to JSON pojo -When overriding this, you can use super.toJSON

    +When overriding this, you can use super.toJSON +The replacer will:

    +
      +
    • delete undefined values in objects
    • +
    • replace undefined values for null in arrays
    • +

    Returns any

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • fromJSON<T>(this: T, json: any): InstanceType<T>
  • diff --git a/docs/classes/errors.ErrorEncryptedFSDestroyed.html b/docs/classes/errors.ErrorEncryptedFSDestroyed.html index 2250cbe1..a029686f 100644 --- a/docs/classes/errors.ErrorEncryptedFSDestroyed.html +++ b/docs/classes/errors.ErrorEncryptedFSDestroyed.html @@ -10,9 +10,14 @@
description: string = 'EncryptedFS is destroyed'
prepareStackTrace?: (err: Error, stackTraces: CallSite[]) => any

Type declaration

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • +

    Parameters

    • err: Error
    • stackTraces: CallSite[]

    Returns any

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • Encoding to JSON pojo -When overriding this, you can use super.toJSON

    +When overriding this, you can use super.toJSON +The replacer will:

    +
      +
    • delete undefined values in objects
    • +
    • replace undefined values for null in arrays
    • +

    Returns any

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • fromJSON<T>(this: T, json: any): InstanceType<T>
  • diff --git a/docs/classes/errors.ErrorEncryptedFSError.html b/docs/classes/errors.ErrorEncryptedFSError.html index 0e002a53..266c2dff 100644 --- a/docs/classes/errors.ErrorEncryptedFSError.html +++ b/docs/classes/errors.ErrorEncryptedFSError.html @@ -12,7 +12,12 @@
    see

    https://v8.dev/docs/stack-trace-api#customizing-stack-traces

    Parameters

    • err: Error
    • stackTraces: CallSite[]

    Returns any

stackTraceLimit: number

Accessors

  • get code(): string
  • get description(): string
  • get errno(): number
  • get syscall(): undefined | string

Methods

  • setPaths(src: string, dst?: string): void
  • setSyscall(syscall: string): void
  • toJSON(): any
  • Encoding to JSON pojo -When overriding this, you can use super.toJSON

    +When overriding this, you can use super.toJSON +The replacer will:

    +
      +
    • delete undefined values in objects
    • +
    • replace undefined values for null in arrays
    • +

    Returns any

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • fromJSON<T>(this: T, json: any): InstanceType<T>
  • diff --git a/docs/classes/errors.ErrorEncryptedFSKey.html b/docs/classes/errors.ErrorEncryptedFSKey.html index 7db9710c..8642090a 100644 --- a/docs/classes/errors.ErrorEncryptedFSKey.html +++ b/docs/classes/errors.ErrorEncryptedFSKey.html @@ -10,9 +10,14 @@
description: string = 'EncryptedFS failed canary check'
prepareStackTrace?: (err: Error, stackTraces: CallSite[]) => any

Type declaration

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • +

    Parameters

    • err: Error
    • stackTraces: CallSite[]

    Returns any

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • Encoding to JSON pojo -When overriding this, you can use super.toJSON

    +When overriding this, you can use super.toJSON +The replacer will:

    +
      +
    • delete undefined values in objects
    • +
    • replace undefined values for null in arrays
    • +

    Returns any

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • fromJSON<T>(this: T, json: any): InstanceType<T>
  • diff --git a/docs/classes/errors.ErrorEncryptedFSNotRunning.html b/docs/classes/errors.ErrorEncryptedFSNotRunning.html index 7dc72527..21bce8f0 100644 --- a/docs/classes/errors.ErrorEncryptedFSNotRunning.html +++ b/docs/classes/errors.ErrorEncryptedFSNotRunning.html @@ -10,9 +10,14 @@
description: string = 'EncryptedFS is not running'
prepareStackTrace?: (err: Error, stackTraces: CallSite[]) => any

Type declaration

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • +

    Parameters

    • err: Error
    • stackTraces: CallSite[]

    Returns any

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • Encoding to JSON pojo -When overriding this, you can use super.toJSON

    +When overriding this, you can use super.toJSON +The replacer will:

    +
      +
    • delete undefined values in objects
    • +
    • replace undefined values for null in arrays
    • +

    Returns any

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • fromJSON<T>(this: T, json: any): InstanceType<T>
  • diff --git a/docs/classes/errors.ErrorEncryptedFSRunning.html b/docs/classes/errors.ErrorEncryptedFSRunning.html index a3418321..3045be07 100644 --- a/docs/classes/errors.ErrorEncryptedFSRunning.html +++ b/docs/classes/errors.ErrorEncryptedFSRunning.html @@ -10,9 +10,14 @@
description: string = 'EncryptedFS is running'
prepareStackTrace?: (err: Error, stackTraces: CallSite[]) => any

Type declaration

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • +

    Parameters

    • err: Error
    • stackTraces: CallSite[]

    Returns any

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • Encoding to JSON pojo -When overriding this, you can use super.toJSON

    +When overriding this, you can use super.toJSON +The replacer will:

    +
      +
    • delete undefined values in objects
    • +
    • replace undefined values for null in arrays
    • +

    Returns any

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • fromJSON<T>(this: T, json: any): InstanceType<T>
description: string = 'INodeManager is destroyed'
prepareStackTrace?: (err: Error, stackTraces: CallSite[]) => any

Type declaration

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • +

    Parameters

    • err: Error
    • stackTraces: CallSite[]

    Returns any

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • Encoding to JSON pojo -When overriding this, you can use super.toJSON

    +When overriding this, you can use super.toJSON +The replacer will:

    +
      +
    • delete undefined values in objects
    • +
    • replace undefined values for null in arrays
    • +

    Returns any

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • fromJSON<T>(this: T, json: any): InstanceType<T>
  • diff --git a/docs/classes/inodes.errors.ErrorINodeManagerNotRunning.html b/docs/classes/inodes.errors.ErrorINodeManagerNotRunning.html index c3da2bfc..772b9b9a 100644 --- a/docs/classes/inodes.errors.ErrorINodeManagerNotRunning.html +++ b/docs/classes/inodes.errors.ErrorINodeManagerNotRunning.html @@ -10,9 +10,14 @@
description: string = 'INodeManager is not running'
prepareStackTrace?: (err: Error, stackTraces: CallSite[]) => any

Type declaration

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • +

    Parameters

    • err: Error
    • stackTraces: CallSite[]

    Returns any

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • Encoding to JSON pojo -When overriding this, you can use super.toJSON

    +When overriding this, you can use super.toJSON +The replacer will:

    +
      +
    • delete undefined values in objects
    • +
    • replace undefined values for null in arrays
    • +

    Returns any

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • fromJSON<T>(this: T, json: any): InstanceType<T>
  • diff --git a/docs/classes/inodes.errors.ErrorINodeManagerRunning.html b/docs/classes/inodes.errors.ErrorINodeManagerRunning.html index d09a1cde..a1bbccc0 100644 --- a/docs/classes/inodes.errors.ErrorINodeManagerRunning.html +++ b/docs/classes/inodes.errors.ErrorINodeManagerRunning.html @@ -10,9 +10,14 @@
description: string = 'INodeManager is running'
prepareStackTrace?: (err: Error, stackTraces: CallSite[]) => any

Type declaration

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • +

    Parameters

    • err: Error
    • stackTraces: CallSite[]

    Returns any

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • Encoding to JSON pojo -When overriding this, you can use super.toJSON

    +When overriding this, you can use super.toJSON +The replacer will:

    +
      +
    • delete undefined values in objects
    • +
    • replace undefined values for null in arrays
    • +

    Returns any

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • fromJSON<T>(this: T, json: any): InstanceType<T>
  • diff --git a/docs/classes/inodes.errors.ErrorINodes.html b/docs/classes/inodes.errors.ErrorINodes.html index e9e34f55..efdc869c 100644 --- a/docs/classes/inodes.errors.ErrorINodes.html +++ b/docs/classes/inodes.errors.ErrorINodes.html @@ -10,9 +10,14 @@
description: string = 'INodes error'
prepareStackTrace?: (err: Error, stackTraces: CallSite[]) => any

Type declaration

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • +

    Parameters

    • err: Error
    • stackTraces: CallSite[]

    Returns any

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • Encoding to JSON pojo -When overriding this, you can use super.toJSON

    +When overriding this, you can use super.toJSON +The replacer will:

    +
      +
    • delete undefined values in objects
    • +
    • replace undefined values for null in arrays
    • +

    Returns any

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • fromJSON<T>(this: T, json: any): InstanceType<T>
  • diff --git a/docs/classes/inodes.errors.ErrorINodesDuplicateRoot.html b/docs/classes/inodes.errors.ErrorINodesDuplicateRoot.html index d7d713e7..c8528040 100644 --- a/docs/classes/inodes.errors.ErrorINodesDuplicateRoot.html +++ b/docs/classes/inodes.errors.ErrorINodesDuplicateRoot.html @@ -10,9 +10,14 @@
description: string = 'Only a single root INode is allowed'
prepareStackTrace?: (err: Error, stackTraces: CallSite[]) => any

Type declaration

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • +

    Parameters

    • err: Error
    • stackTraces: CallSite[]

    Returns any

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • Encoding to JSON pojo -When overriding this, you can use super.toJSON

    +When overriding this, you can use super.toJSON +The replacer will:

    +
      +
    • delete undefined values in objects
    • +
    • replace undefined values for null in arrays
    • +

    Returns any

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • fromJSON<T>(this: T, json: any): InstanceType<T>
  • diff --git a/docs/classes/inodes.errors.ErrorINodesIndexMissing.html b/docs/classes/inodes.errors.ErrorINodesIndexMissing.html index 57448e16..0da80089 100644 --- a/docs/classes/inodes.errors.ErrorINodesIndexMissing.html +++ b/docs/classes/inodes.errors.ErrorINodesIndexMissing.html @@ -10,9 +10,14 @@
description: string = 'INode cannot be found'
prepareStackTrace?: (err: Error, stackTraces: CallSite[]) => any

Type declaration

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • +

    Parameters

    • err: Error
    • stackTraces: CallSite[]

    Returns any

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • Encoding to JSON pojo -When overriding this, you can use super.toJSON

    +When overriding this, you can use super.toJSON +The replacer will:

    +
      +
    • delete undefined values in objects
    • +
    • replace undefined values for null in arrays
    • +

    Returns any

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • fromJSON<T>(this: T, json: any): InstanceType<T>
  • diff --git a/docs/classes/inodes.errors.ErrorINodesInvalidName.html b/docs/classes/inodes.errors.ErrorINodesInvalidName.html index b405d92a..6e4f7023 100644 --- a/docs/classes/inodes.errors.ErrorINodesInvalidName.html +++ b/docs/classes/inodes.errors.ErrorINodesInvalidName.html @@ -10,9 +10,14 @@
description: string = 'Old entry cannot be found during directory entry renaming'
prepareStackTrace?: (err: Error, stackTraces: CallSite[]) => any

Type declaration

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • +

    Parameters

    • err: Error
    • stackTraces: CallSite[]

    Returns any

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • Encoding to JSON pojo -When overriding this, you can use super.toJSON

    +When overriding this, you can use super.toJSON +The replacer will:

    +
      +
    • delete undefined values in objects
    • +
    • replace undefined values for null in arrays
    • +

    Returns any

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • fromJSON<T>(this: T, json: any): InstanceType<T>
  • diff --git a/docs/classes/inodes.errors.ErrorINodesParentMissing.html b/docs/classes/inodes.errors.ErrorINodesParentMissing.html index 186b7b12..3619ea9e 100644 --- a/docs/classes/inodes.errors.ErrorINodesParentMissing.html +++ b/docs/classes/inodes.errors.ErrorINodesParentMissing.html @@ -10,9 +10,14 @@
description: string = 'Parent INode cannot be found during directory creation'
prepareStackTrace?: (err: Error, stackTraces: CallSite[]) => any

Type declaration

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • +

    Parameters

    • err: Error
    • stackTraces: CallSite[]

    Returns any

stackTraceLimit: number

Accessors

  • get description(): string
  • Returns string

Methods

  • toJSON(): any
  • Encoding to JSON pojo -When overriding this, you can use super.toJSON

    +When overriding this, you can use super.toJSON +The replacer will:

    +
      +
    • delete undefined values in objects
    • +
    • replace undefined values for null in arrays
    • +

    Returns any

  • captureStackTrace(targetObject: object, constructorOpt?: Function): void
  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • fromJSON<T>(this: T, json: any): InstanceType<T>
  • diff --git a/docs/index.html b/docs/index.html index 6bc52bef..1afd271a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -2,7 +2,8 @@

    js-encryptedfs

    -

    pipeline status

    +

    staging:pipeline status +master:pipeline status

    Encrypted filesystem library for TypeScript/JavaScript applications

    • Virtualised - files, directories, permissions are all virtual constructs, they do not correspond to real filesystems
    • @@ -10,6 +11,7 @@

      js-encryptedfs

    • Encrypted-At-Rest - all persistence is encrypted
    • Random Read & Write - encryption and decryption operates over fixed-block sizes
    • Streamable - files do not need to loaded fully in-memory
    • +
    • Comprehensive continuous benchmarks in CI/CD

    Development based on js-virtualfs: https://github.com/MatrixAI/js-virtualfs

    @@ -83,6 +85,14 @@

    Docs Generation

    Publishing

    +

    Publishing is handled automatically by the staging pipeline.

    +

    Prerelease:

    +
    # npm login
    npm version prepatch --preid alpha # premajor/preminor/prepatch
    git push --follow-tags +
    +

    Release:

    +
    # npm login
    npm version patch # major/minor/patch
    git push --follow-tags +
    +

    Manually:

    # npm login
    npm version patch # major/minor/patch
    npm run build
    npm publish --access public
    git push
    git push --tags

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited method
    • Protected property
    • Protected method
    • Method
    • Static method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/jest.config.js b/jest.config.js index 251074db..90406f0b 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,28 +1,68 @@ +const path = require('path'); const { pathsToModuleNameMapper } = require('ts-jest'); const { compilerOptions } = require('./tsconfig'); +const moduleNameMapper = pathsToModuleNameMapper(compilerOptions.paths, { + prefix: '/src/', +}); + +// Global variables that are shared across the jest worker pool +// These variables must be static and serializable +const globals = { + // Absolute directory to the project root + projectDir: __dirname, + // Absolute directory to the test root + testDir: path.join(__dirname, 'tests'), + // Default asynchronous test timeout + defaultTimeout: 20000, + // Timeouts rely on setTimeout which takes 32 bit numbers + maxTimeout: Math.pow(2, 31) - 1, +}; + +// The `globalSetup` and `globalTeardown` cannot access the `globals` +// They run in their own process context +// They can however receive the process environment +// Use `process.env` to set variables + module.exports = { - testEnvironment: "node", + testEnvironment: 'node', verbose: true, - roots: [ - "/tests" - ], - testMatch: [ - "**/?(*.)+(spec|test|unit.test).+(ts|tsx|js)" - ], + collectCoverage: false, + cacheDirectory: '/tmp/jest', + coverageDirectory: '/tmp/coverage', + roots: ['/tests'], + testMatch: ['**/?(*.)+(spec|test|unit.test).+(ts|tsx|js|jsx)'], transform: { - "^.+\\.tsx?$": "ts-jest" + '^.+\\.tsx?$': 'ts-jest', + '^.+\\.jsx?$': 'babel-jest', }, - setupFiles: [ - "/tests/setup.ts" + reporters: [ + 'default', + ['jest-junit', { + outputDirectory: '/tmp/junit', + classNameTemplate: '{classname}', + ancestorSeparator: ' > ', + titleTemplate: '{title}', + addFileAttribute: 'true', + reportTestSuiteErrors: 'true', + }], ], + collectCoverageFrom: ['src/**/*.{ts,tsx,js,jsx}', '!src/**/*.d.ts'], + coverageReporters: ['text', 'cobertura'], + globals, + // Global setup script executed once before all test files + globalSetup: '/tests/globalSetup.ts', + // Global teardown script executed once after all test files + globalTeardown: '/tests/globalTeardown.ts', + // Setup files are executed before each test file + // Can access globals + setupFiles: ['/tests/setup.ts'], + // Setup files after env are executed before each test file + // after the jest test environment is installed + // Can access globals setupFilesAfterEnv: [ - "/tests/setupAfterEnv.ts" + 'jest-extended/all', + '/tests/setupAfterEnv.ts' ], - globalSetup: "/tests/globalSetup.ts", - globalTeardown: "/tests/globalTeardown.ts", - moduleNameMapper: pathsToModuleNameMapper( - compilerOptions.paths, - { prefix: "/src/" } - ) + moduleNameMapper: moduleNameMapper, }; diff --git a/package-lock.json b/package-lock.json index 7b1d0576..13b28ae9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,13 +9,13 @@ "version": "3.5.3", "license": "Apache-2.0", "dependencies": { - "@matrixai/async-init": "^1.7.3", - "@matrixai/async-locks": "^2.2.4", + "@matrixai/async-init": "^1.8.2", + "@matrixai/async-locks": "^3.1.2", "@matrixai/db": "^4.0.2", - "@matrixai/errors": "^1.1.1", - "@matrixai/logger": "^2.1.1", - "@matrixai/resources": "^1.1.3", - "@matrixai/workers": "^1.3.3", + "@matrixai/errors": "^1.1.3", + "@matrixai/logger": "^3.0.0", + "@matrixai/resources": "^1.1.4", + "@matrixai/workers": "^1.3.6", "errno": "^0.1.7", "lexicographic-integer": "^1.1.0", "node-forge": "^1.3.1", @@ -25,22 +25,27 @@ "util-callbackify": "^1.0.0" }, "devDependencies": { - "@types/jest": "^27.0.2", + "@swc/core": "^1.2.215", + "@types/jest": "^28.1.3", "@types/node": "^16.11.7", "@types/node-forge": "^1.0.2", "@types/readable-stream": "^2.3.11", "@typescript-eslint/eslint-plugin": "^5.23.0", "@typescript-eslint/parser": "^5.23.0", - "benny": "^3.6.15", + "benny": "^3.7.1", + "common-tags": "^1.8.2", "eslint": "^8.15.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-prettier": "^4.0.0", - "jest": "^27.2.5", + "jest": "^28.1.1", + "jest-extended": "^3.0.1", + "jest-junit": "^14.0.0", "prettier": "^2.6.2", - "systeminformation": "^5.8.9", - "ts-jest": "^27.0.5", - "ts-node": "^10.4.0", + "rimraf": "^3.0.2", + "systeminformation": "^5.12.1", + "ts-jest": "^28.0.5", + "ts-node": "^10.9.1", "tsconfig-paths": "^3.9.0", "typedoc": "^0.22.15", "typescript": "^4.5.2" @@ -102,42 +107,42 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", + "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", - "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.10", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.10", - "@babel/types": "^7.17.10", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -162,27 +167,41 @@ } }, "node_modules/@babel/generator": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", - "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", + "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", "dev": true, "dependencies": { - "@babel/types": "^7.17.10", - "@jridgewell/gen-mapping": "^0.1.0", + "@babel/types": "^7.18.9", + "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", - "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" }, @@ -203,145 +222,142 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", "dev": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", "dev": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -387,13 +403,13 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { "node": ">=0.8.0" @@ -402,7 +418,7 @@ "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" @@ -421,9 +437,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", - "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", + "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -580,12 +596,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz", - "integrity": "sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", + "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -595,33 +611,33 @@ } }, "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", - "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.10", - "@babel/types": "^7.17.10", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", + "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.9", + "@babel/types": "^7.18.9", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -639,12 +655,12 @@ } }, "node_modules/@babel/types": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", - "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", + "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" }, "engines": { @@ -657,27 +673,28 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "dependencies": { - "@cspotcode/source-map-consumer": "0.8.0" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { "node": ">=12" } }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@eslint/eslintrc": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", @@ -845,59 +862,60 @@ } }, "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", "dev": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -909,85 +927,110 @@ } }, "node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", - "jest-mock": "^27.5.1" + "jest-mock": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", + "dev": true, + "dependencies": { + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "dev": true, + "dependencies": { + "jest-get-type": "^28.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.2", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -998,90 +1041,103 @@ } } }, + "node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, "node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.13", "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" + "graceful-fs": "^4.2.9" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", "dev": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", "dev": true, "dependencies": { - "@jest/test-result": "^27.5.1", + "@jest/test-result": "^28.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "jest-haste-map": "^28.1.3", + "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-haste-map": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", "dev": true, "dependencies": { + "@jest/schemas": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/@jridgewell/gen-mapping": { @@ -1098,33 +1154,33 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", - "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -1132,28 +1188,28 @@ } }, "node_modules/@matrixai/async-init": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@matrixai/async-init/-/async-init-1.7.3.tgz", - "integrity": "sha512-Sf3q5ODhVJqrYiAdGXmwj606956lgEMKGM9LMFU5scIOh13WokHo3GthjB1yh/umCV75NYvHJn60R9gnudVZ3Q==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@matrixai/async-init/-/async-init-1.8.2.tgz", + "integrity": "sha512-HAJ5hB1sLYHSbTZ6Ana126v10wFfXrKOYbLIyFuX4yspyjRM9akUVGQdP9H8SoxR35GtZoiJuqRjaRwxNk1KNQ==", "dependencies": { - "@matrixai/async-locks": "^2.2.4", - "@matrixai/errors": "^1.1.1" + "@matrixai/async-locks": "^3.1.2", + "@matrixai/errors": "^1.1.3" } }, "node_modules/@matrixai/async-locks": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@matrixai/async-locks/-/async-locks-2.2.4.tgz", - "integrity": "sha512-AEGQMM7zw8Mkcc0hbNpOCNKa6DW+04rVIwyZgUnPWawPqwUt5HSGaQwdXI3dXO+35G/vjJppggv+JJZsGfEjvA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@matrixai/async-locks/-/async-locks-3.1.2.tgz", + "integrity": "sha512-rIA89EGBNlWV59pLVwx7aqlKWVJRCOsVi6evt8HoN6dyvyyns8//Q8PyBcg5ay0GjLkqsXKQjYXMRif5OB3VSg==", "dependencies": { - "@matrixai/errors": "^1.1.1", - "@matrixai/resources": "^1.1.3", + "@matrixai/errors": "^1.1.3", + "@matrixai/resources": "^1.1.4", "async-mutex": "^0.3.2" } }, "node_modules/@matrixai/db": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@matrixai/db/-/db-4.0.2.tgz", - "integrity": "sha512-09gRmxATT65oDRXvbAYRg2AVrBUcQGXWkrhA0dmmPH9QE4O7CG1pLxu0mOd8QinUhpe18wJR9IrymSmzdgYUUg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@matrixai/db/-/db-4.0.5.tgz", + "integrity": "sha512-X3gBcyPxC+bTEfi1J1Y49n1bglvg7HjM8MKNH5s+OUEswqKSZgeg1uWfXqvUqq72yjBtgRi4Ghmy4MdrIB1oMw==", "dependencies": { "@matrixai/async-init": "^1.7.3", "@matrixai/errors": "^1.1.1", @@ -1165,32 +1221,37 @@ "threads": "^1.6.5" } }, + "node_modules/@matrixai/db/node_modules/@matrixai/logger": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@matrixai/logger/-/logger-2.3.0.tgz", + "integrity": "sha512-DbsUv9eBubB2WxA8aGygnY/A2Ggm9a+ZnnnL2hIWWnE+sid92FK96gubW1a+u8OrXWx559HqUTBkcPDs83zV/A==" + }, "node_modules/@matrixai/errors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@matrixai/errors/-/errors-1.1.1.tgz", - "integrity": "sha512-ywhDblmPCfJCt3JTD8PB6rzREZ/Ex4UoLEGLw3fALhGV2AsU7NMax801PtsqbZcOfNEs2uOa1wqyhqyn3L8s9g==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@matrixai/errors/-/errors-1.1.3.tgz", + "integrity": "sha512-SqHSDd1E2IUXlqvVmEvyGChBrnQUTTHjy4hTc1SmcDBttgqS4QgBXH7aovk6Eviuhq6unSWkA9nyBDDXOT3DJA==", "dependencies": { "ts-custom-error": "^3.2.0" } }, "node_modules/@matrixai/logger": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@matrixai/logger/-/logger-2.1.1.tgz", - "integrity": "sha512-79KM0PyJTpfkALf9DK2xGniU+9gngsb5O8hcdUviWz+zR2W0hnTQq/g7tJW0YnIEhmDe/GkJf0Bnbs+gWfj3BA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@matrixai/logger/-/logger-3.0.0.tgz", + "integrity": "sha512-J2KMMw4FCHHmIacRfbU3mBPMvGxxwRc4Y8eFEtzkOcL8WhqBfWKiZ96xNduJGxUo+nfTlj+Q2Ep9RwRw3FCxMw==" }, "node_modules/@matrixai/resources": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@matrixai/resources/-/resources-1.1.3.tgz", - "integrity": "sha512-9zbA0NtgCtA+2hILpojshH6Pd679bIPtB8DcsPLVDzvGZP1TDwvtvZWCC3SG7oJUTzxqBI2Bfe+hypqwpvYPCw==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@matrixai/resources/-/resources-1.1.4.tgz", + "integrity": "sha512-YZSMtklbXah0+SxcKOVEm0ONQdWhlJecQ1COx6hg9Dl80WOybZjZ9A+N+OZfvWk9y25NuoIPzOsjhr8G1aTnIg==" }, "node_modules/@matrixai/workers": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@matrixai/workers/-/workers-1.3.3.tgz", - "integrity": "sha512-ID1sSJDXjM0hdWC10euWGcFofuys7+IDP+XTBh8Gq6jirn18xJs71wSy357qxLVSa7mL00qRJJfW6rljcFUK4A==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@matrixai/workers/-/workers-1.3.6.tgz", + "integrity": "sha512-vllPhkBpEl5tNCXIN3PuiYn/fQCtQZUHsvCybkNXj/RZuBjUjktt2Yb+yCXxnw8/QRtNBDnts63qwTGCHFqU2Q==", "dependencies": { - "@matrixai/async-init": "^1.7.3", - "@matrixai/errors": "^1.1.1", - "@matrixai/logger": "^2.1.1", + "@matrixai/async-init": "^1.8.2", + "@matrixai/errors": "^1.1.2", + "@matrixai/logger": "^3.0.0", "threads": "^1.6.5" } }, @@ -1229,6 +1290,12 @@ "node": ">= 8" } }, + "node_modules/@sinclair/typebox": { + "version": "0.24.20", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.20.tgz", + "integrity": "sha512-kVaO5aEFZb33nPMTZBxiPEkY+slxiPtqC7QX8f9B3eGOMBvEfuMfxp9DSTTCsRJPumPKjrge4yagyssO4q6qzQ==", + "dev": true + }, "node_modules/@sinonjs/commons": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", @@ -1239,45 +1306,276 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", "dev": true, "dependencies": { "@sinonjs/commons": "^1.7.0" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "node_modules/@swc/core": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.218.tgz", + "integrity": "sha512-wzXTeBUi3YAHr305lCo1tlxRj5Zpk7hu6rmulngH06NgrH7fS6bj8IaR7K2QPZ4ZZ4U+TGS2tOKbXBmqeMRUtg==", "dev": true, + "hasInstallScript": true, + "bin": { + "swcx": "run_swcx.js" + }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-android-arm-eabi": "1.2.218", + "@swc/core-android-arm64": "1.2.218", + "@swc/core-darwin-arm64": "1.2.218", + "@swc/core-darwin-x64": "1.2.218", + "@swc/core-freebsd-x64": "1.2.218", + "@swc/core-linux-arm-gnueabihf": "1.2.218", + "@swc/core-linux-arm64-gnu": "1.2.218", + "@swc/core-linux-arm64-musl": "1.2.218", + "@swc/core-linux-x64-gnu": "1.2.218", + "@swc/core-linux-x64-musl": "1.2.218", + "@swc/core-win32-arm64-msvc": "1.2.218", + "@swc/core-win32-ia32-msvc": "1.2.218", + "@swc/core-win32-x64-msvc": "1.2.218" + } + }, + "node_modules/@swc/core-android-arm-eabi": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.218.tgz", + "integrity": "sha512-Q/uLCh262t3xxNzhCz+ZW9t+g2nWd0gZZO4jMYFWJs7ilKVNsBfRtfnNGGACHzkVuWLNDIWtAS2PSNodl7VUHQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-android-arm64": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.218.tgz", + "integrity": "sha512-dy+8lUHUcyrkfPcl7azEQ4M44duRo1Uibz1E5/tltXCGoR6tu2ZN2VkqEKgA2a9XR3UD8/x4lv2r5evwJWy+uQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.218.tgz", + "integrity": "sha512-aTpFjWio8G0oukN76VtXCBPtFzH0PXIQ+1dFjGGkzrBcU5suztCCbhPBGhKRoWp3NJBwfPDwwWzmG+ddXrVAKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.218.tgz", + "integrity": "sha512-H3w/gNzROE6gVPZCAg5qvvPihzlg88Yi7HWb/mowfpNqH9/iJ8XMdwqJyovnfUeUXsuJQBFv6uXv/ri7qhGMHA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-freebsd-x64": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.218.tgz", + "integrity": "sha512-kkch07yCSlpUrSMp0FZPWtMHJjh3lfHiwp7JYNf6CUl5xXlgT19NeomPYq31dbTzPV2VnE7TVVlAawIjuuOH4g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.218.tgz", + "integrity": "sha512-vwEgvtD9f/+0HFxYD5q4sd8SG6zd0cxm17cwRGZ6jWh/d4Ninjht3CpDGE1ffh9nJ+X3Mb/7rjU/kTgWFz5qfg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.218.tgz", + "integrity": "sha512-g5PQI6COUHV7x7tyaZQn6jXWtOLXXNIEQK1HS5/e+6kqqsM2NsndE9bjLhoH1EQuXiN2eUjAR/ZDOFAg102aRw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.218.tgz", + "integrity": "sha512-IETYHB6H01NmVmlw+Ng8nkjdFBv1exGQRR74GAnHis1bVx1Uq14hREIF6XT3I1Aj26nRwlGkIYQuEKnFO5/j3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.218.tgz", + "integrity": "sha512-PK39Zg4/YZbfchQRw77iVfB7Qat7QaK58sQt8enH39CUMXlJ+GSfC0Fqw2mtZ12sFGwmsGrK9yBy3ZVoOws5Ng==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.218.tgz", + "integrity": "sha512-SNjrzORJYiKTSmFbaBkKZAf5B/PszwoZoFZOcd86AG192zsvQBSvKjQzMjT5rDZxB+sOnhRE7wH/bvqxZishQQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.218.tgz", + "integrity": "sha512-lVXFWkYl+w8+deq9mgGsfvSY5Gr1RRjFgqZ+0wMZgyaonfx7jNn3TILUwc7egumEwxK0anNriVZCyKfcO3ZIjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.218.tgz", + "integrity": "sha512-jgP+NZsHUh9Cp8PcXznnkpJTW3hPDLUgsXI0NKfE+8+Xvc6hALHxl6K46IyPYU67FfFlegYcBSNkOgpc85gk0A==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.218.tgz", + "integrity": "sha512-XYLjX00KV4ft324Q3QDkw61xHkoN7EKkVvIpb0wXaf6wVshwU+BCDyPw2CSg4PQecNP8QGgMRQf9QM7xNtEM7A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" } }, "node_modules/@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", "dev": true }, "node_modules/@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true }, "node_modules/@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "dev": true }, "node_modules/@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", "dev": true }, "node_modules/@types/abstract-leveldown": { @@ -1360,13 +1658,13 @@ } }, "node_modules/@types/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-fUy7YRpT+rHXto1YlL+J9rs0uLGyiqVt3ZOTQR+4ROc47yNl8WLdVLgUloBRhOxP1PZvguHl44T3H0wAWxahYQ==", + "version": "28.1.6", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.6.tgz", + "integrity": "sha512-0RbGAFMfcBJKOmqRazM8L98uokwuwD5F8rHrv/ZMbrZBwVOWZUyPG6VFNscjYr/vjM3Vu4fRrCPbOs42AfemaQ==", "dev": true, "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" + "jest-matcher-utils": "^28.0.0", + "pretty-format": "^28.0.0" } }, "node_modules/@types/json-schema": { @@ -1397,9 +1695,9 @@ } }, "node_modules/@types/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", + "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==", "dev": true }, "node_modules/@types/readable-stream": { @@ -1419,9 +1717,9 @@ "dev": true }, "node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", + "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -1617,12 +1915,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, "node_modules/abstract-leveldown": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", @@ -1651,28 +1943,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -1683,26 +1953,14 @@ } }, "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true, "engines": { "node": ">=0.4.0" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1858,29 +2116,22 @@ "tslib": "^2.3.1" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, "node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", + "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", "dev": true, "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/transform": "^28.1.3", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", + "babel-preset-jest": "^28.1.3", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { "@babel/core": "^7.8.0" @@ -1903,18 +2154,18 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", + "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", + "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/babel-preset-current-node-syntax": { @@ -1941,16 +2192,16 @@ } }, "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", + "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", + "babel-plugin-jest-hoist": "^28.1.3", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -2050,16 +2301,10 @@ "node": ">=8" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "node_modules/browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", + "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", "dev": true, "funding": [ { @@ -2072,11 +2317,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001366", + "electron-to-chromium": "^1.4.188", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.4" }, "bin": { "browserslist": "cli.js" @@ -2165,9 +2409,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001340", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001340.tgz", - "integrity": "sha512-jUNz+a9blQTQVu4uFcn17uAD8IDizPzQkIKh3LCJfg9BkyIqExYYdyc/ZSlWUSKb8iYiXxKsxbv4zYSvkqjrxw==", + "version": "1.0.30001370", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", + "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==", "dev": true, "funding": [ { @@ -2214,9 +2458,9 @@ } }, "node_modules/ci-info": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.1.tgz", - "integrity": "sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", "dev": true }, "node_modules/cjs-module-lexer": { @@ -2268,7 +2512,7 @@ "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "engines": { "iojs": ">= 1.0.0", @@ -2299,18 +2543,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", @@ -2377,44 +2609,6 @@ "node": ">= 8" } }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -2431,16 +2625,10 @@ } } }, - "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, "node_modules/deep-is": { @@ -2485,15 +2673,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -2513,12 +2692,12 @@ } }, "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/dir-glob": { @@ -2545,40 +2724,19 @@ "node": ">=6.0.0" } }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/electron-to-chromium": { - "version": "1.4.137", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", - "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", + "version": "1.4.199", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.199.tgz", + "integrity": "sha512-WIGME0Cs7oob3mxsJwHbeWkH0tYkIE/sjkJ8ML2BYmuRcjhRl/q5kVDXG7W9LOOKwzPU5M0LBlXRq9rlSgnNlg==", "dev": true }, "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sindresorhus/emittery?sponsor=1" @@ -2706,88 +2864,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", @@ -3161,25 +3237,26 @@ "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" } }, "node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@jest/expect-utils": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/fast-deep-equal": { @@ -3307,20 +3384,6 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -3595,51 +3658,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -3649,18 +3673,6 @@ "node": ">=10.17.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -3764,7 +3776,7 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "node_modules/is-bigint": { @@ -3936,12 +3948,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -4008,12 +4014,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -4094,9 +4094,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -4107,20 +4107,21 @@ } }, "node_modules/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", "dev": true, "dependencies": { - "@jest/core": "^27.5.1", + "@jest/core": "^28.1.3", + "@jest/types": "^28.1.3", "import-local": "^3.0.2", - "jest-cli": "^27.5.1" + "jest-cli": "^28.1.3" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -4132,73 +4133,102 @@ } }, "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", + "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", "execa": "^5.0.0", - "throat": "^6.0.1" + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", + "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", + "jest-each": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "p-limit": "^3.1.0", + "pretty-format": "^28.1.3", "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", + "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", "dev": true, "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/core": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-config": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", "prompts": "^2.0.1", - "yargs": "^16.2.0" + "yargs": "^17.3.1" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -4210,248 +4240,234 @@ } }, "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", "dev": true, "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.1", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", + "pretty-format": "^28.1.3", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { + "@types/node": "*", "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, "ts-node": { "optional": true } } }, "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", + "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", + "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-get-type": "^28.0.2", + "jest-util": "^28.1.3", + "pretty-format": "^28.1.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "node_modules/jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "node_modules/jest-extended": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jest-extended/-/jest-extended-3.0.1.tgz", + "integrity": "sha512-OSGbKUhbjy7QikfQyK3ishFrAqLeRodBzeJk7SuuWGACAT7HHcGuJ4aUQ3ueLANx4KSv1Pa7r1LJWGtJ3eI0xA==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-diff": "^28.0.0", + "jest-get-type": "^28.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.13.0 || >=18.0.0" + }, + "peerDependencies": { + "jest": ">=27.2.5" } }, "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", + "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", + "@jest/types": "^28.1.3", + "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", "micromatch": "^4.0.4", - "walker": "^1.0.7" + "walker": "^1.0.8" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "optionalDependencies": { "fsevents": "^2.3.2" } }, - "node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "node_modules/jest-junit": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-14.0.0.tgz", + "integrity": "sha512-kALvBDegstTROfDGXH71UGD7k5g7593Y1wuX1wpWT+QTYcBbmtuGOA8UlAt56zo/B2eMIOcaOVEON3j0VXVa4g==", "dev": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" + "mkdirp": "^1.0.4", + "strip-ansi": "^6.0.1", + "uuid": "^8.3.2", + "xml": "^1.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10.12.0" } }, "node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", + "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", "dev": true, "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", + "pretty-format": "^28.1.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", + "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.3", "@types/node": "*" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-pnp-resolver": { @@ -4472,167 +4488,168 @@ } }, "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", + "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", + "jest-haste-map": "^28.1.3", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", + "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.1.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", + "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", "dev": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.3", + "@jest/environment": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "emittery": "^0.10.2", "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" + "jest-docblock": "^28.1.1", + "jest-environment-node": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-leak-detector": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-resolve": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-util": "^28.1.3", + "jest-watcher": "^28.1.3", + "jest-worker": "^28.1.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runner/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", + "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/globals": "^28.1.3", + "@jest/source-map": "^28.1.2", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", + "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", "dev": true, "dependencies": { - "@babel/core": "^7.7.2", + "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.5.1", + "expect": "^28.1.3", "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-haste-map": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" + "pretty-format": "^28.1.3", + "semver": "^7.3.5" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -4640,24 +4657,24 @@ "picomatch": "^2.2.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", + "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", "dev": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", + "jest-get-type": "^28.0.2", "leven": "^3.1.0", - "pretty-format": "^27.5.1" + "pretty-format": "^28.1.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-validate/node_modules/camelcase": { @@ -4673,27 +4690,28 @@ } }, "node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", "dev": true, "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.5.1", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", "string-length": "^4.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", "dev": true, "dependencies": { "@types/node": "*", @@ -4701,7 +4719,7 @@ "supports-color": "^8.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/jest-worker/node_modules/supports-color": { @@ -4737,52 +4755,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -5103,7 +5075,7 @@ "node_modules/ltgt": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", - "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=" + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==" }, "node_modules/lunr": { "version": "2.3.9", @@ -5190,27 +5162,6 @@ "node": ">=8.6" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -5238,6 +5189,18 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -5263,9 +5226,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -5275,13 +5238,13 @@ "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, "node_modules/node-releases": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "node_modules/normalize-path": { @@ -5305,12 +5268,6 @@ "node": ">=8" } }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, "node_modules/object-inspect": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", @@ -5486,12 +5443,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -5686,17 +5637,18 @@ } }, "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", "dev": true, "dependencies": { + "@jest/schemas": "^28.1.3", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/pretty-format/node_modules/ansi-styles": { @@ -5738,12 +5690,6 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -5773,9 +5719,9 @@ ] }, "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, "node_modules/readable-stream": { @@ -5827,7 +5773,7 @@ "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -6003,24 +5949,6 @@ } ] }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -6129,9 +6057,9 @@ } }, "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", @@ -6141,7 +6069,7 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "node_modules/stack-utils": { @@ -6305,16 +6233,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, "node_modules/systeminformation": { - "version": "5.11.15", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.11.15.tgz", - "integrity": "sha512-zUbObRjQeZcu84z9NVSm9JTiCPyPQ3MefJ3+76yvp+TeCv9WsO3szijyQLv0fChRrm2/sl2De3y1ewUOYOtz2Q==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.12.1.tgz", + "integrity": "sha512-qAV0xSeSJlg0ZHmQ1T2rLrL54SATalBx6v4T8Sd5s17pEm6saX3LKzlPhfPx+EfT91y9yhRYnKhnMoLTFkxbqw==", "dev": true, "os": [ "darwin", @@ -6390,12 +6312,6 @@ "tiny-worker": ">= 2" } }, - "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, "node_modules/tiny-worker": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tiny-worker/-/tiny-worker-2.3.0.tgz", @@ -6414,7 +6330,7 @@ "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, "engines": { "node": ">=4" @@ -6432,41 +6348,6 @@ "node": ">=8.0" } }, - "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ts-custom-error": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ts-custom-error/-/ts-custom-error-3.2.0.tgz", @@ -6476,38 +6357,38 @@ } }, "node_modules/ts-jest": { - "version": "27.1.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz", - "integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==", + "version": "28.0.7", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.7.tgz", + "integrity": "sha512-wWXCSmTwBVmdvWrOpYhal79bDpioDy4rTT+0vyUnE3ZzM7LOAAGG9NXwzkEL/a516rQEgnMmS/WKP9jBPCVJyA==", "dev": true, "dependencies": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", + "jest-util": "^28.0.0", + "json5": "^2.2.1", "lodash.memoize": "4.x", "make-error": "1.x", "semver": "7.x", - "yargs-parser": "20.x" + "yargs-parser": "^21.0.1" }, "bin": { "ts-jest": "cli.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", - "@types/jest": "^27.0.0", - "babel-jest": ">=27.0.0 <28", - "jest": "^27.0.0", - "typescript": ">=3.8 <5.0" + "@jest/types": "^28.0.0", + "babel-jest": "^28.0.0", + "jest": "^28.0.0", + "typescript": ">=4.3" }, "peerDependenciesMeta": { "@babel/core": { "optional": true }, - "@types/jest": { + "@jest/types": { "optional": true }, "babel-jest": { @@ -6519,12 +6400,12 @@ } }, "node_modules/ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, "dependencies": { - "@cspotcode/source-map-support": "0.7.0", + "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", @@ -6535,7 +6416,7 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "bin": { @@ -6561,15 +6442,6 @@ } } }, - "node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -6662,15 +6534,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, "node_modules/typedoc": { "version": "0.22.15", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.15.tgz", @@ -6750,6 +6613,32 @@ "node": ">= 10.0.0" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -6772,6 +6661,15 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -6785,28 +6683,19 @@ "dev": true }, "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "convert-source-map": "^1.6.0" }, "engines": { "node": ">=10.12.0" } }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/vscode-oniguruma": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz", @@ -6819,27 +6708,6 @@ "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", "dev": true }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -6849,44 +6717,6 @@ "makeerror": "1.0.12" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -6947,48 +6777,22 @@ "dev": true }, "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "dev": true, - "engines": { - "node": ">=8.3.0" + "signal-exit": "^3.0.7" }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "node_modules/xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", "dev": true }, "node_modules/y18n": { @@ -7007,30 +6811,30 @@ "dev": true }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "dev": true, "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yn": { @@ -7041,6 +6845,18 @@ "engines": { "node": ">=6" } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } }, "dependencies": { @@ -7097,36 +6913,36 @@ } }, "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dev": true, "requires": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", + "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", "dev": true }, "@babel/core": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", - "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.10", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.10", - "@babel/types": "^7.17.10", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -7143,24 +6959,37 @@ } }, "@babel/generator": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", - "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", + "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", "dev": true, "requires": { - "@babel/types": "^7.17.10", - "@jridgewell/gen-mapping": "^0.1.0", + "@babel/types": "^7.18.9", + "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } } }, "@babel/helper-compilation-targets": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", - "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.20.2", "semver": "^6.3.0" }, @@ -7174,112 +7003,109 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true }, "@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", "dev": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.9" } }, "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", "dev": true }, "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "dev": true, "requires": { - "@babel/types": "^7.17.0" + "@babel/types": "^7.18.6" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true }, "@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", "dev": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -7316,19 +7142,19 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, "supports-color": { @@ -7343,9 +7169,9 @@ } }, "@babel/parser": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", - "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", + "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", "dev": true }, "@babel/plugin-syntax-async-generators": { @@ -7457,39 +7283,39 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz", - "integrity": "sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", + "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" } }, "@babel/traverse": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", - "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.10", - "@babel/types": "^7.17.10", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", + "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.9", + "@babel/types": "^7.18.9", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -7503,12 +7329,12 @@ } }, "@babel/types": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", - "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", + "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" } }, @@ -7518,19 +7344,25 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true - }, "@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "requires": { - "@cspotcode/source-map-consumer": "0.8.0" + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } } }, "@eslint/eslintrc": { @@ -7663,193 +7495,223 @@ "dev": true }, "@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", "slash": "^3.0.0" } }, "@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", "dev": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" } }, "@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", "dev": true, "requires": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", - "jest-mock": "^27.5.1" + "jest-mock": "^28.1.3" + } + }, + "@jest/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", + "dev": true, + "requires": { + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" + } + }, + "@jest/expect-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "dev": true, + "requires": { + "jest-get-type": "^28.0.2" } }, "@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" } }, "@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" } }, "@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.2", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^5.1.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "v8-to-istanbul": "^9.0.1" + } + }, + "@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.24.1" } }, "@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.13", "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" + "graceful-fs": "^4.2.9" } }, "@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", "dev": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", "dev": true, "requires": { - "@jest/test-result": "^27.5.1", + "@jest/test-result": "^28.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "jest-haste-map": "^28.1.3", + "slash": "^3.0.0" } }, "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-haste-map": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "write-file-atomic": "^4.0.1" } }, "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", "dev": true, "requires": { + "@jest/schemas": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" } }, @@ -7864,27 +7726,27 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "dev": true }, "@jridgewell/set-array": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", - "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true }, "@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", @@ -7892,28 +7754,28 @@ } }, "@matrixai/async-init": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@matrixai/async-init/-/async-init-1.7.3.tgz", - "integrity": "sha512-Sf3q5ODhVJqrYiAdGXmwj606956lgEMKGM9LMFU5scIOh13WokHo3GthjB1yh/umCV75NYvHJn60R9gnudVZ3Q==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@matrixai/async-init/-/async-init-1.8.2.tgz", + "integrity": "sha512-HAJ5hB1sLYHSbTZ6Ana126v10wFfXrKOYbLIyFuX4yspyjRM9akUVGQdP9H8SoxR35GtZoiJuqRjaRwxNk1KNQ==", "requires": { - "@matrixai/async-locks": "^2.2.4", - "@matrixai/errors": "^1.1.1" + "@matrixai/async-locks": "^3.1.2", + "@matrixai/errors": "^1.1.3" } }, "@matrixai/async-locks": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@matrixai/async-locks/-/async-locks-2.2.4.tgz", - "integrity": "sha512-AEGQMM7zw8Mkcc0hbNpOCNKa6DW+04rVIwyZgUnPWawPqwUt5HSGaQwdXI3dXO+35G/vjJppggv+JJZsGfEjvA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@matrixai/async-locks/-/async-locks-3.1.2.tgz", + "integrity": "sha512-rIA89EGBNlWV59pLVwx7aqlKWVJRCOsVi6evt8HoN6dyvyyns8//Q8PyBcg5ay0GjLkqsXKQjYXMRif5OB3VSg==", "requires": { - "@matrixai/errors": "^1.1.1", - "@matrixai/resources": "^1.1.3", + "@matrixai/errors": "^1.1.3", + "@matrixai/resources": "^1.1.4", "async-mutex": "^0.3.2" } }, "@matrixai/db": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@matrixai/db/-/db-4.0.2.tgz", - "integrity": "sha512-09gRmxATT65oDRXvbAYRg2AVrBUcQGXWkrhA0dmmPH9QE4O7CG1pLxu0mOd8QinUhpe18wJR9IrymSmzdgYUUg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@matrixai/db/-/db-4.0.5.tgz", + "integrity": "sha512-X3gBcyPxC+bTEfi1J1Y49n1bglvg7HjM8MKNH5s+OUEswqKSZgeg1uWfXqvUqq72yjBtgRi4Ghmy4MdrIB1oMw==", "requires": { "@matrixai/async-init": "^1.7.3", "@matrixai/errors": "^1.1.1", @@ -7923,34 +7785,41 @@ "@types/abstract-leveldown": "^7.2.0", "level": "7.0.1", "threads": "^1.6.5" + }, + "dependencies": { + "@matrixai/logger": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@matrixai/logger/-/logger-2.3.0.tgz", + "integrity": "sha512-DbsUv9eBubB2WxA8aGygnY/A2Ggm9a+ZnnnL2hIWWnE+sid92FK96gubW1a+u8OrXWx559HqUTBkcPDs83zV/A==" + } } }, "@matrixai/errors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@matrixai/errors/-/errors-1.1.1.tgz", - "integrity": "sha512-ywhDblmPCfJCt3JTD8PB6rzREZ/Ex4UoLEGLw3fALhGV2AsU7NMax801PtsqbZcOfNEs2uOa1wqyhqyn3L8s9g==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@matrixai/errors/-/errors-1.1.3.tgz", + "integrity": "sha512-SqHSDd1E2IUXlqvVmEvyGChBrnQUTTHjy4hTc1SmcDBttgqS4QgBXH7aovk6Eviuhq6unSWkA9nyBDDXOT3DJA==", "requires": { "ts-custom-error": "^3.2.0" } }, "@matrixai/logger": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@matrixai/logger/-/logger-2.1.1.tgz", - "integrity": "sha512-79KM0PyJTpfkALf9DK2xGniU+9gngsb5O8hcdUviWz+zR2W0hnTQq/g7tJW0YnIEhmDe/GkJf0Bnbs+gWfj3BA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@matrixai/logger/-/logger-3.0.0.tgz", + "integrity": "sha512-J2KMMw4FCHHmIacRfbU3mBPMvGxxwRc4Y8eFEtzkOcL8WhqBfWKiZ96xNduJGxUo+nfTlj+Q2Ep9RwRw3FCxMw==" }, "@matrixai/resources": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@matrixai/resources/-/resources-1.1.3.tgz", - "integrity": "sha512-9zbA0NtgCtA+2hILpojshH6Pd679bIPtB8DcsPLVDzvGZP1TDwvtvZWCC3SG7oJUTzxqBI2Bfe+hypqwpvYPCw==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@matrixai/resources/-/resources-1.1.4.tgz", + "integrity": "sha512-YZSMtklbXah0+SxcKOVEm0ONQdWhlJecQ1COx6hg9Dl80WOybZjZ9A+N+OZfvWk9y25NuoIPzOsjhr8G1aTnIg==" }, "@matrixai/workers": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@matrixai/workers/-/workers-1.3.3.tgz", - "integrity": "sha512-ID1sSJDXjM0hdWC10euWGcFofuys7+IDP+XTBh8Gq6jirn18xJs71wSy357qxLVSa7mL00qRJJfW6rljcFUK4A==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@matrixai/workers/-/workers-1.3.6.tgz", + "integrity": "sha512-vllPhkBpEl5tNCXIN3PuiYn/fQCtQZUHsvCybkNXj/RZuBjUjktt2Yb+yCXxnw8/QRtNBDnts63qwTGCHFqU2Q==", "requires": { - "@matrixai/async-init": "^1.7.3", - "@matrixai/errors": "^1.1.1", - "@matrixai/logger": "^2.1.1", + "@matrixai/async-init": "^1.8.2", + "@matrixai/errors": "^1.1.2", + "@matrixai/logger": "^3.0.0", "threads": "^1.6.5" } }, @@ -7980,6 +7849,12 @@ "fastq": "^1.6.0" } }, + "@sinclair/typebox": { + "version": "0.24.20", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.20.tgz", + "integrity": "sha512-kVaO5aEFZb33nPMTZBxiPEkY+slxiPtqC7QX8f9B3eGOMBvEfuMfxp9DSTTCsRJPumPKjrge4yagyssO4q6qzQ==", + "dev": true + }, "@sinonjs/commons": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", @@ -7990,42 +7865,148 @@ } }, "@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true + "@swc/core": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.218.tgz", + "integrity": "sha512-wzXTeBUi3YAHr305lCo1tlxRj5Zpk7hu6rmulngH06NgrH7fS6bj8IaR7K2QPZ4ZZ4U+TGS2tOKbXBmqeMRUtg==", + "dev": true, + "requires": { + "@swc/core-android-arm-eabi": "1.2.218", + "@swc/core-android-arm64": "1.2.218", + "@swc/core-darwin-arm64": "1.2.218", + "@swc/core-darwin-x64": "1.2.218", + "@swc/core-freebsd-x64": "1.2.218", + "@swc/core-linux-arm-gnueabihf": "1.2.218", + "@swc/core-linux-arm64-gnu": "1.2.218", + "@swc/core-linux-arm64-musl": "1.2.218", + "@swc/core-linux-x64-gnu": "1.2.218", + "@swc/core-linux-x64-musl": "1.2.218", + "@swc/core-win32-arm64-msvc": "1.2.218", + "@swc/core-win32-ia32-msvc": "1.2.218", + "@swc/core-win32-x64-msvc": "1.2.218" + } + }, + "@swc/core-android-arm-eabi": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.218.tgz", + "integrity": "sha512-Q/uLCh262t3xxNzhCz+ZW9t+g2nWd0gZZO4jMYFWJs7ilKVNsBfRtfnNGGACHzkVuWLNDIWtAS2PSNodl7VUHQ==", + "dev": true, + "optional": true + }, + "@swc/core-android-arm64": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.218.tgz", + "integrity": "sha512-dy+8lUHUcyrkfPcl7azEQ4M44duRo1Uibz1E5/tltXCGoR6tu2ZN2VkqEKgA2a9XR3UD8/x4lv2r5evwJWy+uQ==", + "dev": true, + "optional": true + }, + "@swc/core-darwin-arm64": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.218.tgz", + "integrity": "sha512-aTpFjWio8G0oukN76VtXCBPtFzH0PXIQ+1dFjGGkzrBcU5suztCCbhPBGhKRoWp3NJBwfPDwwWzmG+ddXrVAKg==", + "dev": true, + "optional": true + }, + "@swc/core-darwin-x64": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.218.tgz", + "integrity": "sha512-H3w/gNzROE6gVPZCAg5qvvPihzlg88Yi7HWb/mowfpNqH9/iJ8XMdwqJyovnfUeUXsuJQBFv6uXv/ri7qhGMHA==", + "dev": true, + "optional": true + }, + "@swc/core-freebsd-x64": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.218.tgz", + "integrity": "sha512-kkch07yCSlpUrSMp0FZPWtMHJjh3lfHiwp7JYNf6CUl5xXlgT19NeomPYq31dbTzPV2VnE7TVVlAawIjuuOH4g==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm-gnueabihf": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.218.tgz", + "integrity": "sha512-vwEgvtD9f/+0HFxYD5q4sd8SG6zd0cxm17cwRGZ6jWh/d4Ninjht3CpDGE1ffh9nJ+X3Mb/7rjU/kTgWFz5qfg==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-gnu": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.218.tgz", + "integrity": "sha512-g5PQI6COUHV7x7tyaZQn6jXWtOLXXNIEQK1HS5/e+6kqqsM2NsndE9bjLhoH1EQuXiN2eUjAR/ZDOFAg102aRw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-musl": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.218.tgz", + "integrity": "sha512-IETYHB6H01NmVmlw+Ng8nkjdFBv1exGQRR74GAnHis1bVx1Uq14hREIF6XT3I1Aj26nRwlGkIYQuEKnFO5/j3Q==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-gnu": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.218.tgz", + "integrity": "sha512-PK39Zg4/YZbfchQRw77iVfB7Qat7QaK58sQt8enH39CUMXlJ+GSfC0Fqw2mtZ12sFGwmsGrK9yBy3ZVoOws5Ng==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-musl": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.218.tgz", + "integrity": "sha512-SNjrzORJYiKTSmFbaBkKZAf5B/PszwoZoFZOcd86AG192zsvQBSvKjQzMjT5rDZxB+sOnhRE7wH/bvqxZishQQ==", + "dev": true, + "optional": true + }, + "@swc/core-win32-arm64-msvc": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.218.tgz", + "integrity": "sha512-lVXFWkYl+w8+deq9mgGsfvSY5Gr1RRjFgqZ+0wMZgyaonfx7jNn3TILUwc7egumEwxK0anNriVZCyKfcO3ZIjA==", + "dev": true, + "optional": true + }, + "@swc/core-win32-ia32-msvc": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.218.tgz", + "integrity": "sha512-jgP+NZsHUh9Cp8PcXznnkpJTW3hPDLUgsXI0NKfE+8+Xvc6hALHxl6K46IyPYU67FfFlegYcBSNkOgpc85gk0A==", + "dev": true, + "optional": true + }, + "@swc/core-win32-x64-msvc": { + "version": "1.2.218", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.218.tgz", + "integrity": "sha512-XYLjX00KV4ft324Q3QDkw61xHkoN7EKkVvIpb0wXaf6wVshwU+BCDyPw2CSg4PQecNP8QGgMRQf9QM7xNtEM7A==", + "dev": true, + "optional": true }, "@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", "dev": true }, "@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true }, "@tsconfig/node14": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "dev": true }, "@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", "dev": true }, "@types/abstract-leveldown": { @@ -8108,13 +8089,13 @@ } }, "@types/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-fUy7YRpT+rHXto1YlL+J9rs0uLGyiqVt3ZOTQR+4ROc47yNl8WLdVLgUloBRhOxP1PZvguHl44T3H0wAWxahYQ==", + "version": "28.1.6", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.6.tgz", + "integrity": "sha512-0RbGAFMfcBJKOmqRazM8L98uokwuwD5F8rHrv/ZMbrZBwVOWZUyPG6VFNscjYr/vjM3Vu4fRrCPbOs42AfemaQ==", "dev": true, "requires": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" + "jest-matcher-utils": "^28.0.0", + "pretty-format": "^28.0.0" } }, "@types/json-schema": { @@ -8145,9 +8126,9 @@ } }, "@types/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", + "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==", "dev": true }, "@types/readable-stream": { @@ -8167,9 +8148,9 @@ "dev": true }, "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", + "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -8276,12 +8257,6 @@ "eslint-visitor-keys": "^3.0.0" } }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, "abstract-leveldown": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", @@ -8301,24 +8276,6 @@ "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } - }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -8327,20 +8284,11 @@ "requires": {} }, "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -8450,25 +8398,18 @@ "integrity": "sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA==", "requires": { "tslib": "^2.3.1" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + } }, "babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", + "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", "dev": true, "requires": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/transform": "^28.1.3", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", + "babel-preset-jest": "^28.1.3", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -8488,14 +8429,14 @@ } }, "babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", + "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", "dev": true, "requires": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", + "@types/babel__core": "^7.1.14", "@types/babel__traverse": "^7.0.6" } }, @@ -8520,12 +8461,12 @@ } }, "babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", + "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^27.5.1", + "babel-plugin-jest-hoist": "^28.1.3", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -8600,23 +8541,16 @@ "fill-range": "^7.0.1" } }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", + "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001366", + "electron-to-chromium": "^1.4.188", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.4" } }, "bs-logger": { @@ -8673,9 +8607,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001340", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001340.tgz", - "integrity": "sha512-jUNz+a9blQTQVu4uFcn17uAD8IDizPzQkIKh3LCJfg9BkyIqExYYdyc/ZSlWUSKb8iYiXxKsxbv4zYSvkqjrxw==", + "version": "1.0.30001370", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz", + "integrity": "sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g==", "dev": true }, "catering": { @@ -8700,9 +8634,9 @@ "dev": true }, "ci-info": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.1.tgz", - "integrity": "sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", + "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==", "dev": true }, "cjs-module-lexer": { @@ -8747,7 +8681,7 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, "collect-v8-coverage": { @@ -8771,15 +8705,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, "commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", @@ -8837,40 +8762,6 @@ "which": "^2.0.1" } }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - } - }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -8879,16 +8770,10 @@ "ms": "2.1.2" } }, - "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, "deep-is": { @@ -8921,12 +8806,6 @@ "object-keys": "^1.1.1" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, "detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -8940,9 +8819,9 @@ "dev": true }, "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", "dev": true }, "dir-glob": { @@ -8963,33 +8842,16 @@ "esutils": "^2.0.2" } }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } - } - }, "electron-to-chromium": { - "version": "1.4.137", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", - "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", + "version": "1.4.199", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.199.tgz", + "integrity": "sha512-WIGME0Cs7oob3mxsJwHbeWkH0tYkIE/sjkJ8ML2BYmuRcjhRl/q5kVDXG7W9LOOKwzPU5M0LBlXRq9rlSgnNlg==", "dev": true }, "emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", "dev": true }, "emoji-regex": { @@ -9087,66 +8949,6 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, "eslint": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", @@ -9435,19 +9237,20 @@ "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, "expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@jest/expect-utils": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" } }, "fast-deep-equal": { @@ -9559,17 +9362,6 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -9756,57 +9548,18 @@ "has-symbols": "^1.0.2" } }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, "html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, "human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -9872,7 +9625,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "is-bigint": { @@ -9970,12 +9723,6 @@ "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-2.1.0.tgz", "integrity": "sha512-DailKdLb0WU+xX8K5w7VsJhapwHLZ9jjmazqCJq4X12CTgqq73TKnbRcnSLuXYPOoLQgV5IrD7ePiX/h1vnkBw==" }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -10015,12 +9762,6 @@ "has-symbols": "^1.0.2" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -10085,9 +9826,9 @@ } }, "istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -10095,267 +9836,268 @@ } }, "jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", "dev": true, "requires": { - "@jest/core": "^27.5.1", + "@jest/core": "^28.1.3", + "@jest/types": "^28.1.3", "import-local": "^3.0.2", - "jest-cli": "^27.5.1" + "jest-cli": "^28.1.3" } }, "jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", + "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", "dev": true, "requires": { - "@jest/types": "^27.5.1", "execa": "^5.0.0", - "throat": "^6.0.1" + "p-limit": "^3.1.0" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + } } }, "jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", + "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.5.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", + "jest-each": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "p-limit": "^3.1.0", + "pretty-format": "^28.1.3", "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "stack-utils": "^2.0.3" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + } } }, "jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", + "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", "dev": true, "requires": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/core": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-config": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", "prompts": "^2.0.1", - "yargs": "^16.2.0" + "yargs": "^17.3.1" } }, "jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", "dev": true, "requires": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.1", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", + "pretty-format": "^28.1.3", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" } }, "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", "dev": true, "requires": { "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" } }, "jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", + "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", "dev": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", + "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-get-type": "^28.0.2", + "jest-util": "^28.1.3", + "pretty-format": "^28.1.3" } }, - "jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" } }, - "jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "jest-extended": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jest-extended/-/jest-extended-3.0.1.tgz", + "integrity": "sha512-OSGbKUhbjy7QikfQyK3ishFrAqLeRodBzeJk7SuuWGACAT7HHcGuJ4aUQ3ueLANx4KSv1Pa7r1LJWGtJ3eI0xA==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-diff": "^28.0.0", + "jest-get-type": "^28.0.0" } }, "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", "dev": true }, "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", + "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", + "@jest/types": "^28.1.3", + "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "fsevents": "^2.3.2", "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", "micromatch": "^4.0.4", - "walker": "^1.0.7" + "walker": "^1.0.8" } }, - "jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "jest-junit": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-14.0.0.tgz", + "integrity": "sha512-kALvBDegstTROfDGXH71UGD7k5g7593Y1wuX1wpWT+QTYcBbmtuGOA8UlAt56zo/B2eMIOcaOVEON3j0VXVa4g==", "dev": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" + "mkdirp": "^1.0.4", + "strip-ansi": "^6.0.1", + "uuid": "^8.3.2", + "xml": "^1.0.1" } }, "jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", + "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", "dev": true, "requires": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" } }, "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" } }, "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", + "pretty-format": "^28.1.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", + "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.3", "@types/node": "*" } }, @@ -10367,146 +10109,146 @@ "requires": {} }, "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", "dev": true }, "jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", + "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", + "jest-haste-map": "^28.1.3", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" } }, "jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", + "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", "dev": true, "requires": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.1.3" } }, "jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", + "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", "dev": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^28.1.3", + "@jest/environment": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "emittery": "^0.10.2", "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" + "jest-docblock": "^28.1.1", + "jest-environment-node": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-leak-detector": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-resolve": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-util": "^28.1.3", + "jest-watcher": "^28.1.3", + "jest-worker": "^28.1.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + } } }, "jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", + "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/globals": "^28.1.3", + "@jest/source-map": "^28.1.2", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "execa": "^5.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", "slash": "^3.0.0", "strip-bom": "^4.0.0" } }, - "jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } - }, "jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", + "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", "dev": true, "requires": { - "@babel/core": "^7.7.2", + "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.5.1", + "expect": "^28.1.3", "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-haste-map": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" + "pretty-format": "^28.1.3", + "semver": "^7.3.5" } }, "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -10515,17 +10257,17 @@ } }, "jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", + "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", "dev": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^28.1.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", + "jest-get-type": "^28.0.2", "leven": "^3.1.0", - "pretty-format": "^27.5.1" + "pretty-format": "^28.1.3" }, "dependencies": { "camelcase": { @@ -10537,24 +10279,25 @@ } }, "jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", "dev": true, "requires": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.5.1", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", "string-length": "^4.0.1" } }, "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", "dev": true, "requires": { "@types/node": "*", @@ -10588,41 +10331,6 @@ "argparse": "^2.0.1" } }, - "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - } - }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -10866,7 +10574,7 @@ "ltgt": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", - "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=" + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==" }, "lunr": { "version": "2.3.9", @@ -10934,21 +10642,6 @@ "picomatch": "^2.3.1" } }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -10970,6 +10663,12 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -10992,20 +10691,20 @@ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" }, "node-gyp-build": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", - "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==" + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==" }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, "node-releases": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", - "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "normalize-path": { @@ -11023,12 +10722,6 @@ "path-key": "^3.0.0" } }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, "object-inspect": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", @@ -11153,12 +10846,6 @@ "lines-and-columns": "^1.1.6" } }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -11295,14 +10982,15 @@ } }, "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", "dev": true, "requires": { + "@jest/schemas": "^28.1.3", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "dependencies": { "ansi-styles": { @@ -11336,12 +11024,6 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -11354,9 +11036,9 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, "readable-stream": { @@ -11393,7 +11075,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "resolve": { @@ -11492,21 +11174,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -11588,9 +11255,9 @@ "dev": true }, "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -11600,7 +11267,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "stack-utils": { @@ -11721,16 +11388,10 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, "systeminformation": { - "version": "5.11.15", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.11.15.tgz", - "integrity": "sha512-zUbObRjQeZcu84z9NVSm9JTiCPyPQ3MefJ3+76yvp+TeCv9WsO3szijyQLv0fChRrm2/sl2De3y1ewUOYOtz2Q==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.12.1.tgz", + "integrity": "sha512-qAV0xSeSJlg0ZHmQ1T2rLrL54SATalBx6v4T8Sd5s17pEm6saX3LKzlPhfPx+EfT91y9yhRYnKhnMoLTFkxbqw==", "dev": true }, "terminal-link": { @@ -11772,12 +11433,6 @@ "tiny-worker": ">= 2" } }, - "throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, "tiny-worker": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tiny-worker/-/tiny-worker-2.3.0.tgz", @@ -11796,7 +11451,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, "to-regex-range": { @@ -11808,62 +11463,34 @@ "is-number": "^7.0.0" } }, - "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - }, - "dependencies": { - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - } - } - }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, "ts-custom-error": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ts-custom-error/-/ts-custom-error-3.2.0.tgz", "integrity": "sha512-cBvC2QjtvJ9JfWLvstVnI45Y46Y5dMxIaG1TDMGAD/R87hpvqFL+7LhvUDhnRCfOnx/xitollFWWvUKKKhbN0A==" }, "ts-jest": { - "version": "27.1.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz", - "integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==", + "version": "28.0.7", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.7.tgz", + "integrity": "sha512-wWXCSmTwBVmdvWrOpYhal79bDpioDy4rTT+0vyUnE3ZzM7LOAAGG9NXwzkEL/a516rQEgnMmS/WKP9jBPCVJyA==", "dev": true, "requires": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", + "jest-util": "^28.0.0", + "json5": "^2.2.1", "lodash.memoize": "4.x", "make-error": "1.x", "semver": "7.x", - "yargs-parser": "20.x" + "yargs-parser": "^21.0.1" } }, "ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, "requires": { - "@cspotcode/source-map-support": "0.7.0", + "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", @@ -11874,16 +11501,8 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" - }, - "dependencies": { - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - } } }, "tsconfig-paths": { @@ -11958,15 +11577,6 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, "typedoc": { "version": "0.22.15", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.15.tgz", @@ -12023,6 +11633,16 @@ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, + "update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -12045,6 +11665,12 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, "v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -12058,22 +11684,14 @@ "dev": true }, "v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } + "convert-source-map": "^1.6.0" } }, "vscode-oniguruma": { @@ -12088,24 +11706,6 @@ "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", "dev": true }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "requires": { - "xml-name-validator": "^3.0.0" - } - }, "walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -12115,38 +11715,6 @@ "makeerror": "1.0.12" } }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -12192,34 +11760,19 @@ "dev": true }, "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", + "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", "dev": true, "requires": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "signal-exit": "^3.0.7" } }, - "ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "dev": true, - "requires": {} - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", "dev": true }, "y18n": { @@ -12235,24 +11788,24 @@ "dev": true }, "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "dev": true, "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.0.0" } }, "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true }, "yn": { @@ -12260,6 +11813,12 @@ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/package.json b/package.json index 7c604cf8..febb4668 100644 --- a/package.json +++ b/package.json @@ -33,22 +33,24 @@ "types": "dist/index.d.ts", "scripts": { "prepare": "tsc -p ./tsconfig.build.json", - "build": "rm -r ./dist || true; tsc -p ./tsconfig.build.json", - "ts-node": "ts-node -r tsconfig-paths/register", + "build": "rimraf ./dist && tsc -p ./tsconfig.build.json", + "postversion": "npm install --package-lock-only --ignore-scripts --silent", + "ts-node": "ts-node", "test": "jest", - "lint": "eslint '{src,tests,benches}/**/*.{js,ts}'", - "lintfix": "eslint '{src,tests,benches}/**/*.{js,ts}' --fix", - "docs": "rm -r ./docs || true; typedoc --gitRevision master --tsconfig ./tsconfig.build.json --out ./docs src", - "bench": "rm -r ./benches/results || true; ts-node -r tsconfig-paths/register ./benches" + "lint": "eslint '{src,tests,scripts,benches}/**/*.{js,ts}'", + "lintfix": "eslint '{src,tests,scripts,benches}/**/*.{js,ts}' --fix", + "lint-shell": "find ./src ./tests ./scripts -type f -regextype posix-extended -regex '.*\\.(sh)' -exec shellcheck {} +", + "docs": "rimraf ./docs && typedoc --gitRevision master --tsconfig ./tsconfig.build.json --out ./docs src", + "bench": "rimraf ./benches/results && ts-node ./benches" }, "dependencies": { - "@matrixai/async-init": "^1.7.3", - "@matrixai/async-locks": "^2.2.4", + "@matrixai/async-init": "^1.8.2", + "@matrixai/async-locks": "^3.1.2", "@matrixai/db": "^4.0.2", - "@matrixai/errors": "^1.1.1", - "@matrixai/logger": "^2.1.1", - "@matrixai/resources": "^1.1.3", - "@matrixai/workers": "^1.3.3", + "@matrixai/errors": "^1.1.3", + "@matrixai/logger": "^3.0.0", + "@matrixai/resources": "^1.1.4", + "@matrixai/workers": "^1.3.6", "errno": "^0.1.7", "lexicographic-integer": "^1.1.0", "node-forge": "^1.3.1", @@ -58,22 +60,27 @@ "util-callbackify": "^1.0.0" }, "devDependencies": { - "@types/jest": "^27.0.2", + "@swc/core": "^1.2.215", + "@types/jest": "^28.1.3", "@types/node": "^16.11.7", "@types/node-forge": "^1.0.2", "@types/readable-stream": "^2.3.11", "@typescript-eslint/eslint-plugin": "^5.23.0", "@typescript-eslint/parser": "^5.23.0", - "benny": "^3.6.15", + "benny": "^3.7.1", + "common-tags": "^1.8.2", "eslint": "^8.15.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-prettier": "^4.0.0", - "jest": "^27.2.5", + "jest": "^28.1.1", + "jest-extended": "^3.0.1", + "jest-junit": "^14.0.0", "prettier": "^2.6.2", - "systeminformation": "^5.8.9", - "ts-jest": "^27.0.5", - "ts-node": "^10.4.0", + "rimraf": "^3.0.2", + "systeminformation": "^5.12.1", + "ts-jest": "^28.0.5", + "ts-node": "^10.9.1", "tsconfig-paths": "^3.9.0", "typedoc": "^0.22.15", "typescript": "^4.5.2" diff --git a/pkgs.nix b/pkgs.nix index 6fe22a5b..a41cd7fc 100644 --- a/pkgs.nix +++ b/pkgs.nix @@ -1,4 +1,4 @@ import ( - let rev = "a5774e76bb8c3145eac524be62375c937143b80c"; in + let rev = "ce6aa13369b667ac2542593170993504932eb836"; in builtins.fetchTarball "https://github.com/NixOS/nixpkgs/archive/${rev}.tar.gz" ) diff --git a/scripts/brew-install.sh b/scripts/brew-install.sh new file mode 100755 index 00000000..2e222576 --- /dev/null +++ b/scripts/brew-install.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +set -o errexit # abort on nonzero exitstatus +set -o nounset # abort on unbound variable +set -o pipefail # don't hide errors within pipes + +export HOMEBREW_NO_INSTALL_UPGRADE=1 +export HOMEBREW_NO_INSTALL_CLEANUP=1 +export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 +export HOMEBREW_NO_AUTO_UPDATE=1 +export HOMEBREW_NO_ANALYTICS=1 + +brew install node@16 +brew link --overwrite node@16 diff --git a/scripts/choco-install.ps1 b/scripts/choco-install.ps1 new file mode 100755 index 00000000..765080a9 --- /dev/null +++ b/scripts/choco-install.ps1 @@ -0,0 +1,30 @@ +function Save-ChocoPackage { + param ( + $PackageName + ) + Rename-Item -Path "$env:ChocolateyInstall\lib\$PackageName\$PackageName.nupkg" -NewName "$PackageName.nupkg.zip" -ErrorAction:SilentlyContinue + Expand-Archive -LiteralPath "$env:ChocolateyInstall\lib\$PackageName\$PackageName.nupkg.zip" -DestinationPath "$env:ChocolateyInstall\lib\$PackageName" -Force + Remove-Item "$env:ChocolateyInstall\lib\$PackageName\_rels" -Recurse + Remove-Item "$env:ChocolateyInstall\lib\$PackageName\package" -Recurse + Remove-Item "$env:ChocolateyInstall\lib\$PackageName\[Content_Types].xml" + New-Item -Path "${PSScriptRoot}\..\tmp\chocolatey\$PackageName" -ItemType "directory" -ErrorAction:SilentlyContinue + choco pack "$env:ChocolateyInstall\lib\$PackageName\$PackageName.nuspec" --outdir "${PSScriptRoot}\..\tmp\chocolatey\$PackageName" +} + +# Check for existence of required environment variables +if ( $null -eq $env:ChocolateyInstall ) { + [Console]::Error.WriteLine('Missing $env:ChocolateyInstall environment variable') + exit 1 +} + +# Add the cached packages with source priority 1 (Chocolatey community is 0) +New-Item -Path "${PSScriptRoot}\..\tmp\chocolatey" -ItemType "directory" -ErrorAction:SilentlyContinue +choco source add --name="cache" --source="${PSScriptRoot}\..\tmp\chocolatey" --priority=1 + +# Install nodejs v16.15.1 (will use cache if exists) +$nodejs = "nodejs.install" +choco install "$nodejs" --version="16.15.1" --require-checksums -y +# Internalise nodejs to cache if doesn't exist +if ( -not (Test-Path -Path "${PSScriptRoot}\..\tmp\chocolatey\$nodejs\$nodejs.16.15.1.nupkg" -PathType Leaf) ) { + Save-ChocoPackage -PackageName $nodejs +} diff --git a/shell.nix b/shell.nix index 9826f8b7..6544862f 100644 --- a/shell.nix +++ b/shell.nix @@ -1,27 +1,33 @@ -{ pkgs ? import ./pkgs.nix {} }: +{ pkgs ? import ./pkgs.nix {}, ci ? false }: with pkgs; -pkgs.mkShell { +mkShell { nativeBuildInputs = [ nodejs - nodePackages.node2nix + shellcheck + gitAndTools.gh ]; shellHook = '' - echo 'Entering js-encryptedfs' + echo "Entering $(npm pkg get name)" set -o allexport . ./.env set +o allexport set -v - + ${ + lib.optionalString ci + '' + set -o errexit + set -o nounset + set -o pipefail + shopt -s inherit_errexit + '' + } mkdir --parents "$(pwd)/tmp" # Built executables and NPM executables export PATH="$(pwd)/dist/bin:$(npm bin):$PATH" - # Enables npm link - export npm_config_prefix=~/.npm - - npm install + npm install --ignore-scripts set +v ''; diff --git a/src/EncryptedFS.ts b/src/EncryptedFS.ts index b3328e52..ea338207 100644 --- a/src/EncryptedFS.ts +++ b/src/EncryptedFS.ts @@ -104,6 +104,7 @@ class EncryptedFS { decrypt: utils.decrypt, }, }, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger: logger.getChild(DB.name), fresh, }); @@ -156,7 +157,7 @@ class EncryptedFS { }, ); fdMgr = fdMgr ?? new FileDescriptorManager(iNodeMgr); - const efs = new EncryptedFS({ + const efs = new this({ db, iNodeMgr, fdMgr, @@ -477,11 +478,12 @@ class EncryptedFS { let fd: FileDescriptor | undefined; if (typeof file === 'number') { fd = this.fdMgr.getFd(file); - if (!fd) + if (!fd) { throw new errors.ErrorEncryptedFSError({ errno: errno.EBADF, syscall: 'appendFile', }); + } if (!(fd.flags & (constants.O_WRONLY | constants.O_RDWR))) { throw new errors.ErrorEncryptedFSError({ errno: errno.EBADF, diff --git a/src/inodes/INodeManager.ts b/src/inodes/INodeManager.ts index fb1d8743..1e168fc6 100644 --- a/src/inodes/INodeManager.ts +++ b/src/inodes/INodeManager.ts @@ -46,7 +46,7 @@ class INodeManager { fresh?: boolean; }): Promise { logger.info(`Creating ${this.name}`); - const iNodeMgr = new INodeManager({ + const iNodeMgr = new this({ db, logger, }); diff --git a/tests/EncryptedFS.concurrent.test.ts b/tests/EncryptedFS.concurrent.test.ts index fef15b47..f9e8bcf6 100644 --- a/tests/EncryptedFS.concurrent.test.ts +++ b/tests/EncryptedFS.concurrent.test.ts @@ -2,7 +2,7 @@ import type { FdIndex } from '@/fd/types'; import type { INodeData } from '@/inodes/types'; import fs from 'fs'; import os from 'os'; -import path from 'path'; +import pathNode from 'path'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { code as errno } from 'errno'; import { DB } from '@matrixai/db'; @@ -25,7 +25,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { let efs: EncryptedFS; beforeEach(async () => { dataDir = await fs.promises.mkdtemp( - path.join(os.tmpdir(), 'encryptedfs-test-'), + pathNode.join(os.tmpdir(), 'encryptedfs-test-'), ); db = await DB.createDB({ dbPath: dataDir, @@ -36,6 +36,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { decrypt: utils.decrypt, }, }, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger: logger.getChild(DB.name), }); iNodeMgr = await INodeManager.createINodeManager({ @@ -75,7 +76,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { ]); }); test('EncryptedFS.mknod and EncryptedFS.mknod', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); let results = await Promise.allSettled([ @@ -128,7 +129,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.mkdir and EncryptedFS.mknod', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); let results = await Promise.allSettled([ @@ -181,7 +182,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.open and EncryptedFS.mkdir', async () => { - const path1 = path.join('dir', 'dir1'); + const path1 = utils.pathJoin('dir', 'dir1'); await efs.mkdir('dir'); let results = await Promise.allSettled([ @@ -356,7 +357,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { ); }); test('EncryptedFS.fallocate and EncryptedFS.writeFile', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); let fd = await efs.open(path1, 'wx+'); @@ -479,7 +480,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.fallocate and EncryptedFS.write', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); let fd = await efs.open(path1, 'wx+'); @@ -540,7 +541,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.fallocate and EncryptedFS.createWriteStream', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); let fd = await efs.open(path1, 'wx+'); @@ -656,7 +657,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.truncate and EncryptedFS.writeFile', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); let fd = await efs.open(path1, 'wx+'); @@ -791,7 +792,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.truncate and EncryptedFS.write', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); let fd = await efs.open(path1, 'wx+'); @@ -856,7 +857,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.truncate and EncryptedFS.createWriteStream', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const phrase = 'The quick brown fox jumped over the lazy dog'.split(' '); await efs.mkdir('dir'); let fd = await efs.open(path1, 'wx+'); @@ -965,7 +966,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.ftruncate and EncryptedFS.writeFile', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); let fd = await efs.open(path1, 'wx+'); @@ -1100,7 +1101,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.ftruncate and EncryptedFS.write', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); let fd = await efs.open(path1, 'wx+'); @@ -1165,7 +1166,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.ftruncate and EncryptedFS.createWriteStream', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const phrase = 'The quick brown fox jumped over the lazy dog'.split(' '); await efs.mkdir('dir'); let fd = await efs.open(path1, 'wx+'); @@ -1274,7 +1275,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.utimes and EncryptedFS.writeFile', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const nowTime = Date.now(); await sleep(10); await efs.mkdir('dir'); @@ -1324,7 +1325,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.futimes and EncryptedFS.writeFile', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const nowTime = Date.now(); await sleep(10); await efs.mkdir('dir'); @@ -1376,8 +1377,8 @@ describe(`${EncryptedFS.name} Concurrency`, () => { await efs.close(fd); }); test('EncryptedFS.utimes a directory and EncryptedFS.writeFile', async () => { - const path1 = path.join('dir', 'dir1'); - const path2 = path.join(path1, 'file1'); + const path1 = utils.pathJoin('dir', 'dir1'); + const path2 = utils.pathJoin(path1, 'file1'); const nowTime = Date.now(); await sleep(10); await efs.mkdir('dir'); @@ -1428,7 +1429,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.lseek and EncryptedFS.writeFile', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); let fd = await efs.open(path1, 'wx+'); @@ -1474,7 +1475,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { expect(contents.length).toEqual(4); }); test('EncryptedFS.lseek and EncryptedFS.writeFile with fd', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); let fd = await efs.open(path1, 'wx+'); @@ -1520,7 +1521,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { expect(contents.length).toEqual(4); }); test('EncryptedFS.lseek and EncryptedFS.write', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); let fd = await efs.open(path1, 'wx+'); @@ -1585,7 +1586,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.lseek and EncryptedFS.readFile', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); let fd = await efs.open(path1, 'wx+'); await efs.writeFile(path1, 'test'); @@ -1633,7 +1634,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { expect(contents.length).toEqual(4); }); test('EncryptedFS.lseek and EncryptedFS.read', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); await efs.writeFile( path1, @@ -1699,7 +1700,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.lseek and EncryptedFS.lseek setting position', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); let fd = await efs.open(path1, 'wx+'); @@ -1756,7 +1757,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.createReadStream and EncryptedFS.createWriteStream', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const dataA = 'AAAAA'; const dataB = 'BBBBB'.repeat(5); await efs.mkdir('dir'); @@ -1851,7 +1852,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.write and EncryptedFS.createWriteStream', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const dataA = 'AAAAA'; const dataB = 'BBBBB'.repeat(5); await efs.mkdir('dir'); @@ -1931,7 +1932,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.createReadStream and EncryptedFS.write', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const dataA = 'AAAAA'; const dataB = 'BBBBB'.repeat(5); await efs.mkdir('dir'); @@ -2015,14 +2016,13 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.read and EncryptedFS.createWriteStream', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const dataA = 'AAAAA'; await efs.mkdir('dir'); await efs.writeFile(path1, ''); - let fd = await efs.open(path1, 'r+'); + const fd = await efs.open(path1, 'r+'); const buffer = Buffer.alloc(100); - - let results = await Promise.allSettled([ + const results = await Promise.allSettled([ (async () => { return efs.read(fd, buffer, undefined, 100); })(), @@ -2037,64 +2037,25 @@ describe(`${EncryptedFS.name} Concurrency`, () => { await endProm.p; })(), ]); - let contents = buffer.toString(); - - if (results[0].status === 'fulfilled' && results[0].value === 50) { - expect(results).toStrictEqual([ - { status: 'fulfilled', value: 50 }, - { status: 'fulfilled', value: undefined }, - ]); - expect(contents).toEqual(dataA.repeat(10) + '\0'.repeat(50)); - } else { - expect(results).toStrictEqual([ - { status: 'fulfilled', value: 0 }, - { status: 'fulfilled', value: undefined }, - ]); - expect(contents).toEqual('\0'.repeat(100)); - } - - // Cleaning up - buffer.fill(0); - await efs.close(fd); - await efs.rmdir('dir', { recursive: true }); - await efs.mkdir('dir'); - await efs.writeFile(path1, ''); - fd = await efs.open(path1, 'r+'); - - results = await Promise.allSettled([ - (async () => { - await sleep(100); - return efs.read(fd, buffer, undefined, 100); - })(), - (async () => { - const writeStream = efs.createWriteStream(path1); - for (let i = 0; i < 10; i++) { - writeStream.write(dataA); - } - writeStream.end(); - const endProm = promise(); - writeStream.on('finish', () => endProm.resolveP()); - await endProm.p; - })(), + const contents = buffer.toString(); + // Each write is atomic, so reads will occur at multiples of each write + expect(results).toStrictEqual([ + { + status: 'fulfilled', + value: expect.toSatisfy((v) => v % 5 === 0), + }, + { + status: 'fulfilled', + value: undefined, + }, ]); - contents = buffer.toString(); - - if (results[0].status === 'fulfilled' && results[0].value === 50) { - expect(results).toStrictEqual([ - { status: 'fulfilled', value: 50 }, - { status: 'fulfilled', value: undefined }, - ]); - expect(contents).toEqual(dataA.repeat(10) + '\0'.repeat(50)); - } else { - expect(results).toStrictEqual([ - { status: 'fulfilled', value: 0 }, - { status: 'fulfilled', value: undefined }, - ]); - expect(contents).toEqual('\0'.repeat(100)); - } + const bytesRead = (results[0] as PromiseFulfilledResult).value; + expect(contents).toStrictEqual( + dataA.repeat(bytesRead / 5) + '\0'.repeat(100 - bytesRead), + ); }); test('EncryptedFS.createReadStream and EncryptedFS.read', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const dataB = 'BBBBB'.repeat(5); await efs.mkdir('dir'); await efs.writeFile(path1, dataB); @@ -2162,7 +2123,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { ]); }); test('EncryptedFS.createWriteStream and EncryptedFS.createWriteStream', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const dataA = 'AAAAA'; const dataB = 'BBBBB'; await efs.mkdir('dir'); @@ -2251,7 +2212,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.unlink and EncryptedFS.writeFile', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); await efs.writeFile(path1, ''); @@ -2300,7 +2261,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.unlink and EncryptedFS.open', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); await efs.writeFile(path1, ''); @@ -2363,7 +2324,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.unlink and EncryptedFS.write', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); await efs.writeFile(path1, ''); let fd = await efs.open(path1, 'r+'); @@ -2406,7 +2367,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { expect(await efs.exists(path1)).toEqual(false); }); test('EncryptedFS.unlink and EncryptedFS.createWriteStream', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const dataA = 'AAAAA'; await efs.mkdir('dir'); await efs.writeFile(path1, ''); @@ -2476,7 +2437,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.appendFIle and EncryptedFS.writeFile', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const dataA = 'A'.repeat(10); const dataB = 'B'.repeat(10); await efs.mkdir('dir'); @@ -2536,7 +2497,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.appendFIle and EncryptedFS.writeFile with fd', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const dataA = 'A'.repeat(10); const dataB = 'B'.repeat(10); await efs.mkdir('dir'); @@ -2598,7 +2559,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.appendFIle and EncryptedFS.write', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const dataA = 'A'.repeat(10); const dataB = 'B'.repeat(10); await efs.mkdir('dir'); @@ -2660,7 +2621,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.appendFIle and EncryptedFS.createReadStream', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const dataA = 'AAAAA'; const dataB = 'BBBBBBBBBBBBBBBBBBBB'; await efs.mkdir('dir'); @@ -2772,8 +2733,8 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.copyFile and EncryptedFS.writeFile', async () => { - const path1 = path.join('dir', 'file1'); - const path2 = path.join('dir', 'file2'); + const path1 = utils.pathJoin('dir', 'file1'); + const path2 = utils.pathJoin('dir', 'file2'); const dataA = 'A'.repeat(10); const dataB = 'B'.repeat(10); await efs.mkdir('dir'); @@ -2832,8 +2793,8 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.copyFile and EncryptedFS.writeFile with fd', async () => { - const path1 = path.join('dir', 'file1'); - const path2 = path.join('dir', 'file2'); + const path1 = utils.pathJoin('dir', 'file1'); + const path2 = utils.pathJoin('dir', 'file2'); const dataA = 'A'.repeat(10); const dataB = 'B'.repeat(10); await efs.mkdir('dir'); @@ -2895,8 +2856,8 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.copyFile and EncryptedFS.write', async () => { - const path1 = path.join('dir', 'file1'); - const path2 = path.join('dir', 'file2'); + const path1 = utils.pathJoin('dir', 'file1'); + const path2 = utils.pathJoin('dir', 'file2'); const dataA = 'A'.repeat(10); const dataB = 'B'.repeat(10); await efs.mkdir('dir'); @@ -2958,8 +2919,8 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.copyFile and EncryptedFS.createWriteStream', async () => { - const path1 = path.join('dir', 'file1'); - const path2 = path.join('dir', 'file2'); + const path1 = utils.pathJoin('dir', 'file1'); + const path2 = utils.pathJoin('dir', 'file2'); const dataA = 'AAAAA'; await efs.mkdir('dir'); await efs.writeFile(path1, ''); @@ -3067,7 +3028,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { expect(stat.size).toBeLessThanOrEqual(50); }); test('EncryptedFS.readFile and EncryptedFS.writeFile', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); await efs.mkdir('dir'); const dataA = 'AAAAA'; const dataB = 'BBBBB'; @@ -3122,7 +3083,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.read and EncryptedFS.write with different fd', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const dataA = 'AAAAA'; const dataB = 'BBBBB'; const buffer = Buffer.alloc(100); @@ -3191,7 +3152,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.read and EncryptedFS.write with same fd', async () => { - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); const dataA = 'AAAAA'; const dataB = 'BBBBB'; const buffer = Buffer.alloc(100); @@ -3391,7 +3352,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { }); test('EncryptedFS.readdir and EncryptedFS.mkdir', async () => { await efs.mkdir('dir'); - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); let results = await Promise.allSettled([ (async () => { @@ -3407,8 +3368,9 @@ describe(`${EncryptedFS.name} Concurrency`, () => { result.status === 'fulfilled' && typeof result.value === 'object' && result.value.length === 0 - ) + ) { return true; + } return result.status === 'fulfilled' && result.value === undefined; }) ) { @@ -3455,7 +3417,7 @@ describe(`${EncryptedFS.name} Concurrency`, () => { }); test('EncryptedFS.readdir and EncryptedFS.writeFile', async () => { await efs.mkdir('dir'); - const path1 = path.join('dir', 'file1'); + const path1 = utils.pathJoin('dir', 'file1'); let results = await Promise.allSettled([ (async () => { return await efs.readdir('dir'); @@ -3470,8 +3432,9 @@ describe(`${EncryptedFS.name} Concurrency`, () => { result.status === 'fulfilled' && typeof result.value === 'object' && result.value.length === 0 - ) + ) { return true; + } return result.status === 'fulfilled' && result.value === undefined; }) ) { @@ -3503,8 +3466,9 @@ describe(`${EncryptedFS.name} Concurrency`, () => { result.status === 'fulfilled' && typeof result.value === 'object' && result.value.length === 0 - ) + ) { return true; + } return result.status === 'fulfilled' && result.value === undefined; }) ) { @@ -3520,8 +3484,8 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.readdir and EncryptedFS.rename', async () => { - const PATH1 = path.join('dir', 'file1'); - const PATH2 = path.join('dir', 'file2'); + const PATH1 = utils.pathJoin('dir', 'file1'); + const PATH2 = utils.pathJoin('dir', 'file2'); await efs.mkdir('dir'); await efs.writeFile(PATH1, 'test'); @@ -3540,8 +3504,9 @@ describe(`${EncryptedFS.name} Concurrency`, () => { result.status === 'fulfilled' && typeof result.value === 'object' && result.value.includes('file1') - ) + ) { return true; + } return result.status === 'fulfilled' && result.value === undefined; }) ) { @@ -3574,8 +3539,9 @@ describe(`${EncryptedFS.name} Concurrency`, () => { result.status === 'fulfilled' && typeof result.value === 'object' && result.value.includes('file1') - ) + ) { return true; + } return result.status === 'fulfilled' && result.value === undefined; }) ) { @@ -3608,8 +3574,9 @@ describe(`${EncryptedFS.name} Concurrency`, () => { result.status === 'fulfilled' && typeof result.value === 'object' && result.value.includes('file1') - ) + ) { return true; + } return result.status === 'fulfilled' && result.value === undefined; }) ) { @@ -3642,8 +3609,9 @@ describe(`${EncryptedFS.name} Concurrency`, () => { result.status === 'fulfilled' && typeof result.value === 'object' && result.value.includes('file1') - ) + ) { return true; + } return result.status === 'fulfilled' && result.value === undefined; }) ) { @@ -3659,8 +3627,8 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.rmdir and EncryptedFS.rename', async () => { - const PATH1 = path.join('dir', 'p1'); - const PATH2 = path.join('dir', 'p2'); + const PATH1 = utils.pathJoin('dir', 'p1'); + const PATH2 = utils.pathJoin('dir', 'p2'); await efs.mkdir('dir'); await efs.mkdir(PATH1); @@ -3722,8 +3690,8 @@ describe(`${EncryptedFS.name} Concurrency`, () => { }); describe('concurrent symlinking', () => { test('EncryptedFS.symlink and EncryptedFS.symlink', async () => { - const path1 = path.join('dir', 'file1'); - const path2 = path.join('dir', 'file2'); + const path1 = utils.pathJoin('dir', 'file1'); + const path2 = utils.pathJoin('dir', 'file2'); await efs.mkdir('dir'); await efs.writeFile(path1, 'test'); @@ -3778,8 +3746,8 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.symlink and EncryptedFS.mknod', async () => { - const path1 = path.join('dir', 'file1'); - const path2 = path.join('dir', 'file2'); + const path1 = utils.pathJoin('dir', 'file1'); + const path2 = utils.pathJoin('dir', 'file2'); await efs.mkdir('dir'); await efs.writeFile(path1, ''); @@ -3834,8 +3802,8 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.mkdir and EncryptedFS.symlink', async () => { - const path1 = path.join('dir', 'file1'); - const path2 = path.join('dir', 'file2'); + const path1 = utils.pathJoin('dir', 'file1'); + const path2 = utils.pathJoin('dir', 'file2'); await efs.mkdir('dir'); await efs.writeFile(path1, ''); @@ -3890,8 +3858,8 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.write and EncryptedFS.symlink', async () => { - const path1 = path.join('dir', 'file1'); - const path2 = path.join('dir', 'file2'); + const path1 = utils.pathJoin('dir', 'file1'); + const path2 = utils.pathJoin('dir', 'file2'); await efs.mkdir('dir'); await efs.writeFile(path1, ''); let fd = await efs.open(path1, 'r+'); @@ -3933,8 +3901,8 @@ describe(`${EncryptedFS.name} Concurrency`, () => { }); describe('concurrent inode linking and unlinking', () => { test('EncryptedFS.link and EncryptedFS.link', async () => { - const path1 = path.join('dir', 'file1'); - const path2 = path.join('dir', 'file2'); + const path1 = utils.pathJoin('dir', 'file1'); + const path2 = utils.pathJoin('dir', 'file2'); await efs.mkdir('dir'); await efs.writeFile(path1, 'test'); @@ -3989,8 +3957,8 @@ describe(`${EncryptedFS.name} Concurrency`, () => { } }); test('EncryptedFS.link and EncryptedFS.symlink', async () => { - const path1 = path.join('dir', 'file1'); - const path2 = path.join('dir', 'file2'); + const path1 = utils.pathJoin('dir', 'file1'); + const path2 = utils.pathJoin('dir', 'file2'); await efs.mkdir('dir'); await efs.writeFile(path1, 'test'); diff --git a/tests/EncryptedFS.dirs.test.ts b/tests/EncryptedFS.dirs.test.ts index 92df5b4f..f1cb23c0 100644 --- a/tests/EncryptedFS.dirs.test.ts +++ b/tests/EncryptedFS.dirs.test.ts @@ -2,7 +2,6 @@ import type { FileTypes } from './utils'; import os from 'os'; import fs from 'fs'; import pathNode from 'path'; -import path from 'path'; import Logger, { StreamHandler, LogLevel } from '@matrixai/logger'; import { code as errno } from 'errno'; import EncryptedFS from '@/EncryptedFS'; @@ -193,12 +192,12 @@ describe(`${EncryptedFS.name} Directories`, () => { await efs.symlink(n0, n1); await efs.symlink(n1, n0); await expectError( - efs.rmdir(path.join(n0, 'test')), + efs.rmdir(utils.pathJoin(n0, 'test')), ErrorEncryptedFSError, errno.ELOOP, ); await expectError( - efs.rmdir(path.join(n1, 'test')), + efs.rmdir(utils.pathJoin(n1, 'test')), ErrorEncryptedFSError, errno.ELOOP, ); @@ -209,7 +208,7 @@ describe(`${EncryptedFS.name} Directories`, () => { "returns ENOTEMPTY if the named directory contains files other than '.' and '..' in it for %s", async (type) => { await efs.mkdir(n0, 0o0755); - await createFile(efs, type as FileTypes, path.join(n0, n1)); + await createFile(efs, type as FileTypes, utils.pathJoin(n0, n1)); await expectError( efs.rmdir(n0), ErrorEncryptedFSError, @@ -219,30 +218,30 @@ describe(`${EncryptedFS.name} Directories`, () => { ); test('returns EACCES when search permission is denied for a component of the path prefix', async () => { await efs.mkdir(n0, 0o0755); - await efs.mkdir(path.join(n0, n1), 0o0755); - await efs.chown(path.join(n0, n1), 0o65534, 0o65534); - await efs.mkdir(path.join(n0, n1, n2), 0o0755); - await efs.chown(path.join(n0, n1, n2), 0o65534, 0o65534); - await efs.chmod(path.join(n0, n1), 0o0644); + await efs.mkdir(utils.pathJoin(n0, n1), 0o0755); + await efs.chown(utils.pathJoin(n0, n1), 0o65534, 0o65534); + await efs.mkdir(utils.pathJoin(n0, n1, n2), 0o0755); + await efs.chown(utils.pathJoin(n0, n1, n2), 0o65534, 0o65534); + await efs.chmod(utils.pathJoin(n0, n1), 0o0644); efs.gid = 0o65534; efs.uid = 0o65534; await expectError( - efs.rmdir(path.join(n0, n1, n2)), + efs.rmdir(utils.pathJoin(n0, n1, n2)), ErrorEncryptedFSError, errno.EACCES, ); }); test('returns EACCES when write permission is denied on the directory containing the link to be removed', async () => { await efs.mkdir(n0, { mode: 0o0755 }); - await efs.mkdir(path.join(n0, n1), { mode: 0o0755 }); - await efs.chown(path.join(n0, n1), 0o65534, 0o65534); - await efs.mkdir(path.join(n0, n1, n2), { mode: 0o0755 }); - await efs.chown(path.join(n0, n1, n2), 0o65534, 0o65534); - await efs.chmod(path.join(n0, n1), 0o0555); + await efs.mkdir(utils.pathJoin(n0, n1), { mode: 0o0755 }); + await efs.chown(utils.pathJoin(n0, n1), 0o65534, 0o65534); + await efs.mkdir(utils.pathJoin(n0, n1, n2), { mode: 0o0755 }); + await efs.chown(utils.pathJoin(n0, n1, n2), 0o65534, 0o65534); + await efs.chmod(utils.pathJoin(n0, n1), 0o0555); efs.gid = 0o65543; efs.uid = 0o65543; await expectError( - efs.rmdir(path.join(n0, n1, n2)), + efs.rmdir(utils.pathJoin(n0, n1, n2)), ErrorEncryptedFSError, errno.EACCES, ); @@ -251,22 +250,22 @@ describe(`${EncryptedFS.name} Directories`, () => { 'recursively deletes the directory if it contains %s', async (type) => { await efs.mkdir(n0, { mode: 0o0755 }); - await createFile(efs, type as FileTypes, path.join(n0, n1)); + await createFile(efs, type as FileTypes, utils.pathJoin(n0, n1)); await efs.rmdir(n0, { recursive: true }); await expect(efs.readdir('.')).resolves.toEqual([]); }, ); test('recursively deletes a deep directory', async () => { await efs.mkdir(n0, { mode: 0o0755 }); - await efs.mkdir(path.join(n0, n1), { mode: 0o0755 }); - await efs.mkdir(path.join(n0, n1, n2), { mode: 0o0755 }); - await efs.writeFile(path.join(n0, n2), 'test'); - await efs.writeFile(path.join(n0, n0), 'test'); - await efs.writeFile(path.join(n0, n1, n1), 'test'); - await efs.writeFile(path.join(n0, n1, n0), 'test'); - await efs.writeFile(path.join(n0, n1, n2, n0), 'test'); - await efs.writeFile(path.join(n0, n1, n2, n1), 'test'); - await efs.writeFile(path.join(n0, n1, n2, n2), 'test'); + await efs.mkdir(utils.pathJoin(n0, n1), { mode: 0o0755 }); + await efs.mkdir(utils.pathJoin(n0, n1, n2), { mode: 0o0755 }); + await efs.writeFile(utils.pathJoin(n0, n2), 'test'); + await efs.writeFile(utils.pathJoin(n0, n0), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n1), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n0), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n2, n0), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n2, n1), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n2, n2), 'test'); await efs.rmdir(n0, { recursive: true }); await expect(efs.readdir('.')).resolves.toEqual([]); }); @@ -278,15 +277,15 @@ describe(`${EncryptedFS.name} Directories`, () => { efs.uid = 1000; efs.gid = 1000; await efs.mkdir(n0, { mode: 0o0755 }); - await efs.mkdir(path.join(n0, n1), { mode: 0o0755 }); - await efs.mkdir(path.join(n0, n1, n2), { mode: 0o0755 }); - await efs.writeFile(path.join(n0, n2), 'test'); - await efs.writeFile(path.join(n0, n0), 'test'); - await efs.writeFile(path.join(n0, n1, n1), 'test'); - await efs.writeFile(path.join(n0, n1, n0), 'test'); - await efs.writeFile(path.join(n0, n1, n2, n0), 'test'); - await efs.writeFile(path.join(n0, n1, n2, n1), 'test'); - await efs.writeFile(path.join(n0, n1, n2, n2), 'test'); + await efs.mkdir(utils.pathJoin(n0, n1), { mode: 0o0755 }); + await efs.mkdir(utils.pathJoin(n0, n1, n2), { mode: 0o0755 }); + await efs.writeFile(utils.pathJoin(n0, n2), 'test'); + await efs.writeFile(utils.pathJoin(n0, n0), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n1), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n0), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n2, n0), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n2, n1), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n2, n2), 'test'); // Removing write permissions from directory n0 await efs.chmod(n0, MODE_RX); // Expectation is that direct n0, n0/n1 has no permissions @@ -296,13 +295,13 @@ describe(`${EncryptedFS.name} Directories`, () => { errno.EACCES, ); await expectError( - efs.rmdir(path.join(n0, n1), { recursive: true }), + efs.rmdir(utils.pathJoin(n0, n1), { recursive: true }), ErrorEncryptedFSError, errno.EACCES, ); // But n0/n1/n2 and deeper still has permission to be removed await expect( - efs.rmdir(path.join(n0, n1, n2), { recursive: true }), + efs.rmdir(utils.pathJoin(n0, n1, n2), { recursive: true }), ).resolves.toBeUndefined(); }); test('to fail recursive delete when the parent directory lacks the search permission', async () => { @@ -310,15 +309,15 @@ describe(`${EncryptedFS.name} Directories`, () => { efs.uid = 1000; efs.gid = 1000; await efs.mkdir(n0, { mode: 0o0755 }); - await efs.mkdir(path.join(n0, n1), { mode: 0o0755 }); - await efs.mkdir(path.join(n0, n1, n2), { mode: 0o0755 }); - await efs.writeFile(path.join(n0, n2), 'test'); - await efs.writeFile(path.join(n0, n0), 'test'); - await efs.writeFile(path.join(n0, n1, n1), 'test'); - await efs.writeFile(path.join(n0, n1, n0), 'test'); - await efs.writeFile(path.join(n0, n1, n2, n0), 'test'); - await efs.writeFile(path.join(n0, n1, n2, n1), 'test'); - await efs.writeFile(path.join(n0, n1, n2, n2), 'test'); + await efs.mkdir(utils.pathJoin(n0, n1), { mode: 0o0755 }); + await efs.mkdir(utils.pathJoin(n0, n1, n2), { mode: 0o0755 }); + await efs.writeFile(utils.pathJoin(n0, n2), 'test'); + await efs.writeFile(utils.pathJoin(n0, n0), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n1), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n0), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n2, n0), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n2, n1), 'test'); + await efs.writeFile(utils.pathJoin(n0, n1, n2, n2), 'test'); // Removing search permissions from directory n0 await efs.chmod(n0, MODE_RW); // Expectation is that direct n0, n0/n1 and n0/n1/n2 has no permissions @@ -328,12 +327,12 @@ describe(`${EncryptedFS.name} Directories`, () => { errno.EACCES, ); await expectError( - efs.rmdir(path.join(n0, n1), { recursive: true }), + efs.rmdir(utils.pathJoin(n0, n1), { recursive: true }), ErrorEncryptedFSError, errno.EACCES, ); await expectError( - efs.rmdir(path.join(n0, n1, n2), { recursive: true }), + efs.rmdir(utils.pathJoin(n0, n1, n2), { recursive: true }), ErrorEncryptedFSError, errno.EACCES, ); @@ -353,8 +352,8 @@ describe(`${EncryptedFS.name} Directories`, () => { efs.uid = 1000; efs.gid = 1000; await efs.mkdir(n0, { mode: 0o0755 }); - await efs.writeFile(path.join(n0, n2), 'test'); - await efs.writeFile(path.join(n0, n0), 'test'); + await efs.writeFile(utils.pathJoin(n0, n2), 'test'); + await efs.writeFile(utils.pathJoin(n0, n0), 'test'); // Removing write permissions from directory n0 await efs.chmod(n0, MODE_RX); // Expectation is that directory n0 lacks permissions @@ -379,8 +378,8 @@ describe(`${EncryptedFS.name} Directories`, () => { efs.uid = 1000; efs.gid = 1000; await efs.mkdir(n0, { mode: 0o0755 }); - await efs.writeFile(path.join(n0, n2), 'test'); - await efs.writeFile(path.join(n0, n0), 'test'); + await efs.writeFile(utils.pathJoin(n0, n2), 'test'); + await efs.writeFile(utils.pathJoin(n0, n0), 'test'); // Removing write permissions from directory n0 await efs.chmod(n0, MODE_RW); // Expectation is that direct n0, n0/n1 has no permissions @@ -438,16 +437,16 @@ describe(`${EncryptedFS.name} Directories`, () => { await efs.mkdir(n1, { mode: dp }); await efs.chown(n1, tuid, tuid); setId(efs, tuid); - await efs.mkdir(path.join(n1, n2), { mode: dp }); - await efs.rmdir(path.join(n1, n2)); + await efs.mkdir(utils.pathJoin(n1, n2), { mode: dp }); + await efs.rmdir(utils.pathJoin(n1, n2)); await efs.chmod(n1, 0o0555); await expectError( - efs.mkdir(path.join(n1, n2)), + efs.mkdir(utils.pathJoin(n1, n2)), ErrorEncryptedFSError, errno.EACCES, ); await efs.chmod(n1, dp); - await efs.mkdir(path.join(n1, n2), { mode: dp }); + await efs.mkdir(utils.pathJoin(n1, n2), { mode: dp }); }); test.each(supportedTypes)( 'returns EEXIST if the named %s exists', @@ -579,13 +578,13 @@ describe(`${EncryptedFS.name} Directories`, () => { test("returns ENOENT if a component of the 'from' path does not exist, or a path prefix of 'to' does not exist", async () => { await efs.mkdir(n0, { mode: dp }); await expectError( - efs.rename(path.join(n0, n1, 'test'), n2), + efs.rename(utils.pathJoin(n0, n1, 'test'), n2), ErrorEncryptedFSError, errno.ENOENT, ); await createFile(efs, 'regular', n2); await expectError( - efs.rename(n2, path.join(n0, n1, 'test')), + efs.rename(n2, utils.pathJoin(n0, n1, 'test')), ErrorEncryptedFSError, errno.ENOENT, ); @@ -596,19 +595,19 @@ describe(`${EncryptedFS.name} Directories`, () => { await efs.mkdir(n2, { mode: dp }); await efs.chown(n2, tuid, tuid); setId(efs, tuid); - await createFile(efs, 'regular', path.join(n1, n3)); + await createFile(efs, 'regular', utils.pathJoin(n1, n3)); - await efs.rename(path.join(n1, n3), path.join(n2, n4)); - await efs.rename(path.join(n2, n4), path.join(n1, n3)); + await efs.rename(utils.pathJoin(n1, n3), utils.pathJoin(n2, n4)); + await efs.rename(utils.pathJoin(n2, n4), utils.pathJoin(n1, n3)); await efs.chmod(n1, 0o0644); await expectError( - efs.rename(path.join(n1, n3), path.join(n1, n4)), + efs.rename(utils.pathJoin(n1, n3), utils.pathJoin(n1, n4)), ErrorEncryptedFSError, errno.EACCES, ); await expectError( - efs.rename(path.join(n1, n3), path.join(n2, n4)), + efs.rename(utils.pathJoin(n1, n3), utils.pathJoin(n2, n4)), ErrorEncryptedFSError, errno.EACCES, ); @@ -616,7 +615,7 @@ describe(`${EncryptedFS.name} Directories`, () => { await efs.chmod(n1, 0o0755); await efs.chmod(n2, 0o0644); await expectError( - efs.rename(path.join(n1, n3), path.join(n2, n4)), + efs.rename(utils.pathJoin(n1, n3), utils.pathJoin(n2, n4)), ErrorEncryptedFSError, errno.EACCES, ); @@ -627,20 +626,20 @@ describe(`${EncryptedFS.name} Directories`, () => { await efs.mkdir(n2, { mode: dp }); await efs.chown(n2, tuid, tuid); setId(efs, tuid); - await createFile(efs, 'regular', path.join(n1, n3)); + await createFile(efs, 'regular', utils.pathJoin(n1, n3)); - await efs.rename(path.join(n1, n3), path.join(n2, n4)); - await efs.rename(path.join(n2, n4), path.join(n1, n3)); + await efs.rename(utils.pathJoin(n1, n3), utils.pathJoin(n2, n4)); + await efs.rename(utils.pathJoin(n2, n4), utils.pathJoin(n1, n3)); await efs.chmod(n2, 0o0555); await expectError( - efs.rename(path.join(n1, n3), path.join(n2, n4)), + efs.rename(utils.pathJoin(n1, n3), utils.pathJoin(n2, n4)), ErrorEncryptedFSError, errno.EACCES, ); await efs.chmod(n1, 0o0555); await expectError( - efs.rename(path.join(n1, n3), path.join(n1, n4)), + efs.rename(utils.pathJoin(n1, n3), utils.pathJoin(n1, n4)), ErrorEncryptedFSError, errno.EACCES, ); @@ -649,23 +648,23 @@ describe(`${EncryptedFS.name} Directories`, () => { await efs.symlink(n0, n1); await efs.symlink(n1, n0); await expectError( - efs.rename(path.join(n0, 'test'), n2), + efs.rename(utils.pathJoin(n0, 'test'), n2), ErrorEncryptedFSError, errno.ELOOP, ); await expectError( - efs.rename(path.join(n0, 'test'), n1), + efs.rename(utils.pathJoin(n0, 'test'), n1), ErrorEncryptedFSError, errno.ELOOP, ); await createFile(efs, 'regular', n2); await expectError( - efs.rename(n2, path.join(n0, 'test')), + efs.rename(n2, utils.pathJoin(n0, 'test')), ErrorEncryptedFSError, errno.ELOOP, ); await expectError( - efs.rename(n2, path.join(n1, 'test')), + efs.rename(n2, utils.pathJoin(n1, 'test')), ErrorEncryptedFSError, errno.ELOOP, ); @@ -675,15 +674,15 @@ describe(`${EncryptedFS.name} Directories`, () => { 'returns ENOTDIR if a component of either path prefix is a %s', async (type) => { await efs.mkdir(n0, { mode: dp }); - await createFile(efs, type as FileTypes, path.join(n0, n1)); + await createFile(efs, type as FileTypes, utils.pathJoin(n0, n1)); await expectError( - efs.rename(path.join(n0, n1, 'test'), path.join(n0, n2)), + efs.rename(utils.pathJoin(n0, n1, 'test'), utils.pathJoin(n0, n2)), ErrorEncryptedFSError, errno.ENOTDIR, ); - await createFile(efs, type as FileTypes, path.join(n0, n2)); + await createFile(efs, type as FileTypes, utils.pathJoin(n0, n2)); await expectError( - efs.rename(path.join(n0, n2), path.join(n0, n1, 'test')), + efs.rename(utils.pathJoin(n0, n2), utils.pathJoin(n0, n1, 'test')), ErrorEncryptedFSError, errno.ENOTDIR, ); @@ -716,15 +715,15 @@ describe(`${EncryptedFS.name} Directories`, () => { ); test("returns EINVAL when the 'from' argument is a parent directory of 'to'", async () => { await efs.mkdir(n0, { mode: dp }); - await efs.mkdir(path.join(n0, n1), { mode: dp }); + await efs.mkdir(utils.pathJoin(n0, n1), { mode: dp }); await expectError( - efs.rename(n0, path.join(n0, n1)), + efs.rename(n0, utils.pathJoin(n0, n1)), ErrorEncryptedFSError, errno.EINVAL, ); await expectError( - efs.rename(n0, path.join(n0, n1, n2)), + efs.rename(n0, utils.pathJoin(n0, n1, n2)), ErrorEncryptedFSError, errno.EINVAL, ); @@ -734,7 +733,7 @@ describe(`${EncryptedFS.name} Directories`, () => { async (type) => { await efs.mkdir(n0, { mode: dp }); await efs.mkdir(n1, { mode: dp }); - await createFile(efs, type, path.join(n1, n2)); + await createFile(efs, type, utils.pathJoin(n1, n2)); await expectError( efs.rename(n0, n1), ErrorEncryptedFSError, diff --git a/tests/EncryptedFS.files.test.ts b/tests/EncryptedFS.files.test.ts index 2a4da126..16454a30 100644 --- a/tests/EncryptedFS.files.test.ts +++ b/tests/EncryptedFS.files.test.ts @@ -2,7 +2,6 @@ import type { FileTypes } from './utils'; import os from 'os'; import fs from 'fs'; import pathNode from 'path'; -import path from 'path'; import Logger, { StreamHandler, LogLevel } from '@matrixai/logger'; import { code as errno } from 'errno'; import EncryptedFS from '@/EncryptedFS'; @@ -199,7 +198,7 @@ describe(`${EncryptedFS.name} Files`, () => { await efs.close(fd); }); test('truncates the file contents', async () => { - const path1 = path.join('dir', 'path1'); + const path1 = utils.pathJoin('dir', 'path1'); await efs.mkdir('dir'); await efs.writeFile(path1, 'abcdef'); expect(await efs.readFile(path1, { encoding: 'utf-8' })).toEqual( @@ -384,9 +383,9 @@ describe(`${EncryptedFS.name} Files`, () => { ); await efs.close(fd); }); - test('can make 100 files', async () => { + test('can make 25 files', async () => { let content = ''; - for (let i = 0; i < 50; i++) { + for (let i = 0; i < 25; i++) { const name = 'secret'; content += name + i.toString(); await efs.writeFile(name, content); @@ -502,7 +501,7 @@ describe(`${EncryptedFS.name} Files`, () => { await efs.close(fd); }); test("updates parent directory ctime/mtime if file didn't exist", async () => { - const PUT = path.join(n1, n0); + const PUT = utils.pathJoin(n1, n0); await efs.mkdir(n1, { mode: dp }); const time = (await efs.stat(n1)).ctime.getTime(); await sleep(10); @@ -519,7 +518,7 @@ describe(`${EncryptedFS.name} Files`, () => { expect(time).toBeLessThan(ctime2); }); test("doesn't update parent directory ctime/mtime if file existed", async () => { - const PUT = path.join(n1, n0); + const PUT = utils.pathJoin(n1, n0); await efs.mkdir(n1, { mode: dp }); await createFile(efs, 'regular', PUT); @@ -541,7 +540,7 @@ describe(`${EncryptedFS.name} Files`, () => { test.each(['regular', 'block'])( 'returns ENOTDIR if a component of the path prefix is a %s', async (type) => { - const PUT = path.join(n1, 'test'); + const PUT = utils.pathJoin(n1, 'test'); await createFile(efs, type as FileTypes, n1); await expectError( efs.open(PUT, 'r'), @@ -558,12 +557,12 @@ describe(`${EncryptedFS.name} Files`, () => { test('returns ENOENT if a component of the path name that must exist does not exist or O_CREAT is not set and the named file does not exist', async () => { await efs.mkdir(n0, { mode: dp }); await expectError( - efs.open(path.join(n0, n1, 'test'), constants.O_CREAT, 0o0644), + efs.open(utils.pathJoin(n0, n1, 'test'), constants.O_CREAT, 0o0644), ErrorEncryptedFSError, errno.ENOENT, ); await expectError( - efs.open(path.join(n0, n1, 'test'), constants.O_RDONLY), + efs.open(utils.pathJoin(n0, n1, 'test'), constants.O_RDONLY), ErrorEncryptedFSError, errno.ENOENT, ); @@ -572,17 +571,17 @@ describe(`${EncryptedFS.name} Files`, () => { await efs.mkdir(n1, { mode: dp }); await efs.chown(n1, tuid, tuid); setId(efs, tuid); - await createFile(efs, 'regular', path.join(n1, n2)); - let fd = await efs.open(path.join(n1, n2), constants.O_RDONLY); + await createFile(efs, 'regular', utils.pathJoin(n1, n2)); + let fd = await efs.open(utils.pathJoin(n1, n2), constants.O_RDONLY); await efs.close(fd); await efs.chmod(n1, 0o0644); await expectError( - efs.open(path.join(n1, n2), constants.O_RDONLY), + efs.open(utils.pathJoin(n1, n2), constants.O_RDONLY), ErrorEncryptedFSError, errno.EACCES, ); await efs.chmod(n1, 0o0755); - fd = await efs.open(path.join(n1, n2), constants.O_RDONLY); + fd = await efs.open(utils.pathJoin(n1, n2), constants.O_RDONLY); await efs.close(fd); }); test('returns EACCES when the required permissions are denied for a regular file', async () => { @@ -854,12 +853,12 @@ describe(`${EncryptedFS.name} Files`, () => { await efs.symlink(n0, n1); await efs.symlink(n1, n0); await expectError( - efs.open(path.join(n0, 'test'), constants.O_RDONLY), + efs.open(utils.pathJoin(n0, 'test'), constants.O_RDONLY), ErrorEncryptedFSError, errno.ELOOP, ); await expectError( - efs.open(path.join(n1, 'test'), constants.O_RDONLY), + efs.open(utils.pathJoin(n1, 'test'), constants.O_RDONLY), ErrorEncryptedFSError, errno.ELOOP, ); diff --git a/tests/EncryptedFS.links.test.ts b/tests/EncryptedFS.links.test.ts index 328a9f09..64026977 100644 --- a/tests/EncryptedFS.links.test.ts +++ b/tests/EncryptedFS.links.test.ts @@ -2,7 +2,6 @@ import type { FileTypes } from './utils'; import os from 'os'; import fs from 'fs'; import pathNode from 'path'; -import path from 'path'; import Logger, { StreamHandler, LogLevel } from '@matrixai/logger'; import { code as errno } from 'errno'; import EncryptedFS from '@/EncryptedFS'; @@ -71,7 +70,7 @@ describe(`${EncryptedFS.name} Links`, () => { let stat2 = await efs.stat(n0); const time = stat2.birthtime.getTime(); await sleep(100); - await efs.symlink('test', path.join(n0, n1)); + await efs.symlink('test', utils.pathJoin(n0, n1)); stat2 = await efs.stat(n0); const mtime = stat2.mtime.getTime(); const ctime = stat2.ctime.getTime(); @@ -151,49 +150,49 @@ describe(`${EncryptedFS.name} Links`, () => { await efs.mkdir(n1, { mode: dp }); await efs.chown(n1, tuid, tuid); - await efs.symlink('test', path.join(n1, n2)); - await efs.unlink(path.join(n1, n2)); + await efs.symlink('test', utils.pathJoin(n1, n2)); + await efs.unlink(utils.pathJoin(n1, n2)); await efs.chmod(n1, 0o0644); setId(efs, tuid); await expectError( - efs.symlink('test', path.join(n1, n2)), + efs.symlink('test', utils.pathJoin(n1, n2)), ErrorEncryptedFSError, errno.EACCES, ); await efs.chmod(n1, dp); - await efs.symlink('test', path.join(n1, n2)); - await efs.unlink(path.join(n1, n2)); + await efs.symlink('test', utils.pathJoin(n1, n2)); + await efs.unlink(utils.pathJoin(n1, n2)); }); test('returns EACCES if the parent directory of the file to be created denies write permission', async () => { await efs.mkdir(n1, { mode: dp }); await efs.chown(n1, tuid, tuid); setId(efs, tuid); - await efs.symlink('test', path.join(n1, n2)); - await efs.unlink(path.join(n1, n2)); + await efs.symlink('test', utils.pathJoin(n1, n2)); + await efs.unlink(utils.pathJoin(n1, n2)); await efs.chmod(n1, 0o0555); setId(efs, tuid); await expectError( - efs.symlink('test', path.join(n1, n2)), + efs.symlink('test', utils.pathJoin(n1, n2)), ErrorEncryptedFSError, errno.EACCES, ); await efs.chmod(n1, 0o0755); - await efs.symlink('test', path.join(n1, n2)); - await efs.unlink(path.join(n1, n2)); + await efs.symlink('test', utils.pathJoin(n1, n2)); + await efs.unlink(utils.pathJoin(n1, n2)); }); test('returns ELOOP if too many symbolic links were encountered in translating the name2 path name', async () => { await efs.symlink(n0, n1); await efs.symlink(n1, n0); await expectError( - efs.symlink('test', path.join(n0, 'test')), + efs.symlink('test', utils.pathJoin(n0, 'test')), ErrorEncryptedFSError, errno.ELOOP, ); await expectError( - efs.symlink('test', path.join(n1, 'test')), + efs.symlink('test', utils.pathJoin(n1, 'test')), ErrorEncryptedFSError, errno.ELOOP, ); @@ -254,9 +253,9 @@ describe(`${EncryptedFS.name} Links`, () => { }); test('returns ENOTDIR if a component of the path prefix is not a directory', async () => { await efs.mkdir(n0, { mode: dp }); - await createFile(efs, 'regular', path.join(n0, n1)); + await createFile(efs, 'regular', utils.pathJoin(n0, n1)); await expectError( - efs.unlink(path.join(n0, n1, 'test')), + efs.unlink(utils.pathJoin(n0, n1, 'test')), ErrorEncryptedFSError, errno.ENOTDIR, ); @@ -271,10 +270,10 @@ describe(`${EncryptedFS.name} Links`, () => { await efs.mkdir(n1, { mode: dp }); await efs.chown(n1, tuid, tuid); setId(efs, tuid); - await createFile(efs, 'regular', path.join(n1, n2)); + await createFile(efs, 'regular', utils.pathJoin(n1, n2)); await efs.chmod(n1, 0o0644); await expectError( - efs.unlink(path.join(n1, n2)), + efs.unlink(utils.pathJoin(n1, n2)), ErrorEncryptedFSError, errno.EACCES, ); @@ -283,10 +282,10 @@ describe(`${EncryptedFS.name} Links`, () => { await efs.mkdir(n1, { mode: dp }); await efs.chown(n1, tuid, tuid); setId(efs, tuid); - await createFile(efs, 'regular', path.join(n1, n2)); + await createFile(efs, 'regular', utils.pathJoin(n1, n2)); await efs.chmod(n1, 0o0555); await expectError( - efs.unlink(path.join(n1, n2)), + efs.unlink(utils.pathJoin(n1, n2)), ErrorEncryptedFSError, errno.EACCES, ); @@ -295,12 +294,12 @@ describe(`${EncryptedFS.name} Links`, () => { await efs.symlink(n0, n1); await efs.symlink(n1, n0); await expectError( - efs.unlink(path.join(n0, 'test')), + efs.unlink(utils.pathJoin(n0, 'test')), ErrorEncryptedFSError, errno.ELOOP, ); await expectError( - efs.unlink(path.join(n1, 'test')), + efs.unlink(utils.pathJoin(n1, 'test')), ErrorEncryptedFSError, errno.ELOOP, ); @@ -451,15 +450,15 @@ describe(`${EncryptedFS.name} Links`, () => { async (type) => { if (type !== 'dir' && type !== 'symlink') { await efs.mkdir(n0, { mode: dp }); - await createFile(efs, type as FileTypes, path.join(n0, n1)); + await createFile(efs, type as FileTypes, utils.pathJoin(n0, n1)); await expectError( - efs.link(path.join(n0, n1, 'test'), path.join(n0, n2)), + efs.link(utils.pathJoin(n0, n1, 'test'), utils.pathJoin(n0, n2)), ErrorEncryptedFSError, errno.ENOTDIR, ); - await createFile(efs, type as FileTypes, path.join(n0, n2)); + await createFile(efs, type as FileTypes, utils.pathJoin(n0, n2)); await expectError( - efs.link(path.join(n0, n2), path.join(n0, n1, 'test')), + efs.link(utils.pathJoin(n0, n2), utils.pathJoin(n0, n1, 'test')), ErrorEncryptedFSError, errno.ENOTDIR, ); @@ -472,24 +471,24 @@ describe(`${EncryptedFS.name} Links`, () => { await efs.mkdir(n2, { mode: dp }); await efs.chown(n2, tuid, tuid); setId(efs, tuid); - await createFile(efs, 'regular', path.join(n1, n3)); - await efs.link(path.join(n1, n3), path.join(n2, n4)); - await efs.unlink(path.join(n2, n4)); + await createFile(efs, 'regular', utils.pathJoin(n1, n3)); + await efs.link(utils.pathJoin(n1, n3), utils.pathJoin(n2, n4)); + await efs.unlink(utils.pathJoin(n2, n4)); await efs.chmod(n1, 0o0644); await expectError( - efs.link(path.join(n1, n3), path.join(n1, n4)), + efs.link(utils.pathJoin(n1, n3), utils.pathJoin(n1, n4)), ErrorEncryptedFSError, errno.EACCES, ); await expectError( - efs.link(path.join(n1, n3), path.join(n2, n4)), + efs.link(utils.pathJoin(n1, n3), utils.pathJoin(n2, n4)), ErrorEncryptedFSError, errno.EACCES, ); await efs.chmod(n1, 0o0755); await efs.chmod(n2, 0o0644); await expectError( - efs.link(path.join(n1, n3), path.join(n2, n4)), + efs.link(utils.pathJoin(n1, n3), utils.pathJoin(n2, n4)), ErrorEncryptedFSError, errno.EACCES, ); @@ -500,20 +499,20 @@ describe(`${EncryptedFS.name} Links`, () => { await efs.mkdir(n2, { mode: dp }); await efs.chown(n2, tuid, tuid); setId(efs, tuid); - await createFile(efs, 'regular', path.join(n1, n3)); + await createFile(efs, 'regular', utils.pathJoin(n1, n3)); - await efs.link(path.join(n1, n3), path.join(n2, n4)); - await efs.unlink(path.join(n2, n4)); + await efs.link(utils.pathJoin(n1, n3), utils.pathJoin(n2, n4)); + await efs.unlink(utils.pathJoin(n2, n4)); await efs.chmod(n2, 0o0555); await expectError( - efs.link(path.join(n1, n3), path.join(n2, n4)), + efs.link(utils.pathJoin(n1, n3), utils.pathJoin(n2, n4)), ErrorEncryptedFSError, errno.EACCES, ); await efs.chmod(n1, 0o0555); await expectError( - efs.link(path.join(n1, n3), path.join(n1, n4)), + efs.link(utils.pathJoin(n1, n3), utils.pathJoin(n1, n4)), ErrorEncryptedFSError, errno.EACCES, ); @@ -522,23 +521,23 @@ describe(`${EncryptedFS.name} Links`, () => { await efs.symlink(n0, n1); await efs.symlink(n1, n0); await expectError( - efs.link(path.join(n0, 'test'), n2), + efs.link(utils.pathJoin(n0, 'test'), n2), ErrorEncryptedFSError, errno.ELOOP, ); await expectError( - efs.link(path.join(n1, 'test'), n2), + efs.link(utils.pathJoin(n1, 'test'), n2), ErrorEncryptedFSError, errno.ELOOP, ); await createFile(efs, 'regular', n2); await expectError( - efs.link(n2, path.join(n0, 'test')), + efs.link(n2, utils.pathJoin(n0, 'test')), ErrorEncryptedFSError, errno.ELOOP, ); await expectError( - efs.link(n2, path.join(n1, 'test')), + efs.link(n2, utils.pathJoin(n1, 'test')), ErrorEncryptedFSError, errno.ELOOP, ); diff --git a/tests/EncryptedFS.test.ts b/tests/EncryptedFS.test.ts index 2aa1f1a7..4a205e72 100644 --- a/tests/EncryptedFS.test.ts +++ b/tests/EncryptedFS.test.ts @@ -1,5 +1,5 @@ import os from 'os'; -import path from 'path'; +import pathNode from 'path'; import fs from 'fs'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import EncryptedFS from '@/EncryptedFS'; @@ -14,7 +14,7 @@ describe(EncryptedFS.name, () => { let dataDir: string; beforeEach(async () => { dataDir = await fs.promises.mkdtemp( - path.join(os.tmpdir(), 'encryptedfs-test-'), + pathNode.join(os.tmpdir(), 'encryptedfs-test-'), ); }); afterEach(async () => { @@ -119,13 +119,13 @@ describe(EncryptedFS.name, () => { }); test('iNode allocation across restarts', async () => { const d1 = 'dir1'; - const d1f1 = path.join(d1, 'file1'); - const d1f2 = path.join(d1, 'file2'); - const d1f3 = path.join(d1, 'file3'); + const d1f1 = utils.pathJoin(d1, 'file1'); + const d1f2 = utils.pathJoin(d1, 'file2'); + const d1f3 = utils.pathJoin(d1, 'file3'); const d2 = 'dir2'; - const d2f1 = path.join(d2, 'file1'); - const d2f2 = path.join(d2, 'file2'); - const d2f3 = path.join(d2, 'file3'); + const d2f1 = utils.pathJoin(d2, 'file1'); + const d2f2 = utils.pathJoin(d2, 'file2'); + const d2f3 = utils.pathJoin(d2, 'file3'); let efs = await EncryptedFS.createEncryptedFS({ dbPath: dataDir, @@ -178,5 +178,6 @@ describe(EncryptedFS.name, () => { expect(await listNodes(efs)).toEqual([1, 3, 4, 5, 6, 7, 8, 9, 10]); // Note that 2 is skipped, this seems to be incremented // but not created when the RFS is created + await efs.stop(); }); }); diff --git a/tests/fd/FileDescriptor.test.ts b/tests/fd/FileDescriptor.test.ts index 4f8bcf22..c431d4f9 100644 --- a/tests/fd/FileDescriptor.test.ts +++ b/tests/fd/FileDescriptor.test.ts @@ -1,5 +1,5 @@ import os from 'os'; -import path from 'path'; +import pathNode from 'path'; import fs from 'fs'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { DB } from '@matrixai/db'; @@ -22,7 +22,7 @@ describe('File Descriptor', () => { const origBuffer = Buffer.from('Test Buffer for File Descriptor'); beforeEach(async () => { dataDir = await fs.promises.mkdtemp( - path.join(os.tmpdir(), 'encryptedfs-test-'), + pathNode.join(os.tmpdir(), 'encryptedfs-test-'), ); db = await DB.createDB({ dbPath: `${dataDir}/db`, @@ -33,6 +33,7 @@ describe('File Descriptor', () => { decrypt: utils.decrypt, }, }, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger, }); await db.start(); diff --git a/tests/fd/FileDescriptorManager.test.ts b/tests/fd/FileDescriptorManager.test.ts index 1ff20b5f..7b175bc3 100644 --- a/tests/fd/FileDescriptorManager.test.ts +++ b/tests/fd/FileDescriptorManager.test.ts @@ -1,5 +1,5 @@ import os from 'os'; -import path from 'path'; +import pathNode from 'path'; import fs from 'fs'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { DB } from '@matrixai/db'; @@ -21,7 +21,7 @@ describe('File Descriptor Manager', () => { const origBuffer = Buffer.from('Test Buffer for File Descriptor'); beforeEach(async () => { dataDir = await fs.promises.mkdtemp( - path.join(os.tmpdir(), 'encryptedfs-test-'), + pathNode.join(os.tmpdir(), 'encryptedfs-test-'), ); db = await DB.createDB({ dbPath: `${dataDir}/db`, @@ -32,6 +32,7 @@ describe('File Descriptor Manager', () => { decrypt: utils.decrypt, }, }, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger, }); await db.start(); diff --git a/tests/inodes/INodeManager.dir.test.ts b/tests/inodes/INodeManager.dir.test.ts index e69f97dd..b719faff 100644 --- a/tests/inodes/INodeManager.dir.test.ts +++ b/tests/inodes/INodeManager.dir.test.ts @@ -1,6 +1,6 @@ import type { INodeIndex } from '@/inodes/types'; import os from 'os'; -import path from 'path'; +import pathNode from 'path'; import fs from 'fs'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { DB } from '@matrixai/db'; @@ -17,7 +17,7 @@ describe('INodeManager Directory', () => { const dbKey: Buffer = utils.generateKeySync(256); beforeEach(async () => { dataDir = await fs.promises.mkdtemp( - path.join(os.tmpdir(), 'encryptedfs-test-'), + pathNode.join(os.tmpdir(), 'encryptedfs-test-'), ); db = await DB.createDB({ dbPath: `${dataDir}/db`, @@ -28,6 +28,7 @@ describe('INodeManager Directory', () => { decrypt: utils.decrypt, }, }, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger, }); await db.start(); diff --git a/tests/inodes/INodeManager.file.test.ts b/tests/inodes/INodeManager.file.test.ts index d4994feb..4b2a7b7d 100644 --- a/tests/inodes/INodeManager.file.test.ts +++ b/tests/inodes/INodeManager.file.test.ts @@ -1,5 +1,5 @@ import os from 'os'; -import path from 'path'; +import pathNode from 'path'; import fs from 'fs'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { DB } from '@matrixai/db'; @@ -19,7 +19,7 @@ describe('INodeManager File', () => { const buffer = Buffer.from('Test Buffer'); beforeEach(async () => { dataDir = await fs.promises.mkdtemp( - path.join(os.tmpdir(), 'encryptedfs-test-'), + pathNode.join(os.tmpdir(), 'encryptedfs-test-'), ); db = await DB.createDB({ dbPath: `${dataDir}/db`, @@ -30,6 +30,7 @@ describe('INodeManager File', () => { decrypt: utils.decrypt, }, }, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger, }); await db.start(); diff --git a/tests/inodes/INodeManager.symlink.test.ts b/tests/inodes/INodeManager.symlink.test.ts index 54bd953c..75cc2684 100644 --- a/tests/inodes/INodeManager.symlink.test.ts +++ b/tests/inodes/INodeManager.symlink.test.ts @@ -1,5 +1,5 @@ import os from 'os'; -import path from 'path'; +import pathNode from 'path'; import fs from 'fs'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { DB } from '@matrixai/db'; @@ -15,7 +15,7 @@ describe('INodeManager Symlink', () => { const dbKey: Buffer = utils.generateKeySync(256); beforeEach(async () => { dataDir = await fs.promises.mkdtemp( - path.join(os.tmpdir(), 'encryptedfs-test-'), + pathNode.join(os.tmpdir(), 'encryptedfs-test-'), ); db = await DB.createDB({ dbPath: `${dataDir}/db`, @@ -26,6 +26,7 @@ describe('INodeManager Symlink', () => { decrypt: utils.decrypt, }, }, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger, }); await db.start(); diff --git a/tests/inodes/INodeManager.test.ts b/tests/inodes/INodeManager.test.ts index e6412d86..ca187dc7 100644 --- a/tests/inodes/INodeManager.test.ts +++ b/tests/inodes/INodeManager.test.ts @@ -1,5 +1,5 @@ import os from 'os'; -import path from 'path'; +import pathNode from 'path'; import fs from 'fs'; import Logger, { LogLevel, StreamHandler } from '@matrixai/logger'; import { DB } from '@matrixai/db'; @@ -16,7 +16,7 @@ describe('INodeManager', () => { const dbKey: Buffer = utils.generateKeySync(256); beforeEach(async () => { dataDir = await fs.promises.mkdtemp( - path.join(os.tmpdir(), 'encryptedfs-test-'), + pathNode.join(os.tmpdir(), 'encryptedfs-test-'), ); db = await DB.createDB({ dbPath: `${dataDir}/db`, @@ -27,6 +27,7 @@ describe('INodeManager', () => { decrypt: utils.decrypt, }, }, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger, }); }); @@ -63,6 +64,7 @@ describe('INodeManager', () => { decrypt: utils.decrypt, }, }, + // @ts-ignore - version of js-logger is incompatible (remove when js-db updates to 5.* here) logger, }); iNodeMgr = await INodeManager.createINodeManager({ diff --git a/tests/setup.ts b/tests/setup.ts index 03f04a73..bdc85520 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -1,4 +1,5 @@ import path from 'path'; +import 'jest-extended'; // Import jest-extended types declare global { namespace NodeJS { diff --git a/tsconfig.build.json b/tsconfig.build.json index f4f8e198..724de442 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -2,10 +2,12 @@ "extends": "./tsconfig.json", "compilerOptions": { "rootDir": "./src", - "noEmit": false + "noEmit": false, + "stripInternal": true }, "exclude": [ "./tests/**/*", + "./scripts/**/*", "./benches/**/*" ] } diff --git a/tsconfig.json b/tsconfig.json index 98af3ed9..2fffd283 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -26,6 +26,12 @@ "./src/**/*", "./src/**/*.json", "./tests/**/*", + "./scripts/**/*", "./benches/**/*" - ] + ], + "ts-node": { + "require": ["tsconfig-paths/register"], + "transpileOnly": true, + "swc": true + } }