diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml.disabled similarity index 100% rename from .github/workflows/e2e.yml rename to .github/workflows/e2e.yml.disabled diff --git a/.github/workflows/release_github.yml b/.github/workflows/release_github.yml deleted file mode 100644 index c9c4dc2d7..000000000 --- a/.github/workflows/release_github.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: "Make github release" - -on: - workflow_dispatch: - -jobs: - release-github: - runs-on: ubuntu-latest - defaults: - run: - shell: bash - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: "Get the version of fluence-js package" - id: package-version - uses: martinbeentjes/npm-get-version-action@v1.2.3 - with: - path: packages/fluence-js - - - name: Set env - run: echo "RELEASE_VERSION=v${{ steps.package-version.outputs.current-version }}" >> $GITHUB_ENV - - - name: "Create tag for release" - uses: rickstaa/action-create-tag@v1 - with: - tag: ${{ env.RELEASE_VERSION }} - message: "" - github_token: ${{ secrets.GITHUB_TOKEN }} - - ### Create a release - - name: Build Changelog - id: changelog - uses: mikepenz/release-changelog-builder-action@v3 - with: - configuration: ".github/workflows/changelog_config.json" - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Release - id: release - uses: softprops/action-gh-release@v1 - with: - name: Fluence JS ${{ env.RELEASE_VERSION }} - tag_name: ${{ env.RELEASE_VERSION }} - body: ${{steps.changelog.outputs.changelog}} - draft: false - prerelease: false - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/release_packages.yml b/.github/workflows/release_packages.yml deleted file mode 100644 index 3d7aaeca3..000000000 --- a/.github/workflows/release_packages.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: "Release packages" - -on: - workflow_dispatch: - -jobs: - release-packages: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - uses: pnpm/action-setup@v2.2.4 - with: - version: 7 - - - name: "Setup node" - uses: actions/setup-node@v3 - with: - node-version: "16" - registry-url: 'https://registry.npmjs.org' - - - name: "Build packages" - run: | - pnpm i - pnpm -r build - - - name: "Publish to npmjs.com" - run: | - result=$(pnpm --no-git-checks -r publish -filter '@fluencelabs/*' --access public) - if [[ $result == "There are no new packages that should be published" ]] - then - echo ERROR: no packages have been published. Did you forget to bump version? - exit 1 - fi - env: - CI: true - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index efbb11558..79acb62e3 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -14,7 +14,7 @@ on: ref: description: "git ref to checkout to" type: string - default: "master" + default: "v0.28.0" outputs: fluence-js-version: description: "@fluencelabs/fluence version" diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index eb82fec9e..320d78a4d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -18,7 +18,7 @@ on: ref: description: "git ref to checkout to" type: string - default: "master" + default: "v0.28.0" env: RUST_PEER_IMAGE: "${{ inputs.rust-peer-image }}" @@ -29,7 +29,6 @@ jobs: fluence-js: name: "Run tests" runs-on: ubuntu-latest - timeout-minutes: 30 permissions: contents: read diff --git a/.npmrc b/.npmrc index 3e775efb0..16dde58b9 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,2 @@ auto-install-peers=true +save-exact=true \ No newline at end of file diff --git a/.prettierrc.cjs b/.prettierrc.cjs new file mode 100644 index 000000000..36f36b84e --- /dev/null +++ b/.prettierrc.cjs @@ -0,0 +1,8 @@ +module.exports = { + semi: true, + trailingComma: 'all', + singleQuote: true, + printWidth: 120, + tabWidth: 4, + useTabs: false, +}; diff --git a/README.md b/README.md index ed33792b9..447b90779 100644 --- a/README.md +++ b/README.md @@ -28,15 +28,6 @@ Build all packages pnpm -r build ``` -### Repository structure - -| Folder | Package | Description | -| --------------------------- | ----------------------- | --------------------------------------------- | -| packages/fluence-js | @fluencelabs/fluence-js | TypeScript implementation of the Fluence Peer | -| packages/fluence-interfaces | @fluencelabs/interfaces | Common interfaces used in Fluence Peer | -| packages/fluence-connection | @fluencelabs/connection | Connectivity layer used in Fluence Peer | -| packages/fluence-keypair | @fluencelabs/keypair | Key Pair implementation | - ### Running tests Tests are split into unit and integration categories. By default integration tests require a locally running Fluence node with 4310 port open for ws connections. The dependency can be started with docker diff --git a/docs/.nojekyll b/docs/.nojekyll deleted file mode 100644 index e2ac6616a..000000000 --- a/docs/.nojekyll +++ /dev/null @@ -1 +0,0 @@ -TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css deleted file mode 100644 index 6dd4eef7e..000000000 --- a/docs/assets/highlight.css +++ /dev/null @@ -1,22 +0,0 @@ -:root { - --light-code-background: #F5F5F5; - --dark-code-background: #1E1E1E; -} - -@media (prefers-color-scheme: light) { :root { - --code-background: var(--light-code-background); -} } - -@media (prefers-color-scheme: dark) { :root { - --code-background: var(--dark-code-background); -} } - -body.light { - --code-background: var(--light-code-background); -} - -body.dark { - --code-background: var(--dark-code-background); -} - -pre, code { background: var(--code-background); } diff --git a/docs/assets/icons.css b/docs/assets/icons.css deleted file mode 100644 index 776a3562d..000000000 --- a/docs/assets/icons.css +++ /dev/null @@ -1,1043 +0,0 @@ -.tsd-kind-icon { - display: block; - position: relative; - padding-left: 20px; - text-indent: -20px; -} -.tsd-kind-icon:before { - content: ""; - display: inline-block; - vertical-align: middle; - width: 17px; - height: 17px; - margin: 0 3px 2px 0; - background-image: url(./icons.png); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { - .tsd-kind-icon:before { - background-image: url(./icons@2x.png); - background-size: 238px 204px; - } -} - -.tsd-signature.tsd-kind-icon:before { - background-position: 0 -153px; -} - -.tsd-kind-object-literal > .tsd-kind-icon:before { - background-position: 0px -17px; -} -.tsd-kind-object-literal.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -17px; -} -.tsd-kind-object-literal.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -17px; -} - -.tsd-kind-class > .tsd-kind-icon:before { - background-position: 0px -34px; -} -.tsd-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -34px; -} -.tsd-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -34px; -} - -.tsd-kind-class.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -51px; -} -.tsd-kind-class.tsd-has-type-parameter.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -17px -51px; -} -.tsd-kind-class.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -51px; -} - -.tsd-kind-interface > .tsd-kind-icon:before { - background-position: 0px -68px; -} -.tsd-kind-interface.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -68px; -} -.tsd-kind-interface.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -68px; -} - -.tsd-kind-interface.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -85px; -} -.tsd-kind-interface.tsd-has-type-parameter.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -17px -85px; -} -.tsd-kind-interface.tsd-has-type-parameter.tsd-is-private - > .tsd-kind-icon:before { - background-position: -34px -85px; -} - -.tsd-kind-namespace > .tsd-kind-icon:before { - background-position: 0px -102px; -} -.tsd-kind-namespace.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -102px; -} -.tsd-kind-namespace.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -102px; -} - -.tsd-kind-module > .tsd-kind-icon:before { - background-position: 0px -102px; -} -.tsd-kind-module.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -102px; -} -.tsd-kind-module.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -102px; -} - -.tsd-kind-enum > .tsd-kind-icon:before { - background-position: 0px -119px; -} -.tsd-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -119px; -} -.tsd-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -119px; -} - -.tsd-kind-enum-member > .tsd-kind-icon:before { - background-position: 0px -136px; -} -.tsd-kind-enum-member.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -136px; -} -.tsd-kind-enum-member.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -136px; -} - -.tsd-kind-signature > .tsd-kind-icon:before { - background-position: 0px -153px; -} -.tsd-kind-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -153px; -} -.tsd-kind-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -153px; -} - -.tsd-kind-type-alias > .tsd-kind-icon:before { - background-position: 0px -170px; -} -.tsd-kind-type-alias.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -170px; -} -.tsd-kind-type-alias.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -170px; -} - -.tsd-kind-type-alias.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -187px; -} -.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -17px -187px; -} -.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-private - > .tsd-kind-icon:before { - background-position: -34px -187px; -} - -.tsd-kind-variable > .tsd-kind-icon:before { - background-position: -136px -0px; -} -.tsd-kind-variable.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -0px; -} -.tsd-kind-variable.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-variable.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -0px; -} -.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -0px; -} -.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-variable.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -0px; -} -.tsd-kind-variable.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -0px; -} - -.tsd-kind-property > .tsd-kind-icon:before { - background-position: -136px -0px; -} -.tsd-kind-property.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -0px; -} -.tsd-kind-property.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-property.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -0px; -} -.tsd-kind-property.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -0px; -} -.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -0px; -} -.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -0px; -} -.tsd-kind-property.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-property.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -0px; -} -.tsd-kind-property.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -0px; -} -.tsd-kind-property.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-property.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -0px; -} -.tsd-kind-property.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -0px; -} - -.tsd-kind-get-signature > .tsd-kind-icon:before { - background-position: -136px -17px; -} -.tsd-kind-get-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -17px; -} -.tsd-kind-get-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -17px; -} - -.tsd-kind-set-signature > .tsd-kind-icon:before { - background-position: -136px -34px; -} -.tsd-kind-set-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -34px; -} -.tsd-kind-set-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -34px; -} - -.tsd-kind-accessor > .tsd-kind-icon:before { - background-position: -136px -51px; -} -.tsd-kind-accessor.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -51px; -} -.tsd-kind-accessor.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -51px; -} - -.tsd-kind-function > .tsd-kind-icon:before { - background-position: -136px -68px; -} -.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; -} -.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; -} -.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -68px; -} -.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -68px; -} -.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -68px; -} -.tsd-kind-function.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; -} -.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -68px; -} -.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; -} -.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -68px; -} - -.tsd-kind-method > .tsd-kind-icon:before { - background-position: -136px -68px; -} -.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; -} -.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; -} -.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -68px; -} -.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -68px; -} -.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -68px; -} -.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; -} -.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -68px; -} -.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; -} -.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -68px; -} - -.tsd-kind-call-signature > .tsd-kind-icon:before { - background-position: -136px -68px; -} -.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; -} -.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -68px; -} - -.tsd-kind-function.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: -136px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -153px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class - > .tsd-kind-icon:before { - background-position: -51px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum - > .tsd-kind-icon:before { - background-position: -170px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface - > .tsd-kind-icon:before { - background-position: -204px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -85px; -} - -.tsd-kind-method.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: -136px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -153px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class - > .tsd-kind-icon:before { - background-position: -51px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum - > .tsd-kind-icon:before { - background-position: -170px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface - > .tsd-kind-icon:before { - background-position: -204px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -85px; -} - -.tsd-kind-constructor > .tsd-kind-icon:before { - background-position: -136px -102px; -} -.tsd-kind-constructor.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -102px; -} -.tsd-kind-constructor.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -102px; -} - -.tsd-kind-constructor-signature > .tsd-kind-icon:before { - background-position: -136px -102px; -} -.tsd-kind-constructor-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -102px; -} -.tsd-kind-constructor-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-interface - > .tsd-kind-icon:before { - background-position: -204px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -102px; -} - -.tsd-kind-index-signature > .tsd-kind-icon:before { - background-position: -136px -119px; -} -.tsd-kind-index-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -119px; -} -.tsd-kind-index-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -119px; -} - -.tsd-kind-event > .tsd-kind-icon:before { - background-position: -136px -136px; -} -.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -136px; -} -.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; -} -.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -136px; -} -.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -136px; -} -.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -136px; -} -.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -136px; -} -.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; -} -.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -136px; -} -.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -136px; -} -.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; -} -.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -136px; -} -.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -136px; -} - -.tsd-is-static > .tsd-kind-icon:before { - background-position: -136px -153px; -} -.tsd-is-static.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -153px; -} -.tsd-is-static.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; -} -.tsd-is-static.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -153px; -} -.tsd-is-static.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -153px; -} -.tsd-is-static.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -153px; -} -.tsd-is-static.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -153px; -} -.tsd-is-static.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; -} -.tsd-is-static.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -153px; -} -.tsd-is-static.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -153px; -} -.tsd-is-static.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; -} -.tsd-is-static.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -153px; -} -.tsd-is-static.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -153px; -} - -.tsd-is-static.tsd-kind-function > .tsd-kind-icon:before { - background-position: -136px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface - > .tsd-kind-icon:before { - background-position: -204px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -170px; -} - -.tsd-is-static.tsd-kind-method > .tsd-kind-icon:before { - background-position: -136px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface - > .tsd-kind-icon:before { - background-position: -204px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -170px; -} - -.tsd-is-static.tsd-kind-call-signature > .tsd-kind-icon:before { - background-position: -136px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -153px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class - > .tsd-kind-icon:before { - background-position: -51px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum - > .tsd-kind-icon:before { - background-position: -170px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface - > .tsd-kind-icon:before { - background-position: -204px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -170px; -} - -.tsd-is-static.tsd-kind-event > .tsd-kind-icon:before { - background-position: -136px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface - > .tsd-kind-icon:before { - background-position: -204px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -187px; -} diff --git a/docs/assets/icons.png b/docs/assets/icons.png deleted file mode 100644 index 3836d5fe4..000000000 Binary files a/docs/assets/icons.png and /dev/null differ diff --git a/docs/assets/icons@2x.png b/docs/assets/icons@2x.png deleted file mode 100644 index 5a209e2f6..000000000 Binary files a/docs/assets/icons@2x.png and /dev/null differ diff --git a/docs/assets/main.js b/docs/assets/main.js deleted file mode 100644 index b13205a3d..000000000 --- a/docs/assets/main.js +++ /dev/null @@ -1,52 +0,0 @@ -(()=>{var Ce=Object.create;var ue=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,_e=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!_e.call(t,i)&&i!==r&&ue(t,i,{get:()=>e[i],enumerable:!(n=Pe(e,i))||n.enumerable});return t};var Fe=(t,e,r)=>(r=t!=null?Ce(Re(t)):{},De(e||!t||!t.__esModule?ue(r,"default",{value:t,enumerable:!0}):r,t));var pe=Me((de,fe)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i0){var h=t.utils.clone(r)||{};h.position=[a,l],h.index=s.length,s.push(new t.Token(n.slice(a,o),h))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. -`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n1&&(oe&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ou?h+=2:a==u&&(r+=n[l+1]*i[h+1],l+=2,h+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}if(s.str.length==0&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}s.str.length==1&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var h=s.str.charAt(0),p=s.str.charAt(1),v;p in s.node.edges?v=s.node.edges[p]:(v=new t.TokenSet,s.node.edges[p]=v),s.str.length==1&&(v.final=!0),i.push({node:v,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof de=="object"?fe.exports=r():e.lunr=r()}(this,function(){return t})})()});var ce=[];function N(t,e){ce.push({selector:e,constructor:t})}var Y=class{constructor(){this.createComponents(document.body)}createComponents(e){ce.forEach(r=>{e.querySelectorAll(r.selector).forEach(n=>{n.dataset.hasInstance||(new r.constructor({el:n}),n.dataset.hasInstance=String(!0))})})}};var k=class{constructor(e){this.el=e.el}};var J=class{constructor(){this.listeners={}}addEventListener(e,r){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push(r)}removeEventListener(e,r){if(!(e in this.listeners))return;let n=this.listeners[e];for(let i=0,s=n.length;i{let r=Date.now();return(...n)=>{r+e-Date.now()<0&&(t(...n),r=Date.now())}};var ie=class extends J{constructor(){super();this.scrollTop=0;this.lastY=0;this.width=0;this.height=0;this.showToolbar=!0;this.toolbar=document.querySelector(".tsd-page-toolbar"),this.secondaryNav=document.querySelector(".tsd-navigation.secondary"),window.addEventListener("scroll",ne(()=>this.onScroll(),10)),window.addEventListener("resize",ne(()=>this.onResize(),10)),this.onResize(),this.onScroll()}triggerResize(){let r=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(r)}onResize(){this.width=window.innerWidth||0,this.height=window.innerHeight||0;let r=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(r)}onScroll(){this.scrollTop=window.scrollY||0;let r=new CustomEvent("scroll",{detail:{scrollTop:this.scrollTop}});this.dispatchEvent(r),this.hideShowToolbar()}hideShowToolbar(){var n;let r=this.showToolbar;this.showToolbar=this.lastY>=this.scrollTop||this.scrollTop<=0,r!==this.showToolbar&&(this.toolbar.classList.toggle("tsd-page-toolbar--hide"),(n=this.secondaryNav)==null||n.classList.toggle("tsd-navigation--toolbar-hide")),this.lastY=this.scrollTop}},Q=ie;Q.instance=new ie;var X=class extends k{constructor(r){super(r);this.anchors=[];this.index=-1;Q.instance.addEventListener("resize",()=>this.onResize()),Q.instance.addEventListener("scroll",n=>this.onScroll(n)),this.createAnchors()}createAnchors(){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substr(0,r.indexOf("#"))),this.el.querySelectorAll("a").forEach(n=>{let i=n.href;if(i.indexOf("#")==-1||i.substr(0,r.length)!=r)return;let s=i.substr(i.indexOf("#")+1),o=document.querySelector("a.tsd-anchor[name="+s+"]"),a=n.parentNode;!o||!a||this.anchors.push({link:a,anchor:o,position:0})}),this.onResize()}onResize(){let r;for(let i=0,s=this.anchors.length;ii.position-s.position);let n=new CustomEvent("scroll",{detail:{scrollTop:Q.instance.scrollTop}});this.onScroll(n)}onScroll(r){let n=r.detail.scrollTop+5,i=this.anchors,s=i.length-1,o=this.index;for(;o>-1&&i[o].position>n;)o-=1;for(;o-1&&this.anchors[this.index].link.classList.remove("focus"),this.index=o,this.index>-1&&this.anchors[this.index].link.classList.add("focus"))}};var he=(t,e=100)=>{let r;return(...n)=>{clearTimeout(r),r=setTimeout(()=>t(n),e)}};var ge=Fe(pe());function ye(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let r=document.querySelector("#tsd-search input"),n=document.querySelector("#tsd-search .results");if(!r||!n)throw new Error("The input field or the result list wrapper was not found");let i=!1;n.addEventListener("mousedown",()=>i=!0),n.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Ae(t,n,r,s)}function Ae(t,e,r,n){r.addEventListener("input",he(()=>{He(t,e,r,n)},200));let i=!1;r.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?ze(e,r):s.key=="Escape"?r.blur():s.key=="ArrowUp"?me(e,-1):s.key==="ArrowDown"?me(e,1):i=!1}),r.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!r.matches(":focus")&&s.key==="/"&&(r.focus(),s.preventDefault())})}function Ve(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=ge.Index.load(window.searchData.index))}function He(t,e,r,n){if(Ve(n,t),!n.index||!n.data)return;e.textContent="";let i=r.value.trim(),s=i?n.index.search(`*${i}*`):[];for(let o=0,a=Math.min(10,s.length);o${ve(u.parent,i)}.${l}`);let h=document.createElement("li");h.classList.value=u.classes;let p=document.createElement("a");p.href=n.base+u.url,p.classList.add("tsd-kind-icon"),p.innerHTML=l,h.append(p),e.appendChild(h)}}function me(t,e){let r=t.querySelector(".current");if(!r)r=t.querySelector(e==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let n=r;if(e===1)do n=n.nextElementSibling;while(n instanceof HTMLElement&&n.offsetParent==null);else do n=n.previousElementSibling;while(n instanceof HTMLElement&&n.offsetParent==null);n&&(r.classList.remove("current"),n.classList.add("current"))}}function ze(t,e){let r=t.querySelector(".current");if(r||(r=t.querySelector("li:first-child")),r){let n=r.querySelector("a");n&&(window.location.href=n.href),e.blur()}}function ve(t,e){if(e==="")return t;let r=t.toLocaleLowerCase(),n=e.toLocaleLowerCase(),i=[],s=0,o=r.indexOf(n);for(;o!=-1;)i.push(se(t.substring(s,o)),`${se(t.substring(o,o+n.length))}`),s=o+n.length,o=r.indexOf(n,s);return i.push(se(t.substring(s))),i.join("")}var Ne={"&":"&","<":"<",">":">","'":"'",'"':"""};function se(t){return t.replace(/[&<>"'"]/g,e=>Ne[e])}var oe=class{constructor(e,r){this.signature=e,this.description=r}addClass(e){return this.signature.classList.add(e),this.description.classList.add(e),this}removeClass(e){return this.signature.classList.remove(e),this.description.classList.remove(e),this}},Z=class extends k{constructor(r){super(r);this.groups=[];this.index=-1;this.createGroups(),this.container&&(this.el.classList.add("active"),Array.from(this.el.children).forEach(n=>{n.addEventListener("touchstart",i=>this.onClick(i)),n.addEventListener("click",i=>this.onClick(i))}),this.container.classList.add("active"),this.setIndex(0))}setIndex(r){if(r<0&&(r=0),r>this.groups.length-1&&(r=this.groups.length-1),this.index==r)return;let n=this.groups[r];if(this.index>-1){let i=this.groups[this.index];i.removeClass("current").addClass("fade-out"),n.addClass("current"),n.addClass("fade-in"),Q.instance.triggerResize(),setTimeout(()=>{i.removeClass("fade-out"),n.removeClass("fade-in")},300)}else n.addClass("current"),Q.instance.triggerResize();this.index=r}createGroups(){let r=this.el.children;if(r.length<2)return;this.container=this.el.nextElementSibling;let n=this.container.children;this.groups=[];for(let i=0;i{n.signature===r.currentTarget&&this.setIndex(i)})}};var C="mousedown",Le="mousemove",_="mouseup",K={x:0,y:0},xe=!1,ae=!1,je=!1,A=!1,Ee=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(Ee?"is-mobile":"not-mobile");Ee&&"ontouchstart"in document.documentElement&&(je=!0,C="touchstart",Le="touchmove",_="touchend");document.addEventListener(C,t=>{ae=!0,A=!1;let e=C=="touchstart"?t.targetTouches[0]:t;K.y=e.pageY||0,K.x=e.pageX||0});document.addEventListener(Le,t=>{if(!!ae&&!A){let e=C=="touchstart"?t.targetTouches[0]:t,r=K.x-(e.pageX||0),n=K.y-(e.pageY||0);A=Math.sqrt(r*r+n*n)>10}});document.addEventListener(_,()=>{ae=!1});document.addEventListener("click",t=>{xe&&(t.preventDefault(),t.stopImmediatePropagation(),xe=!1)});var ee=class extends k{constructor(r){super(r);this.className=this.el.dataset.toggle||"",this.el.addEventListener(_,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(C,n=>this.onDocumentPointerDown(n)),document.addEventListener(_,n=>this.onDocumentPointerUp(n))}setActive(r){if(this.active==r)return;this.active=r,document.documentElement.classList.toggle("has-"+this.className,r),this.el.classList.toggle("active",r);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(r){A||(this.setActive(!0),r.preventDefault())}onDocumentPointerDown(r){if(this.active){if(r.target.closest(".col-menu, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(r){if(!A&&this.active&&r.target.closest(".col-menu")){let n=r.target.closest("a");if(n){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substr(0,i.indexOf("#"))),n.href.substr(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te=class{constructor(e,r){this.key=e,this.value=r,this.defaultValue=r,this.initialize(),window.localStorage[this.key]&&this.setValue(this.fromLocalStorage(window.localStorage[this.key]))}initialize(){}setValue(e){if(this.value==e)return;let r=this.value;this.value=e,window.localStorage[this.key]=this.toLocalStorage(e),this.handleValueChange(r,e)}},re=class extends te{initialize(){let r=document.querySelector("#tsd-filter-"+this.key);!r||(this.checkbox=r,this.checkbox.addEventListener("change",()=>{this.setValue(this.checkbox.checked)}))}handleValueChange(r,n){!this.checkbox||(this.checkbox.checked=this.value,document.documentElement.classList.toggle("toggle-"+this.key,this.value!=this.defaultValue))}fromLocalStorage(r){return r=="true"}toLocalStorage(r){return r?"true":"false"}},le=class extends te{initialize(){document.documentElement.classList.add("toggle-"+this.key+this.value);let r=document.querySelector("#tsd-filter-"+this.key);if(!r)return;this.select=r;let n=()=>{this.select.classList.add("active")},i=()=>{this.select.classList.remove("active")};this.select.addEventListener(C,n),this.select.addEventListener("mouseover",n),this.select.addEventListener("mouseleave",i),this.select.querySelectorAll("li").forEach(s=>{s.addEventListener(_,o=>{r.classList.remove("active"),this.setValue(o.target.dataset.value||"")})}),document.addEventListener(C,s=>{this.select.contains(s.target)||this.select.classList.remove("active")})}handleValueChange(r,n){this.select.querySelectorAll("li.selected").forEach(o=>{o.classList.remove("selected")});let i=this.select.querySelector('li[data-value="'+n+'"]'),s=this.select.querySelector(".tsd-select-label");i&&s&&(i.classList.add("selected"),s.textContent=i.textContent),document.documentElement.classList.remove("toggle-"+r),document.documentElement.classList.add("toggle-"+n)}fromLocalStorage(r){return r}toLocalStorage(r){return r}},j=class extends k{constructor(r){super(r);this.optionVisibility=new le("visibility","private"),this.optionInherited=new re("inherited",!0),this.optionExternals=new re("externals",!0)}static isSupported(){try{return typeof window.localStorage!="undefined"}catch{return!1}}};function we(t){let e=localStorage.getItem("tsd-theme")||"os";t.value=e,be(e),t.addEventListener("change",()=>{localStorage.setItem("tsd-theme",t.value),be(t.value)})}function be(t){switch(t){case"os":document.body.classList.remove("light","dark");break;case"light":document.body.classList.remove("dark"),document.body.classList.add("light");break;case"dark":document.body.classList.remove("light"),document.body.classList.add("dark");break}}ye();N(X,".menu-highlight");N(Z,".tsd-signatures");N(ee,"a[data-toggle]");j.isSupported()?N(j,"#tsd-filter"):document.documentElement.classList.add("no-filter");var Te=document.getElementById("theme");Te&&we(Te);var Be=new Y;Object.defineProperty(window,"app",{value:Be});})(); -/*! - * lunr.Builder - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.Index - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.Pipeline - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.Set - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.TokenSet - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.Vector - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.stemmer - * Copyright (C) 2020 Oliver Nightingale - * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt - */ -/*! - * lunr.stopWordFilter - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.tokenizer - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.trimmer - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.utils - * Copyright (C) 2020 Oliver Nightingale - */ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 - * Copyright (C) 2020 Oliver Nightingale - * @license MIT - */ diff --git a/docs/assets/search.js b/docs/assets/search.js deleted file mode 100644 index 026068e72..000000000 --- a/docs/assets/search.js +++ /dev/null @@ -1 +0,0 @@ -window.searchData = JSON.parse("{\"kinds\":{\"32\":\"Variable\",\"64\":\"Function\",\"128\":\"Class\",\"256\":\"Interface\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"4194304\":\"Type alias\"},\"rows\":[{\"id\":0,\"kind\":64,\"name\":\"setLogLevel\",\"url\":\"modules.html#setLogLevel\",\"classes\":\"tsd-kind-function\"},{\"id\":1,\"kind\":32,\"name\":\"Fluence\",\"url\":\"modules.html#Fluence\",\"classes\":\"tsd-kind-variable\"},{\"id\":2,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules.html#Fluence.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-variable\",\"parent\":\"Fluence\"},{\"id\":3,\"kind\":1024,\"name\":\"start\",\"url\":\"modules.html#Fluence.__type.start\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Fluence.__type\"},{\"id\":4,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules.html#Fluence.__type.__type-5\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Fluence.__type\"},{\"id\":5,\"kind\":1024,\"name\":\"stop\",\"url\":\"modules.html#Fluence.__type.stop\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Fluence.__type\"},{\"id\":6,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules.html#Fluence.__type.__type-6\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Fluence.__type\"},{\"id\":7,\"kind\":1024,\"name\":\"getStatus\",\"url\":\"modules.html#Fluence.__type.getStatus\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Fluence.__type\"},{\"id\":8,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules.html#Fluence.__type.__type-2\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Fluence.__type\"},{\"id\":9,\"kind\":1024,\"name\":\"getPeer\",\"url\":\"modules.html#Fluence.__type.getPeer\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Fluence.__type\"},{\"id\":10,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules.html#Fluence.__type.__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Fluence.__type\"},{\"id\":11,\"kind\":1024,\"name\":\"registerMarineService\",\"url\":\"modules.html#Fluence.__type.registerMarineService\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Fluence.__type\"},{\"id\":12,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules.html#Fluence.__type.__type-3\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Fluence.__type\"},{\"id\":13,\"kind\":1024,\"name\":\"removeMarineService\",\"url\":\"modules.html#Fluence.__type.removeMarineService\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Fluence.__type\"},{\"id\":14,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules.html#Fluence.__type.__type-4\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-literal\",\"parent\":\"Fluence.__type\"},{\"id\":15,\"kind\":4194304,\"name\":\"PeerStatus\",\"url\":\"modules.html#PeerStatus\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":16,\"kind\":128,\"name\":\"KeyPair\",\"url\":\"classes/KeyPair.html\",\"classes\":\"tsd-kind-class\"},{\"id\":17,\"kind\":2048,\"name\":\"fromEd25519SK\",\"url\":\"classes/KeyPair.html#fromEd25519SK\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-static\",\"parent\":\"KeyPair\"},{\"id\":18,\"kind\":2048,\"name\":\"randomEd25519\",\"url\":\"classes/KeyPair.html#randomEd25519\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-static\",\"parent\":\"KeyPair\"},{\"id\":19,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/KeyPair.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"KeyPair\"},{\"id\":20,\"kind\":1024,\"name\":\"Libp2pPeerId\",\"url\":\"classes/KeyPair.html#Libp2pPeerId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"KeyPair\"},{\"id\":21,\"kind\":2048,\"name\":\"toB58String\",\"url\":\"classes/KeyPair.html#toB58String\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"KeyPair\"},{\"id\":22,\"kind\":2048,\"name\":\"toEd25519PrivateKey\",\"url\":\"classes/KeyPair.html#toEd25519PrivateKey\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"KeyPair\"},{\"id\":23,\"kind\":2048,\"name\":\"signBytes\",\"url\":\"classes/KeyPair.html#signBytes\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"KeyPair\"},{\"id\":24,\"kind\":2048,\"name\":\"verify\",\"url\":\"classes/KeyPair.html#verify\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"KeyPair\"},{\"id\":25,\"kind\":128,\"name\":\"FluencePeer\",\"url\":\"classes/FluencePeer.html\",\"classes\":\"tsd-kind-class\"},{\"id\":26,\"kind\":2048,\"name\":\"isInstance\",\"url\":\"classes/FluencePeer.html#isInstance\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-static\",\"parent\":\"FluencePeer\"},{\"id\":27,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/FluencePeer.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"FluencePeer\"},{\"id\":28,\"kind\":2048,\"name\":\"getStatus\",\"url\":\"classes/FluencePeer.html#getStatus\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FluencePeer\"},{\"id\":29,\"kind\":2048,\"name\":\"start\",\"url\":\"classes/FluencePeer.html#start\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FluencePeer\"},{\"id\":30,\"kind\":2048,\"name\":\"getServices\",\"url\":\"classes/FluencePeer.html#getServices\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FluencePeer\"},{\"id\":31,\"kind\":2048,\"name\":\"registerMarineService\",\"url\":\"classes/FluencePeer.html#registerMarineService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FluencePeer\"},{\"id\":32,\"kind\":2048,\"name\":\"removeMarineService\",\"url\":\"classes/FluencePeer.html#removeMarineService\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FluencePeer\"},{\"id\":33,\"kind\":2048,\"name\":\"stop\",\"url\":\"classes/FluencePeer.html#stop\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"FluencePeer\"},{\"id\":34,\"kind\":256,\"name\":\"PeerConfig\",\"url\":\"interfaces/PeerConfig.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":35,\"kind\":1024,\"name\":\"connectTo\",\"url\":\"interfaces/PeerConfig.html#connectTo\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PeerConfig\"},{\"id\":36,\"kind\":1024,\"name\":\"avmLogLevel\",\"url\":\"interfaces/PeerConfig.html#avmLogLevel\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PeerConfig\"},{\"id\":37,\"kind\":1024,\"name\":\"KeyPair\",\"url\":\"interfaces/PeerConfig.html#KeyPair\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PeerConfig\"},{\"id\":38,\"kind\":1024,\"name\":\"checkConnectionTimeoutMs\",\"url\":\"interfaces/PeerConfig.html#checkConnectionTimeoutMs\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PeerConfig\"},{\"id\":39,\"kind\":1024,\"name\":\"skipCheckConnection\",\"url\":\"interfaces/PeerConfig.html#skipCheckConnection\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PeerConfig\"},{\"id\":40,\"kind\":1024,\"name\":\"dialTimeoutMs\",\"url\":\"interfaces/PeerConfig.html#dialTimeoutMs\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PeerConfig\"},{\"id\":41,\"kind\":1024,\"name\":\"defaultTtlMs\",\"url\":\"interfaces/PeerConfig.html#defaultTtlMs\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PeerConfig\"},{\"id\":42,\"kind\":1024,\"name\":\"avmRunner\",\"url\":\"interfaces/PeerConfig.html#avmRunner\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PeerConfig\"},{\"id\":43,\"kind\":1024,\"name\":\"marineJS\",\"url\":\"interfaces/PeerConfig.html#marineJS\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PeerConfig\"},{\"id\":44,\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/PeerConfig.html#__type-1\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-interface\",\"parent\":\"PeerConfig\"},{\"id\":45,\"kind\":1024,\"name\":\"workerScriptPath\",\"url\":\"interfaces/PeerConfig.html#__type-1.workerScriptPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"PeerConfig.__type\"},{\"id\":46,\"kind\":1024,\"name\":\"marineWasmPath\",\"url\":\"interfaces/PeerConfig.html#__type-1.marineWasmPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"PeerConfig.__type\"},{\"id\":47,\"kind\":1024,\"name\":\"avmWasmPath\",\"url\":\"interfaces/PeerConfig.html#__type-1.avmWasmPath\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"PeerConfig.__type\"},{\"id\":48,\"kind\":1024,\"name\":\"debug\",\"url\":\"interfaces/PeerConfig.html#debug\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PeerConfig\"},{\"id\":49,\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/PeerConfig.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-interface\",\"parent\":\"PeerConfig\"},{\"id\":50,\"kind\":1024,\"name\":\"printParticleId\",\"url\":\"interfaces/PeerConfig.html#__type.printParticleId\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"PeerConfig.__type\"},{\"id\":51,\"kind\":1024,\"name\":\"marineLogLevel\",\"url\":\"interfaces/PeerConfig.html#__type.marineLogLevel\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"PeerConfig.__type\"},{\"id\":52,\"kind\":4194304,\"name\":\"AvmLoglevel\",\"url\":\"modules.html#AvmLoglevel\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":53,\"kind\":4194304,\"name\":\"PeerIdB58\",\"url\":\"modules.html#PeerIdB58\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":54,\"kind\":256,\"name\":\"CallParams\",\"url\":\"interfaces/CallParams.html\",\"classes\":\"tsd-kind-interface tsd-has-type-parameter\"},{\"id\":55,\"kind\":1024,\"name\":\"particleId\",\"url\":\"interfaces/CallParams.html#particleId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CallParams\"},{\"id\":56,\"kind\":1024,\"name\":\"initPeerId\",\"url\":\"interfaces/CallParams.html#initPeerId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CallParams\"},{\"id\":57,\"kind\":1024,\"name\":\"timestamp\",\"url\":\"interfaces/CallParams.html#timestamp\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CallParams\"},{\"id\":58,\"kind\":1024,\"name\":\"ttl\",\"url\":\"interfaces/CallParams.html#ttl\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CallParams\"},{\"id\":59,\"kind\":1024,\"name\":\"signature\",\"url\":\"interfaces/CallParams.html#signature\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CallParams\"},{\"id\":60,\"kind\":1024,\"name\":\"tetraplets\",\"url\":\"interfaces/CallParams.html#tetraplets\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"CallParams\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"parent\"],\"fieldVectors\":[[\"name/0\",[0,37.217]],[\"parent/0\",[]],[\"name/1\",[1,32.108]],[\"parent/1\",[]],[\"name/2\",[2,18.758]],[\"parent/2\",[1,2.999]],[\"name/3\",[3,32.108]],[\"parent/3\",[4,1.496]],[\"name/4\",[2,18.758]],[\"parent/4\",[4,1.496]],[\"name/5\",[5,32.108]],[\"parent/5\",[4,1.496]],[\"name/6\",[2,18.758]],[\"parent/6\",[4,1.496]],[\"name/7\",[6,32.108]],[\"parent/7\",[4,1.496]],[\"name/8\",[2,18.758]],[\"parent/8\",[4,1.496]],[\"name/9\",[7,37.217]],[\"parent/9\",[4,1.496]],[\"name/10\",[2,18.758]],[\"parent/10\",[4,1.496]],[\"name/11\",[8,32.108]],[\"parent/11\",[4,1.496]],[\"name/12\",[2,18.758]],[\"parent/12\",[4,1.496]],[\"name/13\",[9,32.108]],[\"parent/13\",[4,1.496]],[\"name/14\",[2,18.758]],[\"parent/14\",[4,1.496]],[\"name/15\",[10,37.217]],[\"parent/15\",[]],[\"name/16\",[11,17.758]],[\"parent/16\",[]],[\"name/17\",[12,37.217]],[\"parent/17\",[11,1.658]],[\"name/18\",[13,37.217]],[\"parent/18\",[11,1.658]],[\"name/19\",[14,32.108]],[\"parent/19\",[11,1.658]],[\"name/20\",[15,37.217]],[\"parent/20\",[11,1.658]],[\"name/21\",[16,37.217]],[\"parent/21\",[11,1.658]],[\"name/22\",[17,37.217]],[\"parent/22\",[11,1.658]],[\"name/23\",[18,37.217]],[\"parent/23\",[11,1.658]],[\"name/24\",[19,37.217]],[\"parent/24\",[11,1.658]],[\"name/25\",[20,18.758]],[\"parent/25\",[]],[\"name/26\",[21,37.217]],[\"parent/26\",[20,1.752]],[\"name/27\",[14,32.108]],[\"parent/27\",[20,1.752]],[\"name/28\",[6,32.108]],[\"parent/28\",[20,1.752]],[\"name/29\",[3,32.108]],[\"parent/29\",[20,1.752]],[\"name/30\",[22,37.217]],[\"parent/30\",[20,1.752]],[\"name/31\",[8,32.108]],[\"parent/31\",[20,1.752]],[\"name/32\",[9,32.108]],[\"parent/32\",[20,1.752]],[\"name/33\",[5,32.108]],[\"parent/33\",[20,1.752]],[\"name/34\",[23,15.244]],[\"parent/34\",[]],[\"name/35\",[24,37.217]],[\"parent/35\",[23,1.424]],[\"name/36\",[25,32.108]],[\"parent/36\",[23,1.424]],[\"name/37\",[11,17.758]],[\"parent/37\",[23,1.424]],[\"name/38\",[26,37.217]],[\"parent/38\",[23,1.424]],[\"name/39\",[27,37.217]],[\"parent/39\",[23,1.424]],[\"name/40\",[28,37.217]],[\"parent/40\",[23,1.424]],[\"name/41\",[29,37.217]],[\"parent/41\",[23,1.424]],[\"name/42\",[30,37.217]],[\"parent/42\",[23,1.424]],[\"name/43\",[31,37.217]],[\"parent/43\",[23,1.424]],[\"name/44\",[2,18.758]],[\"parent/44\",[23,1.424]],[\"name/45\",[32,37.217]],[\"parent/45\",[33,2.262]],[\"name/46\",[34,37.217]],[\"parent/46\",[33,2.262]],[\"name/47\",[35,37.217]],[\"parent/47\",[33,2.262]],[\"name/48\",[36,37.217]],[\"parent/48\",[23,1.424]],[\"name/49\",[2,18.758]],[\"parent/49\",[23,1.424]],[\"name/50\",[37,37.217]],[\"parent/50\",[33,2.262]],[\"name/51\",[38,37.217]],[\"parent/51\",[33,2.262]],[\"name/52\",[25,32.108]],[\"parent/52\",[]],[\"name/53\",[39,37.217]],[\"parent/53\",[]],[\"name/54\",[40,21.122]],[\"parent/54\",[]],[\"name/55\",[41,37.217]],[\"parent/55\",[40,1.973]],[\"name/56\",[42,37.217]],[\"parent/56\",[40,1.973]],[\"name/57\",[43,37.217]],[\"parent/57\",[40,1.973]],[\"name/58\",[44,37.217]],[\"parent/58\",[40,1.973]],[\"name/59\",[45,37.217]],[\"parent/59\",[40,1.973]],[\"name/60\",[46,37.217]],[\"parent/60\",[40,1.973]]],\"invertedIndex\":[[\"__type\",{\"_index\":2,\"name\":{\"2\":{},\"4\":{},\"6\":{},\"8\":{},\"10\":{},\"12\":{},\"14\":{},\"44\":{},\"49\":{}},\"parent\":{}}],[\"avmloglevel\",{\"_index\":25,\"name\":{\"36\":{},\"52\":{}},\"parent\":{}}],[\"avmrunner\",{\"_index\":30,\"name\":{\"42\":{}},\"parent\":{}}],[\"avmwasmpath\",{\"_index\":35,\"name\":{\"47\":{}},\"parent\":{}}],[\"callparams\",{\"_index\":40,\"name\":{\"54\":{}},\"parent\":{\"55\":{},\"56\":{},\"57\":{},\"58\":{},\"59\":{},\"60\":{}}}],[\"checkconnectiontimeoutms\",{\"_index\":26,\"name\":{\"38\":{}},\"parent\":{}}],[\"connectto\",{\"_index\":24,\"name\":{\"35\":{}},\"parent\":{}}],[\"constructor\",{\"_index\":14,\"name\":{\"19\":{},\"27\":{}},\"parent\":{}}],[\"debug\",{\"_index\":36,\"name\":{\"48\":{}},\"parent\":{}}],[\"defaultttlms\",{\"_index\":29,\"name\":{\"41\":{}},\"parent\":{}}],[\"dialtimeoutms\",{\"_index\":28,\"name\":{\"40\":{}},\"parent\":{}}],[\"fluence\",{\"_index\":1,\"name\":{\"1\":{}},\"parent\":{\"2\":{}}}],[\"fluence.__type\",{\"_index\":4,\"name\":{},\"parent\":{\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"7\":{},\"8\":{},\"9\":{},\"10\":{},\"11\":{},\"12\":{},\"13\":{},\"14\":{}}}],[\"fluencepeer\",{\"_index\":20,\"name\":{\"25\":{}},\"parent\":{\"26\":{},\"27\":{},\"28\":{},\"29\":{},\"30\":{},\"31\":{},\"32\":{},\"33\":{}}}],[\"fromed25519sk\",{\"_index\":12,\"name\":{\"17\":{}},\"parent\":{}}],[\"getpeer\",{\"_index\":7,\"name\":{\"9\":{}},\"parent\":{}}],[\"getservices\",{\"_index\":22,\"name\":{\"30\":{}},\"parent\":{}}],[\"getstatus\",{\"_index\":6,\"name\":{\"7\":{},\"28\":{}},\"parent\":{}}],[\"initpeerid\",{\"_index\":42,\"name\":{\"56\":{}},\"parent\":{}}],[\"isinstance\",{\"_index\":21,\"name\":{\"26\":{}},\"parent\":{}}],[\"keypair\",{\"_index\":11,\"name\":{\"16\":{},\"37\":{}},\"parent\":{\"17\":{},\"18\":{},\"19\":{},\"20\":{},\"21\":{},\"22\":{},\"23\":{},\"24\":{}}}],[\"libp2ppeerid\",{\"_index\":15,\"name\":{\"20\":{}},\"parent\":{}}],[\"marinejs\",{\"_index\":31,\"name\":{\"43\":{}},\"parent\":{}}],[\"marineloglevel\",{\"_index\":38,\"name\":{\"51\":{}},\"parent\":{}}],[\"marinewasmpath\",{\"_index\":34,\"name\":{\"46\":{}},\"parent\":{}}],[\"particleid\",{\"_index\":41,\"name\":{\"55\":{}},\"parent\":{}}],[\"peerconfig\",{\"_index\":23,\"name\":{\"34\":{}},\"parent\":{\"35\":{},\"36\":{},\"37\":{},\"38\":{},\"39\":{},\"40\":{},\"41\":{},\"42\":{},\"43\":{},\"44\":{},\"48\":{},\"49\":{}}}],[\"peerconfig.__type\",{\"_index\":33,\"name\":{},\"parent\":{\"45\":{},\"46\":{},\"47\":{},\"50\":{},\"51\":{}}}],[\"peeridb58\",{\"_index\":39,\"name\":{\"53\":{}},\"parent\":{}}],[\"peerstatus\",{\"_index\":10,\"name\":{\"15\":{}},\"parent\":{}}],[\"printparticleid\",{\"_index\":37,\"name\":{\"50\":{}},\"parent\":{}}],[\"randomed25519\",{\"_index\":13,\"name\":{\"18\":{}},\"parent\":{}}],[\"registermarineservice\",{\"_index\":8,\"name\":{\"11\":{},\"31\":{}},\"parent\":{}}],[\"removemarineservice\",{\"_index\":9,\"name\":{\"13\":{},\"32\":{}},\"parent\":{}}],[\"setloglevel\",{\"_index\":0,\"name\":{\"0\":{}},\"parent\":{}}],[\"signature\",{\"_index\":45,\"name\":{\"59\":{}},\"parent\":{}}],[\"signbytes\",{\"_index\":18,\"name\":{\"23\":{}},\"parent\":{}}],[\"skipcheckconnection\",{\"_index\":27,\"name\":{\"39\":{}},\"parent\":{}}],[\"start\",{\"_index\":3,\"name\":{\"3\":{},\"29\":{}},\"parent\":{}}],[\"stop\",{\"_index\":5,\"name\":{\"5\":{},\"33\":{}},\"parent\":{}}],[\"tetraplets\",{\"_index\":46,\"name\":{\"60\":{}},\"parent\":{}}],[\"timestamp\",{\"_index\":43,\"name\":{\"57\":{}},\"parent\":{}}],[\"tob58string\",{\"_index\":16,\"name\":{\"21\":{}},\"parent\":{}}],[\"toed25519privatekey\",{\"_index\":17,\"name\":{\"22\":{}},\"parent\":{}}],[\"ttl\",{\"_index\":44,\"name\":{\"58\":{}},\"parent\":{}}],[\"verify\",{\"_index\":19,\"name\":{\"24\":{}},\"parent\":{}}],[\"workerscriptpath\",{\"_index\":32,\"name\":{\"45\":{}},\"parent\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css deleted file mode 100644 index 6127b27cd..000000000 --- a/docs/assets/style.css +++ /dev/null @@ -1,1414 +0,0 @@ -@import url("./icons.css"); - -:root { - /* Light */ - --light-color-background: #fcfcfc; - --light-color-secondary-background: #fff; - --light-color-text: #222; - --light-color-text-aside: #707070; - --light-color-link: #4da6ff; - --light-color-menu-divider: #eee; - --light-color-menu-divider-focus: #000; - --light-color-menu-label: #707070; - --light-color-panel: var(--light-color-secondary-background); - --light-color-panel-divider: #eee; - --light-color-comment-tag: #707070; - --light-color-comment-tag-text: #fff; - --light-color-ts: #9600ff; - --light-color-ts-interface: #647f1b; - --light-color-ts-enum: #937210; - --light-color-ts-class: #0672de; - --light-color-ts-private: #707070; - --light-color-toolbar: #fff; - --light-color-toolbar-text: #333; - --light-icon-filter: invert(0); - --light-external-icon: url("data:image/svg+xml;utf8,"); - - /* Dark */ - --dark-color-background: #36393f; - --dark-color-secondary-background: #2f3136; - --dark-color-text: #ffffff; - --dark-color-text-aside: #e6e4e4; - --dark-color-link: #00aff4; - --dark-color-menu-divider: #eee; - --dark-color-menu-divider-focus: #000; - --dark-color-menu-label: #707070; - --dark-color-panel: var(--dark-color-secondary-background); - --dark-color-panel-divider: #818181; - --dark-color-comment-tag: #dcddde; - --dark-color-comment-tag-text: #2f3136; - --dark-color-ts: #c97dff; - --dark-color-ts-interface: #9cbe3c; - --dark-color-ts-enum: #d6ab29; - --dark-color-ts-class: #3695f3; - --dark-color-ts-private: #e2e2e2; - --dark-color-toolbar: #34373c; - --dark-color-toolbar-text: #ffffff; - --dark-icon-filter: invert(1); - --dark-external-icon: url("data:image/svg+xml;utf8,"); -} - -@media (prefers-color-scheme: light) { - :root { - --color-background: var(--light-color-background); - --color-secondary-background: var(--light-color-secondary-background); - --color-text: var(--light-color-text); - --color-text-aside: var(--light-color-text-aside); - --color-link: var(--light-color-link); - --color-menu-divider: var(--light-color-menu-divider); - --color-menu-divider-focus: var(--light-color-menu-divider-focus); - --color-menu-label: var(--light-color-menu-label); - --color-panel: var(--light-color-panel); - --color-panel-divider: var(--light-color-panel-divider); - --color-comment-tag: var(--light-color-comment-tag); - --color-comment-tag-text: var(--light-color-comment-tag-text); - --color-ts: var(--light-color-ts); - --color-ts-interface: var(--light-color-ts-interface); - --color-ts-enum: var(--light-color-ts-enum); - --color-ts-class: var(--light-color-ts-class); - --color-ts-private: var(--light-color-ts-private); - --color-toolbar: var(--light-color-toolbar); - --color-toolbar-text: var(--light-color-toolbar-text); - --icon-filter: var(--light-icon-filter); - --external-icon: var(--light-external-icon); - } -} - -@media (prefers-color-scheme: dark) { - :root { - --color-background: var(--dark-color-background); - --color-secondary-background: var(--dark-color-secondary-background); - --color-text: var(--dark-color-text); - --color-text-aside: var(--dark-color-text-aside); - --color-link: var(--dark-color-link); - --color-menu-divider: var(--dark-color-menu-divider); - --color-menu-divider-focus: var(--dark-color-menu-divider-focus); - --color-menu-label: var(--dark-color-menu-label); - --color-panel: var(--dark-color-panel); - --color-panel-divider: var(--dark-color-panel-divider); - --color-comment-tag: var(--dark-color-comment-tag); - --color-comment-tag-text: var(--dark-color-comment-tag-text); - --color-ts: var(--dark-color-ts); - --color-ts-interface: var(--dark-color-ts-interface); - --color-ts-enum: var(--dark-color-ts-enum); - --color-ts-class: var(--dark-color-ts-class); - --color-ts-private: var(--dark-color-ts-private); - --color-toolbar: var(--dark-color-toolbar); - --color-toolbar-text: var(--dark-color-toolbar-text); - --icon-filter: var(--dark-icon-filter); - --external-icon: var(--dark-external-icon); - } -} - -body { - margin: 0; -} - -body.light { - --color-background: var(--light-color-background); - --color-secondary-background: var(--light-color-secondary-background); - --color-text: var(--light-color-text); - --color-text-aside: var(--light-color-text-aside); - --color-link: var(--light-color-link); - --color-menu-divider: var(--light-color-menu-divider); - --color-menu-divider-focus: var(--light-color-menu-divider-focus); - --color-menu-label: var(--light-color-menu-label); - --color-panel: var(--light-color-panel); - --color-panel-divider: var(--light-color-panel-divider); - --color-comment-tag: var(--light-color-comment-tag); - --color-comment-tag-text: var(--light-color-comment-tag-text); - --color-ts: var(--light-color-ts); - --color-ts-interface: var(--light-color-ts-interface); - --color-ts-enum: var(--light-color-ts-enum); - --color-ts-class: var(--light-color-ts-class); - --color-ts-private: var(--light-color-ts-private); - --color-toolbar: var(--light-color-toolbar); - --color-toolbar-text: var(--light-color-toolbar-text); - --icon-filter: var(--light-icon-filter); - --external-icon: var(--light-external-icon); -} - -body.dark { - --color-background: var(--dark-color-background); - --color-secondary-background: var(--dark-color-secondary-background); - --color-text: var(--dark-color-text); - --color-text-aside: var(--dark-color-text-aside); - --color-link: var(--dark-color-link); - --color-menu-divider: var(--dark-color-menu-divider); - --color-menu-divider-focus: var(--dark-color-menu-divider-focus); - --color-menu-label: var(--dark-color-menu-label); - --color-panel: var(--dark-color-panel); - --color-panel-divider: var(--dark-color-panel-divider); - --color-comment-tag: var(--dark-color-comment-tag); - --color-comment-tag-text: var(--dark-color-comment-tag-text); - --color-ts: var(--dark-color-ts); - --color-ts-interface: var(--dark-color-ts-interface); - --color-ts-enum: var(--dark-color-ts-enum); - --color-ts-class: var(--dark-color-ts-class); - --color-ts-private: var(--dark-color-ts-private); - --color-toolbar: var(--dark-color-toolbar); - --color-toolbar-text: var(--dark-color-toolbar-text); - --icon-filter: var(--dark-icon-filter); - --external-icon: var(--dark-external-icon); -} - -h1, -h2, -h3, -h4, -h5, -h6 { - line-height: 1.2; -} - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -h2 { - font-size: 1.5em; - margin: 0.83em 0; -} - -h3 { - font-size: 1.17em; - margin: 1em 0; -} - -h4, -.tsd-index-panel h3 { - font-size: 1em; - margin: 1.33em 0; -} - -h5 { - font-size: 0.83em; - margin: 1.67em 0; -} - -h6 { - font-size: 0.67em; - margin: 2.33em 0; -} - -pre { - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; -} - -dl, -menu, -ol, -ul { - margin: 1em 0; -} - -dd { - margin: 0 0 0 40px; -} - -.container { - max-width: 1200px; - margin: 0 auto; - padding: 0 40px; -} -@media (max-width: 640px) { - .container { - padding: 0 20px; - } -} - -.container-main { - padding-bottom: 200px; -} - -.row { - display: flex; - position: relative; - margin: 0 -10px; -} -.row:after { - visibility: hidden; - display: block; - content: ""; - clear: both; - height: 0; -} - -.col-4, -.col-8 { - box-sizing: border-box; - float: left; - padding: 0 10px; -} - -.col-4 { - width: 33.3333333333%; -} -.col-8 { - width: 66.6666666667%; -} - -ul.tsd-descriptions > li > :first-child, -.tsd-panel > :first-child, -.col-8 > :first-child, -.col-4 > :first-child, -ul.tsd-descriptions > li > :first-child > :first-child, -.tsd-panel > :first-child > :first-child, -.col-8 > :first-child > :first-child, -.col-4 > :first-child > :first-child, -ul.tsd-descriptions > li > :first-child > :first-child > :first-child, -.tsd-panel > :first-child > :first-child > :first-child, -.col-8 > :first-child > :first-child > :first-child, -.col-4 > :first-child > :first-child > :first-child { - margin-top: 0; -} -ul.tsd-descriptions > li > :last-child, -.tsd-panel > :last-child, -.col-8 > :last-child, -.col-4 > :last-child, -ul.tsd-descriptions > li > :last-child > :last-child, -.tsd-panel > :last-child > :last-child, -.col-8 > :last-child > :last-child, -.col-4 > :last-child > :last-child, -ul.tsd-descriptions > li > :last-child > :last-child > :last-child, -.tsd-panel > :last-child > :last-child > :last-child, -.col-8 > :last-child > :last-child > :last-child, -.col-4 > :last-child > :last-child > :last-child { - margin-bottom: 0; -} - -@keyframes fade-in { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@keyframes fade-out { - from { - opacity: 1; - visibility: visible; - } - to { - opacity: 0; - } -} -@keyframes fade-in-delayed { - 0% { - opacity: 0; - } - 33% { - opacity: 0; - } - 100% { - opacity: 1; - } -} -@keyframes fade-out-delayed { - 0% { - opacity: 1; - visibility: visible; - } - 66% { - opacity: 0; - } - 100% { - opacity: 0; - } -} -@keyframes shift-to-left { - from { - transform: translate(0, 0); - } - to { - transform: translate(-25%, 0); - } -} -@keyframes unshift-to-left { - from { - transform: translate(-25%, 0); - } - to { - transform: translate(0, 0); - } -} -@keyframes pop-in-from-right { - from { - transform: translate(100%, 0); - } - to { - transform: translate(0, 0); - } -} -@keyframes pop-out-to-right { - from { - transform: translate(0, 0); - visibility: visible; - } - to { - transform: translate(100%, 0); - } -} -body { - background: var(--color-background); - font-family: "Segoe UI", sans-serif; - font-size: 16px; - color: var(--color-text); -} - -a { - color: var(--color-link); - text-decoration: none; -} -a:hover { - text-decoration: underline; -} -a.external[target="_blank"] { - background-image: var(--external-icon); - background-position: top 3px right; - background-repeat: no-repeat; - padding-right: 13px; -} - -code, -pre { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - padding: 0.2em; - margin: 0; - font-size: 14px; -} - -pre { - padding: 10px; -} -pre code { - padding: 0; - font-size: 100%; -} - -blockquote { - margin: 1em 0; - padding-left: 1em; - border-left: 4px solid gray; -} - -.tsd-typography { - line-height: 1.333em; -} -.tsd-typography ul { - list-style: square; - padding: 0 0 0 20px; - margin: 0; -} -.tsd-typography h4, -.tsd-typography .tsd-index-panel h3, -.tsd-index-panel .tsd-typography h3, -.tsd-typography h5, -.tsd-typography h6 { - font-size: 1em; - margin: 0; -} -.tsd-typography h5, -.tsd-typography h6 { - font-weight: normal; -} -.tsd-typography p, -.tsd-typography ul, -.tsd-typography ol { - margin: 1em 0; -} - -@media (min-width: 901px) and (max-width: 1024px) { - html .col-content { - width: 72%; - } - html .col-menu { - width: 28%; - } - html .tsd-navigation { - padding-left: 10px; - } -} -@media (max-width: 900px) { - html .col-content { - float: none; - width: 100%; - } - html .col-menu { - position: fixed !important; - overflow: auto; - -webkit-overflow-scrolling: touch; - z-index: 1024; - top: 0 !important; - bottom: 0 !important; - left: auto !important; - right: 0 !important; - width: 100%; - padding: 20px 20px 0 0; - max-width: 450px; - visibility: hidden; - background-color: var(--color-panel); - transform: translate(100%, 0); - } - html .col-menu > *:last-child { - padding-bottom: 20px; - } - html .overlay { - content: ""; - display: block; - position: fixed; - z-index: 1023; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, 0.75); - visibility: hidden; - } - - .to-has-menu .overlay { - animation: fade-in 0.4s; - } - - .to-has-menu :is(header, footer, .col-content) { - animation: shift-to-left 0.4s; - } - - .to-has-menu .col-menu { - animation: pop-in-from-right 0.4s; - } - - .from-has-menu .overlay { - animation: fade-out 0.4s; - } - - .from-has-menu :is(header, footer, .col-content) { - animation: unshift-to-left 0.4s; - } - - .from-has-menu .col-menu { - animation: pop-out-to-right 0.4s; - } - - .has-menu body { - overflow: hidden; - } - .has-menu .overlay { - visibility: visible; - } - .has-menu :is(header, footer, .col-content) { - transform: translate(-25%, 0); - } - .has-menu .col-menu { - visibility: visible; - transform: translate(0, 0); - display: grid; - grid-template-rows: auto 1fr; - max-height: 100vh; - } - .has-menu .tsd-navigation { - max-height: 100%; - } -} - -.tsd-page-title { - padding: 70px 0 20px 0; - margin: 0 0 40px 0; - background: var(--color-panel); - box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); -} -.tsd-page-title h1 { - margin: 0; -} - -.tsd-breadcrumb { - margin: 0; - padding: 0; - color: var(--color-text-aside); -} -.tsd-breadcrumb a { - color: var(--color-text-aside); - text-decoration: none; -} -.tsd-breadcrumb a:hover { - text-decoration: underline; -} -.tsd-breadcrumb li { - display: inline; -} -.tsd-breadcrumb li:after { - content: " / "; -} - -dl.tsd-comment-tags { - overflow: hidden; -} -dl.tsd-comment-tags dt { - float: left; - padding: 1px 5px; - margin: 0 10px 0 0; - border-radius: 4px; - border: 1px solid var(--color-comment-tag); - color: var(--color-comment-tag); - font-size: 0.8em; - font-weight: normal; -} -dl.tsd-comment-tags dd { - margin: 0 0 10px 0; -} -dl.tsd-comment-tags dd:before, -dl.tsd-comment-tags dd:after { - display: table; - content: " "; -} -dl.tsd-comment-tags dd pre, -dl.tsd-comment-tags dd:after { - clear: both; -} -dl.tsd-comment-tags p { - margin: 0; -} - -.tsd-panel.tsd-comment .lead { - font-size: 1.1em; - line-height: 1.333em; - margin-bottom: 2em; -} -.tsd-panel.tsd-comment .lead:last-child { - margin-bottom: 0; -} - -.toggle-protected .tsd-is-private { - display: none; -} - -.toggle-public .tsd-is-private, -.toggle-public .tsd-is-protected, -.toggle-public .tsd-is-private-protected { - display: none; -} - -.toggle-inherited .tsd-is-inherited { - display: none; -} - -.toggle-externals .tsd-is-external { - display: none; -} - -#tsd-filter { - position: relative; - display: inline-block; - height: 40px; - vertical-align: bottom; -} -.no-filter #tsd-filter { - display: none; -} -#tsd-filter .tsd-filter-group { - display: inline-block; - height: 40px; - vertical-align: bottom; - white-space: nowrap; -} -#tsd-filter input { - display: none; -} -@media (max-width: 900px) { - #tsd-filter .tsd-filter-group { - display: block; - position: absolute; - top: 40px; - right: 20px; - height: auto; - background-color: var(--color-panel); - visibility: hidden; - transform: translate(50%, 0); - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); - } - .has-options #tsd-filter .tsd-filter-group { - visibility: visible; - } - .to-has-options #tsd-filter .tsd-filter-group { - animation: fade-in 0.2s; - } - .from-has-options #tsd-filter .tsd-filter-group { - animation: fade-out 0.2s; - } - #tsd-filter label, - #tsd-filter .tsd-select { - display: block; - padding-right: 20px; - } -} - -footer { - border-top: 1px solid var(--color-panel-divider); - background-color: var(--color-panel); -} -footer:after { - content: ""; - display: table; -} -footer.with-border-bottom { - border-bottom: 1px solid var(--color-panel-divider); -} -footer .tsd-legend-group { - font-size: 0; -} -footer .tsd-legend { - display: inline-block; - width: 25%; - padding: 0; - font-size: 16px; - list-style: none; - line-height: 1.333em; - vertical-align: top; -} -@media (max-width: 900px) { - footer .tsd-legend { - width: 50%; - } -} - -.tsd-hierarchy { - list-style: square; - padding: 0 0 0 20px; - margin: 0; -} -.tsd-hierarchy .target { - font-weight: bold; -} - -.tsd-index-panel .tsd-index-content { - margin-bottom: -30px !important; -} -.tsd-index-panel .tsd-index-section { - margin-bottom: 30px !important; -} -.tsd-index-panel h3 { - margin: 0 -20px 10px -20px; - padding: 0 20px 10px 20px; - border-bottom: 1px solid var(--color-panel-divider); -} -.tsd-index-panel ul.tsd-index-list { - -webkit-column-count: 3; - -moz-column-count: 3; - -ms-column-count: 3; - -o-column-count: 3; - column-count: 3; - -webkit-column-gap: 20px; - -moz-column-gap: 20px; - -ms-column-gap: 20px; - -o-column-gap: 20px; - column-gap: 20px; - padding: 0; - list-style: none; - line-height: 1.333em; -} -@media (max-width: 900px) { - .tsd-index-panel ul.tsd-index-list { - -webkit-column-count: 1; - -moz-column-count: 1; - -ms-column-count: 1; - -o-column-count: 1; - column-count: 1; - } -} -@media (min-width: 901px) and (max-width: 1024px) { - .tsd-index-panel ul.tsd-index-list { - -webkit-column-count: 2; - -moz-column-count: 2; - -ms-column-count: 2; - -o-column-count: 2; - column-count: 2; - } -} -.tsd-index-panel ul.tsd-index-list li { - -webkit-page-break-inside: avoid; - -moz-page-break-inside: avoid; - -ms-page-break-inside: avoid; - -o-page-break-inside: avoid; - page-break-inside: avoid; -} -.tsd-index-panel a, -.tsd-index-panel .tsd-parent-kind-module a { - color: var(--color-ts); -} -.tsd-index-panel .tsd-parent-kind-interface a { - color: var(--color-ts-interface); -} -.tsd-index-panel .tsd-parent-kind-enum a { - color: var(--color-ts-enum); -} -.tsd-index-panel .tsd-parent-kind-class a { - color: var(--color-ts-class); -} -.tsd-index-panel .tsd-kind-module a { - color: var(--color-ts); -} -.tsd-index-panel .tsd-kind-interface a { - color: var(--color-ts-interface); -} -.tsd-index-panel .tsd-kind-enum a { - color: var(--color-ts-enum); -} -.tsd-index-panel .tsd-kind-class a { - color: var(--color-ts-class); -} -.tsd-index-panel .tsd-is-private a { - color: var(--color-ts-private); -} - -.tsd-flag { - display: inline-block; - padding: 0.25em 0.4em; - border-radius: 4px; - color: var(--color-comment-tag-text); - background-color: var(--color-comment-tag); - text-indent: 0; - font-size: 75%; - line-height: 1; - font-weight: normal; -} - -.tsd-anchor { - position: absolute; - top: -100px; -} - -.tsd-member { - position: relative; -} -.tsd-member .tsd-anchor + h3 { - margin-top: 0; - margin-bottom: 0; - border-bottom: none; -} -.tsd-member [data-tsd-kind] { - color: var(--color-ts); -} -.tsd-member [data-tsd-kind="Interface"] { - color: var(--color-ts-interface); -} -.tsd-member [data-tsd-kind="Enum"] { - color: var(--color-ts-enum); -} -.tsd-member [data-tsd-kind="Class"] { - color: var(--color-ts-class); -} -.tsd-member [data-tsd-kind="Private"] { - color: var(--color-ts-private); -} - -.tsd-navigation { - margin: 0 0 0 40px; -} -.tsd-navigation a { - display: block; - padding-top: 2px; - padding-bottom: 2px; - border-left: 2px solid transparent; - color: var(--color-text); - text-decoration: none; - transition: border-left-color 0.1s; -} -.tsd-navigation a:hover { - text-decoration: underline; -} -.tsd-navigation ul { - margin: 0; - padding: 0; - list-style: none; -} -.tsd-navigation li { - padding: 0; -} - -.tsd-navigation.primary { - padding-bottom: 40px; -} -.tsd-navigation.primary a { - display: block; - padding-top: 6px; - padding-bottom: 6px; -} -.tsd-navigation.primary ul li a { - padding-left: 5px; -} -.tsd-navigation.primary ul li li a { - padding-left: 25px; -} -.tsd-navigation.primary ul li li li a { - padding-left: 45px; -} -.tsd-navigation.primary ul li li li li a { - padding-left: 65px; -} -.tsd-navigation.primary ul li li li li li a { - padding-left: 85px; -} -.tsd-navigation.primary ul li li li li li li a { - padding-left: 105px; -} -.tsd-navigation.primary > ul { - border-bottom: 1px solid var(--color-panel-divider); -} -.tsd-navigation.primary li { - border-top: 1px solid var(--color-panel-divider); -} -.tsd-navigation.primary li.current > a { - font-weight: bold; -} -.tsd-navigation.primary li.label span { - display: block; - padding: 20px 0 6px 5px; - color: var(--color-menu-label); -} -.tsd-navigation.primary li.globals + li > span, -.tsd-navigation.primary li.globals + li > a { - padding-top: 20px; -} - -.tsd-navigation.secondary { - max-height: calc(100vh - 1rem - 40px); - overflow: auto; - position: sticky; - top: calc(0.5rem + 40px); - transition: 0.3s; -} -.tsd-navigation.secondary.tsd-navigation--toolbar-hide { - max-height: calc(100vh - 1rem); - top: 0.5rem; -} -.tsd-navigation.secondary ul { - transition: opacity 0.2s; -} -.tsd-navigation.secondary ul li a { - padding-left: 25px; -} -.tsd-navigation.secondary ul li li a { - padding-left: 45px; -} -.tsd-navigation.secondary ul li li li a { - padding-left: 65px; -} -.tsd-navigation.secondary ul li li li li a { - padding-left: 85px; -} -.tsd-navigation.secondary ul li li li li li a { - padding-left: 105px; -} -.tsd-navigation.secondary ul li li li li li li a { - padding-left: 125px; -} -.tsd-navigation.secondary ul.current a { - border-left-color: var(--color-panel-divider); -} -.tsd-navigation.secondary li.focus > a, -.tsd-navigation.secondary ul.current li.focus > a { - border-left-color: var(--color-menu-divider-focus); -} -.tsd-navigation.secondary li.current { - margin-top: 20px; - margin-bottom: 20px; - border-left-color: var(--color-panel-divider); -} -.tsd-navigation.secondary li.current > a { - font-weight: bold; -} - -@media (min-width: 901px) { - .menu-sticky-wrap { - position: static; - } -} - -.tsd-panel { - margin: 20px 0; - padding: 20px; - background-color: var(--color-panel); - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); -} -.tsd-panel:empty { - display: none; -} -.tsd-panel > h1, -.tsd-panel > h2, -.tsd-panel > h3 { - margin: 1.5em -20px 10px -20px; - padding: 0 20px 10px 20px; - border-bottom: 1px solid var(--color-panel-divider); -} -.tsd-panel > h1.tsd-before-signature, -.tsd-panel > h2.tsd-before-signature, -.tsd-panel > h3.tsd-before-signature { - margin-bottom: 0; - border-bottom: 0; -} -.tsd-panel table { - display: block; - width: 100%; - overflow: auto; - margin-top: 10px; - word-break: normal; - word-break: keep-all; - border-collapse: collapse; -} -.tsd-panel table th { - font-weight: bold; -} -.tsd-panel table th, -.tsd-panel table td { - padding: 6px 13px; - border: 1px solid var(--color-panel-divider); -} -.tsd-panel table tr { - background: var(--color-background); -} -.tsd-panel table tr:nth-child(even) { - background: var(--color-secondary-background); -} - -.tsd-panel-group { - margin: 60px 0; -} -.tsd-panel-group > h1, -.tsd-panel-group > h2, -.tsd-panel-group > h3 { - padding-left: 20px; - padding-right: 20px; -} - -#tsd-search { - transition: background-color 0.2s; -} -#tsd-search .title { - position: relative; - z-index: 2; -} -#tsd-search .field { - position: absolute; - left: 0; - top: 0; - right: 40px; - height: 40px; -} -#tsd-search .field input { - box-sizing: border-box; - position: relative; - top: -50px; - z-index: 1; - width: 100%; - padding: 0 10px; - opacity: 0; - outline: 0; - border: 0; - background: transparent; - color: var(--color-text); -} -#tsd-search .field label { - position: absolute; - overflow: hidden; - right: -40px; -} -#tsd-search .field input, -#tsd-search .title { - transition: opacity 0.2s; -} -#tsd-search .results { - position: absolute; - visibility: hidden; - top: 40px; - width: 100%; - margin: 0; - padding: 0; - list-style: none; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); -} -#tsd-search .results li { - padding: 0 10px; - background-color: var(--color-background); -} -#tsd-search .results li:nth-child(even) { - background-color: var(--color-panel); -} -#tsd-search .results li.state { - display: none; -} -#tsd-search .results li.current, -#tsd-search .results li:hover { - background-color: var(--color-panel-divider); -} -#tsd-search .results a { - display: block; -} -#tsd-search .results a:before { - top: 10px; -} -#tsd-search .results span.parent { - color: var(--color-text-aside); - font-weight: normal; -} -#tsd-search.has-focus { - background-color: var(--color-panel-divider); -} -#tsd-search.has-focus .field input { - top: 0; - opacity: 1; -} -#tsd-search.has-focus .title { - z-index: 0; - opacity: 0; -} -#tsd-search.has-focus .results { - visibility: visible; -} -#tsd-search.loading .results li.state.loading { - display: block; -} -#tsd-search.failure .results li.state.failure { - display: block; -} - -.tsd-signature { - margin: 0 0 1em 0; - padding: 10px; - border: 1px solid var(--color-panel-divider); - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - font-size: 14px; - overflow-x: auto; -} -.tsd-signature.tsd-kind-icon { - padding-left: 30px; -} -.tsd-signature.tsd-kind-icon:before { - top: 10px; - left: 10px; -} -.tsd-panel > .tsd-signature { - margin-left: -20px; - margin-right: -20px; - border-width: 1px 0; -} -.tsd-panel > .tsd-signature.tsd-kind-icon { - padding-left: 40px; -} -.tsd-panel > .tsd-signature.tsd-kind-icon:before { - left: 20px; -} - -.tsd-signature-symbol { - color: var(--color-text-aside); - font-weight: normal; -} - -.tsd-signature-type { - font-style: italic; - font-weight: normal; -} - -.tsd-signatures { - padding: 0; - margin: 0 0 1em 0; - border: 1px solid var(--color-panel-divider); -} -.tsd-signatures .tsd-signature { - margin: 0; - border-width: 1px 0 0 0; - transition: background-color 0.1s; -} -.tsd-signatures .tsd-signature:first-child { - border-top-width: 0; -} -.tsd-signatures .tsd-signature.current { - background-color: var(--color-panel-divider); -} -.tsd-signatures.active > .tsd-signature { - cursor: pointer; -} -.tsd-panel > .tsd-signatures { - margin-left: -20px; - margin-right: -20px; - border-width: 1px 0; -} -.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon { - padding-left: 40px; -} -.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon:before { - left: 20px; -} -.tsd-panel > a.anchor + .tsd-signatures { - border-top-width: 0; - margin-top: -20px; -} - -ul.tsd-descriptions { - position: relative; - overflow: hidden; - padding: 0; - list-style: none; -} -ul.tsd-descriptions.active > .tsd-description { - display: none; -} -ul.tsd-descriptions.active > .tsd-description.current { - display: block; -} -ul.tsd-descriptions.active > .tsd-description.fade-in { - animation: fade-in-delayed 0.3s; -} -ul.tsd-descriptions.active > .tsd-description.fade-out { - animation: fade-out-delayed 0.3s; - position: absolute; - display: block; - top: 0; - left: 0; - right: 0; - opacity: 0; - visibility: hidden; -} -ul.tsd-descriptions h4, -ul.tsd-descriptions .tsd-index-panel h3, -.tsd-index-panel ul.tsd-descriptions h3 { - font-size: 16px; - margin: 1em 0 0.5em 0; -} - -ul.tsd-parameters, -ul.tsd-type-parameters { - list-style: square; - margin: 0; - padding-left: 20px; -} -ul.tsd-parameters > li.tsd-parameter-signature, -ul.tsd-type-parameters > li.tsd-parameter-signature { - list-style: none; - margin-left: -20px; -} -ul.tsd-parameters h5, -ul.tsd-type-parameters h5 { - font-size: 16px; - margin: 1em 0 0.5em 0; -} -ul.tsd-parameters .tsd-comment, -ul.tsd-type-parameters .tsd-comment { - margin-top: -0.5em; -} - -.tsd-sources { - font-size: 14px; - color: var(--color-text-aside); - margin: 0 0 1em 0; -} -.tsd-sources a { - color: var(--color-text-aside); - text-decoration: underline; -} -.tsd-sources ul, -.tsd-sources p { - margin: 0 !important; -} -.tsd-sources ul { - list-style: none; - padding: 0; -} - -.tsd-page-toolbar { - position: fixed; - z-index: 1; - top: 0; - left: 0; - width: 100%; - height: 40px; - color: var(--color-toolbar-text); - background: var(--color-toolbar); - border-bottom: 1px solid var(--color-panel-divider); - transition: transform 0.3s linear; -} -.tsd-page-toolbar a { - color: var(--color-toolbar-text); - text-decoration: none; -} -.tsd-page-toolbar a.title { - font-weight: bold; -} -.tsd-page-toolbar a.title:hover { - text-decoration: underline; -} -.tsd-page-toolbar .table-wrap { - display: table; - width: 100%; - height: 40px; -} -.tsd-page-toolbar .table-cell { - display: table-cell; - position: relative; - white-space: nowrap; - line-height: 40px; -} -.tsd-page-toolbar .table-cell:first-child { - width: 100%; -} - -.tsd-page-toolbar--hide { - transform: translateY(-100%); -} - -.tsd-select .tsd-select-list li:before, -.tsd-select .tsd-select-label:before, -.tsd-widget:before { - content: ""; - display: inline-block; - width: 40px; - height: 40px; - margin: 0 -8px 0 0; - background-image: url(./widgets.png); - background-repeat: no-repeat; - text-indent: -1024px; - vertical-align: bottom; - filter: var(--icon-filter); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { - .tsd-select .tsd-select-list li:before, - .tsd-select .tsd-select-label:before, - .tsd-widget:before { - background-image: url(./widgets@2x.png); - background-size: 320px 40px; - } -} - -.tsd-widget { - display: inline-block; - overflow: hidden; - opacity: 0.8; - height: 40px; - transition: opacity 0.1s, background-color 0.2s; - vertical-align: bottom; - cursor: pointer; -} -.tsd-widget:hover { - opacity: 0.9; -} -.tsd-widget.active { - opacity: 1; - background-color: var(--color-panel-divider); -} -.tsd-widget.no-caption { - width: 40px; -} -.tsd-widget.no-caption:before { - margin: 0; -} -.tsd-widget.search:before { - background-position: 0 0; -} -.tsd-widget.menu:before { - background-position: -40px 0; -} -.tsd-widget.options:before { - background-position: -80px 0; -} -.tsd-widget.options, -.tsd-widget.menu { - display: none; -} -@media (max-width: 900px) { - .tsd-widget.options, - .tsd-widget.menu { - display: inline-block; - } -} -input[type="checkbox"] + .tsd-widget:before { - background-position: -120px 0; -} -input[type="checkbox"]:checked + .tsd-widget:before { - background-position: -160px 0; -} - -.tsd-select { - position: relative; - display: inline-block; - height: 40px; - transition: opacity 0.1s, background-color 0.2s; - vertical-align: bottom; - cursor: pointer; -} -.tsd-select .tsd-select-label { - opacity: 0.6; - transition: opacity 0.2s; -} -.tsd-select .tsd-select-label:before { - background-position: -240px 0; -} -.tsd-select.active .tsd-select-label { - opacity: 0.8; -} -.tsd-select.active .tsd-select-list { - visibility: visible; - opacity: 1; - transition-delay: 0s; -} -.tsd-select .tsd-select-list { - position: absolute; - visibility: hidden; - top: 40px; - left: 0; - margin: 0; - padding: 0; - opacity: 0; - list-style: none; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); - transition: visibility 0s 0.2s, opacity 0.2s; -} -.tsd-select .tsd-select-list li { - padding: 0 20px 0 0; - background-color: var(--color-background); -} -.tsd-select .tsd-select-list li:before { - background-position: 40px 0; -} -.tsd-select .tsd-select-list li:nth-child(even) { - background-color: var(--color-panel); -} -.tsd-select .tsd-select-list li:hover { - background-color: var(--color-panel-divider); -} -.tsd-select .tsd-select-list li.selected:before { - background-position: -200px 0; -} -@media (max-width: 900px) { - .tsd-select .tsd-select-list { - top: 0; - left: auto; - right: 100%; - margin-right: -5px; - } - .tsd-select .tsd-select-label:before { - background-position: -280px 0; - } -} - -img { - max-width: 100%; -} - -.tsd-anchor-icon { - margin-left: 10px; - vertical-align: middle; - color: var(--color-text); -} - -.tsd-anchor-icon svg { - width: 1em; - height: 1em; - visibility: hidden; -} - -.tsd-anchor-link:hover > .tsd-anchor-icon svg { - visibility: visible; -} diff --git a/docs/assets/widgets.png b/docs/assets/widgets.png deleted file mode 100644 index c7380532a..000000000 Binary files a/docs/assets/widgets.png and /dev/null differ diff --git a/docs/assets/widgets@2x.png b/docs/assets/widgets@2x.png deleted file mode 100644 index 4bbbd5727..000000000 Binary files a/docs/assets/widgets@2x.png and /dev/null differ diff --git a/docs/classes/FluencePeer.html b/docs/classes/FluencePeer.html deleted file mode 100644 index b4d12c181..000000000 --- a/docs/classes/FluencePeer.html +++ /dev/null @@ -1,35 +0,0 @@ -FluencePeer | @fluencelabs/fluence
Options
All
  • Public
  • Public/Protected
  • All
Menu
-

This class implements the Fluence protocol for javascript-based environments. -It provides all the necessary features to communicate with Fluence network

-

Hierarchy

  • FluencePeer

Index

Constructors

Methods

  • getServices(): { sig: Sig }
  • registerMarineService(wasm: SharedArrayBuffer | Buffer, serviceId: string): Promise<void>
  • -

    Registers marine service within the Fluence peer from wasm file. -Following helper functions can be used to load wasm files:

    -
      -
    • loadWasmFromFileSystem
    • -
    • loadWasmFromNpmPackage
    • -
    • loadWasmFromServer
    • -
    -

    Parameters

    • wasm: SharedArrayBuffer | Buffer
      -

      buffer with the wasm file for service

      -
    • serviceId: string
      -

      the service id by which the service can be accessed in aqua

      -

    Returns Promise<void>

  • removeMarineService(serviceId: string): void
  • -

    Removes the specified marine service from the Fluence peer

    -

    Parameters

    • serviceId: string
      -

      the service id to remove

      -

    Returns void

  • -

    Initializes the peer: starts the Aqua VM, initializes the default call service handlers -and (optionally) connect to the Fluence network

    -

    Parameters

    • config: PeerConfig = {}
      -

      object specifying peer configuration

      -

    Returns Promise<void>

  • stop(): Promise<void>
  • -

    Un-initializes the peer: stops all the underlying workflows, stops the Aqua VM -and disconnects from the Fluence network

    -

    Returns Promise<void>

  • -

    Checks whether the object is instance of FluencePeer class

    -

    Parameters

    • obj: unknown
      -

      object to check if it is FluencePeer

      -

    Returns obj is FluencePeer

    true if the object is FluencePeer false otherwise

    -

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Static method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/KeyPair.html b/docs/classes/KeyPair.html deleted file mode 100644 index c1f7070fb..000000000 --- a/docs/classes/KeyPair.html +++ /dev/null @@ -1,14 +0,0 @@ -KeyPair | @fluencelabs/fluence
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • KeyPair

Index

Constructors

  • new KeyPair(libp2pPeerId: PeerId): KeyPair

Properties

Libp2pPeerId: PeerId
-

Key pair in libp2p format. Used for backward compatibility with the current FluencePeer implementation

-

Methods

  • signBytes(data: Uint8Array): Promise<Uint8Array>
  • toB58String(): string
  • toEd25519PrivateKey(): Uint8Array
  • verify(data: Uint8Array, signature: Uint8Array): Promise<boolean>
  • fromEd25519SK(arr: Uint8Array): Promise<KeyPair>
  • -

    Generates new KeyPair from ed25519 private key represented as a 32 byte array

    -

    Parameters

    • arr: Uint8Array

    Returns Promise<KeyPair>

      -
    • Promise with the created KeyPair
    • -
    -

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Static method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index f585759a5..000000000 --- a/docs/index.html +++ /dev/null @@ -1,16 +0,0 @@ -@fluencelabs/fluence
Options
All
  • Public
  • Public/Protected
  • All
Menu

@fluencelabs/fluence

- -

Fluence JS

-
-

To start developing applications with Fluence JS refer to the official documentation

-

Fluence JS is an implementation of the Fluence protocol for JavaScript-based environments. It can connect browsers, Node.js applications, and so on to the Fluence p2p network.

-

Similar to the Rust Fluence Peer implementation it includes:

- -

Fluence JS can call services and functions on the Fluence network, and expose new APIs to the p2p network directly from TypeScript and JavaScript. -Aqua language uses Fluence JS as a compilation target, and they are designed to work in tandem.

-

Fluence JS can be used with any framework of your choice (or even without frameworks).

-

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Static method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/CallParams.html b/docs/interfaces/CallParams.html deleted file mode 100644 index d49e51a69..000000000 --- a/docs/interfaces/CallParams.html +++ /dev/null @@ -1,16 +0,0 @@ -CallParams | @fluencelabs/fluence
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface CallParams<ArgName>

-

Additional information about a service call

-

Type parameters

  • ArgName: string | null

    -

Hierarchy

  • CallParams

Index

Properties

initPeerId: string
-

The peer id which created the particle

-
particleId: string
-

The identifier of particle which triggered the call

-
signature?: string
-

Particle's signature

-
tetraplets: ArgName extends string ? Record<ArgName, SecurityTetraplet[]> : Record<string, never>
-

Security tetraplets

-
timestamp: number
-

Particle's timestamp when it was created

-
ttl: number
-

Time to live in milliseconds. The time after the particle should be expired

-

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Static method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/PeerConfig.html b/docs/interfaces/PeerConfig.html deleted file mode 100644 index 21f1312fe..000000000 --- a/docs/interfaces/PeerConfig.html +++ /dev/null @@ -1,52 +0,0 @@ -PeerConfig | @fluencelabs/fluence
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface PeerConfig

-

Configuration used when initiating Fluence Peer

-

Hierarchy

  • PeerConfig

Index

Properties

KeyPair?: KeyPair
-

Specify the KeyPair to be used to identify the Fluence Peer. -Will be generated randomly if not specified

-
avmLogLevel?: LogLevel
deprecated.

AVM run through marine-js infrastructure.

-
see

debug.marineLogLevel option to configure logging level of AVM

-
avmRunner?: AvmRunner
deprecated.

AVM run through marine-js infrastructure.

-
see

marineJS option to configure AVM

-
checkConnectionTimeoutMs?: number
-

When the peer established the connection to the network it sends a ping-like message to check if it works correctly. -The options allows to specify the timeout for that message in milliseconds. -If not specified the default timeout will be used

-
connectTo?: ConnectionOption
-

Node in Fluence network to connect to. -Can be in the form of:

-
    -
  • string: multiaddr in string format
  • -
  • Multiaddr: multiaddr object, @see https://github.com/multiformats/js-multiaddr
  • -
  • Node: node structure, @see Node
  • -
  • Implementation of FluenceConnection class, @see FluenceConnection -If not specified the will work locally and would not be able to send or receive particles.
  • -
-
debug?: { marineLogLevel?: LogLevel; printParticleId?: boolean }
-

Enables\disabled various debugging features

-

Type declaration

  • Optional marineLogLevel?: LogLevel
    -

    Log level for marine services. By default logging is turned off.

    -
  • Optional printParticleId?: boolean
    -

    If set to true, newly initiated particle ids will be printed to console. -Useful to see what particle id is responsible for aqua function

    -
defaultTtlMs?: number
-

Sets the default TTL for all particles originating from the peer with no TTL specified. -If the originating particle's TTL is defined then that value will be used -If the option is not set default TTL will be 7000

-
dialTimeoutMs?: number
-

The dialing timeout in milliseconds

-
marineJS?: { avmWasmPath: string; marineWasmPath: string; workerScriptPath: string }
-

This option allows to specify the location of various dependencies needed for marine-js. -Each key specifies the location of the corresponding dependency. -If Fluence peer is started inside browser the location is treated as the path to the file relative to origin. -IF Fluence peer is started in nodejs the location is treated as the full path to file on the file system.

-

Type declaration

  • avmWasmPath: string
    -

    Configures the path to AVM wasm module

    -
  • marineWasmPath: string
    -

    Configures the path to marine-js control wasm module

    -
  • workerScriptPath: string
    -

    Configures path to the marine-js worker script.

    -
skipCheckConnection?: boolean
-

When the peer established the connection to the network it sends a ping-like message to check if it works correctly. -If set to true, the ping-like message will be skipped -Default: false

-

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Static method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html deleted file mode 100644 index 1eeec1273..000000000 --- a/docs/modules.html +++ /dev/null @@ -1,69 +0,0 @@ -@fluencelabs/fluence
Options
All
  • Public
  • Public/Protected
  • All
Menu

@fluencelabs/fluence

Index

Type aliases

AvmLoglevel: LogLevel
-

Enum representing the log level used in Aqua VM. -Possible values: 'info', 'trace', 'debug', 'info', 'warn', 'error', 'off';

-
PeerIdB58: string
-

Peer ID's id as a base58 string (multihash/CIDv0).

-
PeerStatus: { isConnected: false; isInitialized: false; peerId: null; relayPeerId: null } | { isConnected: false; isInitialized: true; peerId: PeerIdB58; relayPeerId: null } | { isConnected: true; isInitialized: true; peerId: PeerIdB58; relayPeerId: PeerIdB58 } | { isConnected: true; isDirect: true; isInitialized: true; peerId: PeerIdB58; relayPeerId: null }
-

Information about Fluence Peer connection. -Represented as object with the following keys:

-
    -
  • isInitialized: Is the peer initialized or not.
  • -
  • peerId: Peer Id of the peer. Null if the peer is not initialized
  • -
  • isConnected: Is the peer connected to network or not
  • -
  • relayPeerId: Peer Id of the relay the peer is connected to. If the connection is direct relayPeerId is null
  • -
  • isDirect: True if the peer is connected to the network directly (not through relay)
  • -
-

Variables

Fluence: { getPeer: () => FluencePeer; getStatus: () => PeerStatus; registerMarineService: (wasm: SharedArrayBuffer | Buffer, serviceId: string) => Promise<void>; removeMarineService: (serviceId: string) => void; start: (config?: PeerConfig) => Promise<void>; stop: () => Promise<void> } = ...
-

Public interface to Fluence JS

-

Type declaration

  • getPeer: () => FluencePeer
  • getStatus: () => PeerStatus
  • registerMarineService: (wasm: SharedArrayBuffer | Buffer, serviceId: string) => Promise<void>
      • (wasm: SharedArrayBuffer | Buffer, serviceId: string): Promise<void>
      • -

        Registers marine service within the default Fluence peer from wasm file. -Following helper functions can be used to load wasm files:

        -
          -
        • loadWasmFromFileSystem
        • -
        • loadWasmFromNpmPackage
        • -
        • loadWasmFromServer
        • -
        -

        Parameters

        • wasm: SharedArrayBuffer | Buffer
          -

          buffer with the wasm file for service

          -
        • serviceId: string
          -

          the service id by which the service can be accessed in aqua

          -

        Returns Promise<void>

  • removeMarineService: (serviceId: string) => void
      • (serviceId: string): void
      • -

        Removes the specified marine service from the default Fluence peer

        -

        Parameters

        • serviceId: string
          -

          the service id to remove

          -

        Returns void

  • start: (config?: PeerConfig) => Promise<void>
      • -

        Initializes the default peer: starts the Aqua VM, initializes the default call service handlers -and (optionally) connect to the Fluence network

        -

        Parameters

        • Optional config: PeerConfig
          -

          object specifying peer configuration

          -

        Returns Promise<void>

  • stop: () => Promise<void>
      • (): Promise<void>
      • -

        Un-initializes the default peer: stops all the underlying workflows, stops the Aqua VM -and disconnects from the Fluence network

        -

        Returns Promise<void>

Functions

  • loadWasmFromFileSystem(filePath: string): Promise<SharedArrayBuffer>
  • -

    Load wasm file from the file system. Only works in nodejs environment. -The functions returns SharedArrayBuffer compatible with FluenceAppService methods.

    -

    Parameters

    • filePath: string
      -

      path to the wasm file

      -

    Returns Promise<SharedArrayBuffer>

    SharedArrayBuffer with the wasm file

    -
  • loadWasmFromNpmPackage(source: { file: string; package: string }): Promise<SharedArrayBuffer>
  • -

    Load wasm file from npm package. Only works in nodejs environment. -The function returns SharedArrayBuffer compatible with FluenceAppService methods.

    -

    Parameters

    • source: { file: string; package: string }
      -

      object specifying the source of the file. Consist two fields: package name and file path.

      -
      • file: string
      • package: string

    Returns Promise<SharedArrayBuffer>

    SharedArrayBuffer with the wasm file

    -
  • loadWasmFromServer(filePath: string): Promise<SharedArrayBuffer | Buffer>
  • -

    Load wasm file from the server. Only works in browsers. -The function will try load file into SharedArrayBuffer if the site is cross-origin isolated. -Otherwise the return value fallbacks to Buffer which is less performant but is still compatible with FluenceAppService methods. -We strongly recommend to set-up cross-origin headers. For more details see: See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements -Filename is relative to current origin.

    -

    Parameters

    • filePath: string
      -

      path to the wasm file relative to current origin

      -

    Returns Promise<SharedArrayBuffer | Buffer>

    Either SharedArrayBuffer or Buffer with the wasm file

    -
  • setLogLevel(level: LogLevelDesc): void

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Static method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 000000000..a77db6580 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "common-dev-deps", + "version": "0.1.0", + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "type": "module", + "engines": { + "node": ">=10", + "pnpm": ">=3" + }, + "scripts": { + "simulate-cdn": "http-server -p 8765 ./packages/client/js-client.web.standalone/dist" + }, + "author": "Fluence Labs", + "license": "Apache-2.0", + "dependencies": {}, + "devDependencies": { + "http-server": "14.1.1", + "@types/node": "16.11.59", + "ts-node": "10.9.1", + "typescript": "4.7", + "@fluencelabs/aqua-lib": "0.6.0", + "@fluencelabs/aqua": "0.9.1-374" + } +} diff --git a/packages/@tests/smoke/.gitignore b/packages/@tests/aqua/.gitignore similarity index 100% rename from packages/@tests/smoke/.gitignore rename to packages/@tests/aqua/.gitignore diff --git a/packages/@tests/aqua/_aqua/smoke_test.aqua b/packages/@tests/aqua/_aqua/smoke_test.aqua new file mode 100644 index 000000000..9a2cf31b6 --- /dev/null +++ b/packages/@tests/aqua/_aqua/smoke_test.aqua @@ -0,0 +1,5 @@ +import "@fluencelabs/registry/resources-api.aqua" + +func smokeTest(label: string) -> ?string, *string: + res, errors <- createResource(label) + <- res, errors diff --git a/packages/@tests/aqua/package.json b/packages/@tests/aqua/package.json new file mode 100644 index 000000000..748ea1f2d --- /dev/null +++ b/packages/@tests/aqua/package.json @@ -0,0 +1,28 @@ +{ + "name": "@test/aqua_for_test", + "version": "0.1.0", + "description": "Shared aqua code for tests", + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "engines": { + "node": ">=10", + "pnpm": ">=3" + }, + "type": "module", + "scripts": { + "build": "tsc", + "compile-aqua": "aqua -i ./_aqua -o ./src/_aqua" + }, + "repository": "https://github.com/fluencelabs/fluence-js", + "author": "Fluence Labs", + "license": "Apache-2.0", + "dependencies": { + "@fluencelabs/fluence": "workspace:0.60.0", + "@fluencelabs/fluence-network-environment": "1.0.13", + "base64-js": "1.5.1" + }, + "devDependencies": { + "@fluencelabs/aqua": "0.9.4", + "@fluencelabs/registry": "0.7.0" + } +} diff --git a/packages/@tests/aqua/src/_aqua/smoke_test.ts b/packages/@tests/aqua/src/_aqua/smoke_test.ts new file mode 100644 index 000000000..6a10d7604 --- /dev/null +++ b/packages/@tests/aqua/src/_aqua/smoke_test.ts @@ -0,0 +1,284 @@ +/** + * + * This file is auto-generated. Do not edit manually: changes may be erased. + * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. + * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues + * Aqua version: 0.9.4 + * + */ +import { FluencePeer } from '@fluencelabs/fluence'; +import type { CallParams$$ } from '@fluencelabs/fluence/dist/internal/compilerSupport/v4'; +import { callFunction$$, registerService$$ } from '@fluencelabs/fluence/dist/internal/compilerSupport/v4'; + +// Services + +// Functions + +export type SmokeTestResult = [string | null, string[]]; +export function smokeTest(label: string, config?: { ttl?: number }): Promise; + +export function smokeTest(peer: FluencePeer, label: string, config?: { ttl?: number }): Promise; + +export function smokeTest(...args: any) { + let script = ` + (xor + (seq + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "label") [] label) + ) + (new $resource_id + (new $successful + (seq + (seq + (seq + (call %init_peer_id% ("peer" "timestamp_sec") [] t) + (xor + (seq + (seq + (call -relay- ("registry" "get_key_bytes") [label [] t [] ""] bytes) + (xor + (call %init_peer_id% ("sig" "sign") [bytes] result) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + ) + ) + (xor + (match result.$.success! false + (ap result.$.error.[0]! $error) + ) + (seq + (seq + (seq + (seq + (seq + (seq + (ap result.$.signature! result_flat) + (call -relay- ("registry" "get_key_id") [label %init_peer_id%] id) + ) + (call -relay- ("op" "string_to_b58") [id] k) + ) + (call -relay- ("kad" "neighborhood") [k [] []] nodes) + ) + (par + (fold nodes n-0 + (par + (seq + (xor + (xor + (seq + (seq + (seq + (call n-0 ("peer" "timestamp_sec") [] t-0) + (call n-0 ("trust-graph" "get_weight") [%init_peer_id% t-0] weight) + ) + (call n-0 ("registry" "register_key") [label [] t [] "" result_flat.$.[0]! weight t-0] result-0) + ) + (xor + (match result-0.$.success! true + (ap true $successful) + ) + (ap result-0.$.error! $error) + ) + ) + (call n-0 ("op" "noop") []) + ) + (seq + (call -relay- ("op" "noop") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call -relay- ("op" "noop") []) + ) + (next n-0) + ) + (never) + ) + (null) + ) + ) + (new $status + (new $result-1 + (seq + (seq + (seq + (par + (seq + (seq + (seq + (call -relay- ("math" "sub") [1 1] sub) + (new $successful_test + (seq + (seq + (seq + (call -relay- ("math" "add") [sub 1] successful_incr) + (fold $successful s + (seq + (seq + (ap s $successful_test) + (canon -relay- $successful_test #successful_iter_canon) + ) + (xor + (match #successful_iter_canon.length successful_incr + (null) + ) + (next s) + ) + ) + (never) + ) + ) + (canon -relay- $successful_test #successful_result_canon) + ) + (ap #successful_result_canon successful_gate) + ) + ) + ) + (call -relay- ("math" "sub") [1 1] sub-0) + ) + (ap "ok" $status) + ) + (call -relay- ("peer" "timeout") [6000 "timeout"] $status) + ) + (new $status_test + (seq + (seq + (seq + (call -relay- ("math" "add") [0 1] status_incr) + (fold $status s + (seq + (seq + (ap s $status_test) + (canon -relay- $status_test #status_iter_canon) + ) + (xor + (match #status_iter_canon.length status_incr + (null) + ) + (next s) + ) + ) + (never) + ) + ) + (canon -relay- $status_test #status_result_canon) + ) + (ap #status_result_canon status_gate) + ) + ) + ) + (xor + (match status_gate.$.[0]! "ok" + (ap true $result-1) + ) + (ap false $result-1) + ) + ) + (new $result-1_test + (seq + (seq + (seq + (call -relay- ("math" "add") [0 1] result-1_incr) + (fold $result-1 s + (seq + (seq + (ap s $result-1_test) + (canon -relay- $result-1_test #result-1_iter_canon) + ) + (xor + (match #result-1_iter_canon.length result-1_incr + (null) + ) + (next s) + ) + ) + (never) + ) + ) + (canon -relay- $result-1_test #result-1_result_canon) + ) + (ap #result-1_result_canon result-1_gate) + ) + ) + ) + ) + ) + ) + (xor + (match result-1_gate.$.[0]! false + (ap "resource wasn't created: timeout exceeded" $error) + ) + (ap id $resource_id) + ) + ) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) + ) + ) + (canon %init_peer_id% $resource_id #-resource_id-fix-0) + ) + (ap #-resource_id-fix-0 -resource_id-flat-0) + ) + ) + ) + ) + (xor + (seq + (canon %init_peer_id% $error #error_canon) + (call %init_peer_id% ("callbackSrv" "response") [-resource_id-flat-0 #error_canon]) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 5]) + ) + `; + return callFunction$$( + args, + { + functionName: 'smokeTest', + arrow: { + tag: 'arrow', + domain: { + tag: 'labeledProduct', + fields: { + label: { + tag: 'scalar', + name: 'string', + }, + }, + }, + codomain: { + tag: 'unlabeledProduct', + items: [ + { + tag: 'option', + type: { + tag: 'scalar', + name: 'string', + }, + }, + { + tag: 'array', + type: { + tag: 'scalar', + name: 'string', + }, + }, + ], + }, + }, + names: { + relay: '-relay-', + getDataSrv: 'getDataSrv', + callbackSrv: 'callbackSrv', + responseSrv: 'callbackSrv', + responseFnName: 'response', + errorHandlingSrv: 'errorHandlingSrv', + errorFnName: 'error', + }, + }, + script, + ); +} diff --git a/packages/@tests/aqua/src/index.ts b/packages/@tests/aqua/src/index.ts new file mode 100644 index 000000000..857d4c7ee --- /dev/null +++ b/packages/@tests/aqua/src/index.ts @@ -0,0 +1,55 @@ +import { fromByteArray } from 'base64-js'; +import { Fluence } from '@fluencelabs/fluence'; +import { krasnodar } from '@fluencelabs/fluence-network-environment'; +import { smokeTest } from './_aqua/smoke_test.js'; + +// const relay = { +// multiaddr: '/ip4/127.0.0.1/tcp/4310/ws/p2p/12D3KooWKEprYXUXqoV5xSBeyqrWLpQLLH4PXfvVkDJtmcqmh5V3', +// peerId: '12D3KooWKEprYXUXqoV5xSBeyqrWLpQLLH4PXfvVkDJtmcqmh5V3', +// }; + +const relay = krasnodar[4]; + +const rndSk = () => { + if (crypto.getRandomValues) { + return crypto.getRandomValues(new Uint8Array(32)); + } + + // @ts-ignore + return globalThis.crypto.webcrypto.getRandomValues(new Uint8Array(32)); +}; + +export const main = async () => { + console.log('starting fluence...'); + await Fluence.start({ + relay: relay, + keyPair: { + type: 'Ed25519', + source: rndSk(), + }, + }); + + console.log('started fluence'); + const p = await Fluence.getPeer(); + + console.log('my peer id: ', p.getStatus().peerId); + console.log('my sk id: ', fromByteArray(p.getSk())); + + console.log('running some aqua...'); + const [res, errors] = await smokeTest('my_resource'); + if (res === null) { + console.log('aqua failed, errors', errors); + } else { + console.log('aqua finished, result', res); + } + + console.log('stopping fluence...'); + await Fluence.stop(); + console.log('stopped fluence...'); +}; + +export const runMain = () => { + main() + .then(() => console.log('done!')) + .catch((err) => console.error('error: ', err)); +}; diff --git a/packages/@tests/aqua/tsconfig.json b/packages/@tests/aqua/tsconfig.json new file mode 100644 index 000000000..8c892f213 --- /dev/null +++ b/packages/@tests/aqua/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist" + }, + "exclude": ["node_modules", "dist"] +} diff --git a/packages/@tests/react_test/.gitignore b/packages/@tests/frameworks/cra-ts/.gitignore similarity index 92% rename from packages/@tests/react_test/.gitignore rename to packages/@tests/frameworks/cra-ts/.gitignore index 4d29575de..ca227a52d 100644 --- a/packages/@tests/react_test/.gitignore +++ b/packages/@tests/frameworks/cra-ts/.gitignore @@ -21,3 +21,5 @@ npm-debug.log* yarn-debug.log* yarn-error.log* + +public/js-client.min.js \ No newline at end of file diff --git a/packages/@tests/react_test/README.md b/packages/@tests/frameworks/cra-ts/README.md similarity index 100% rename from packages/@tests/react_test/README.md rename to packages/@tests/frameworks/cra-ts/README.md diff --git a/packages/@tests/react_test/package.json.skip b/packages/@tests/frameworks/cra-ts/package.json similarity index 57% rename from packages/@tests/react_test/package.json.skip rename to packages/@tests/frameworks/cra-ts/package.json index e34ae2e3a..6d4ea1005 100644 --- a/packages/@tests/react_test/package.json.skip +++ b/packages/@tests/frameworks/cra-ts/package.json @@ -1,27 +1,28 @@ { - "name": "@test/react", + "name": "cra-ts", "version": "0.1.0", "private": true, "dependencies": { - "@fluencelabs/fluence": "workspace:*", - "@fluencelabs/fluence-network-environment": "^1.0.13", - "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^13.5.0", - "@types/jest": "^27.5.2", - "@types/node": "^16.11.56", - "@types/react": "^18.0.18", - "@types/react-dom": "^18.0.6", + "@fluencelabs/fluence": "workspace:0.60.0", + "@test/aqua_for_test": "workspace:*", + "@testing-library/jest-dom": "5.16.5", + "@testing-library/react": "13.4.0", + "@testing-library/user-event": "13.5.0", + "@types/jest": "27.5.2", + "@types/node": "16.18.12", + "@types/react": "18.0.27", + "@types/react-dom": "18.0.10", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", - "typescript": "^4.8.2", - "web-vitals": "^2.1.4" + "typescript": "4.9.5", + "web-vitals": "2.1.4" }, + "devDependencies": {}, "scripts": { "start": "react-scripts start", "build": "react-scripts build", - "test": "react-scripts test", + "_test": "react-scripts test", "eject": "react-scripts eject" }, "eslintConfig": { diff --git a/packages/@tests/react_test/public/favicon.ico b/packages/@tests/frameworks/cra-ts/public/favicon.ico similarity index 100% rename from packages/@tests/react_test/public/favicon.ico rename to packages/@tests/frameworks/cra-ts/public/favicon.ico diff --git a/packages/@tests/react_test/public/index.html b/packages/@tests/frameworks/cra-ts/public/index.html similarity index 88% rename from packages/@tests/react_test/public/index.html rename to packages/@tests/frameworks/cra-ts/public/index.html index aa069f27c..726ab18da 100644 --- a/packages/@tests/react_test/public/index.html +++ b/packages/@tests/frameworks/cra-ts/public/index.html @@ -1,14 +1,13 @@ - + + - + + React App - - + + +
- - + + + \ No newline at end of file diff --git a/packages/@tests/react_test/public/logo192.png b/packages/@tests/frameworks/cra-ts/public/logo192.png similarity index 100% rename from packages/@tests/react_test/public/logo192.png rename to packages/@tests/frameworks/cra-ts/public/logo192.png diff --git a/packages/@tests/react_test/public/logo512.png b/packages/@tests/frameworks/cra-ts/public/logo512.png similarity index 100% rename from packages/@tests/react_test/public/logo512.png rename to packages/@tests/frameworks/cra-ts/public/logo512.png diff --git a/packages/@tests/react_test/public/manifest.json b/packages/@tests/frameworks/cra-ts/public/manifest.json similarity index 100% rename from packages/@tests/react_test/public/manifest.json rename to packages/@tests/frameworks/cra-ts/public/manifest.json diff --git a/packages/@tests/react_test/public/robots.txt b/packages/@tests/frameworks/cra-ts/public/robots.txt similarity index 100% rename from packages/@tests/react_test/public/robots.txt rename to packages/@tests/frameworks/cra-ts/public/robots.txt diff --git a/packages/@tests/react_test/src/App.css b/packages/@tests/frameworks/cra-ts/src/App.css similarity index 100% rename from packages/@tests/react_test/src/App.css rename to packages/@tests/frameworks/cra-ts/src/App.css diff --git a/packages/@tests/frameworks/cra-ts/src/App.test.tsx_ b/packages/@tests/frameworks/cra-ts/src/App.test.tsx_ new file mode 100644 index 000000000..414b21cf3 --- /dev/null +++ b/packages/@tests/frameworks/cra-ts/src/App.test.tsx_ @@ -0,0 +1,9 @@ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import App from './App'; + +test('renders learn react link', () => { + render(); + const linkElement = screen.getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/packages/@tests/frameworks/cra-ts/src/App.tsx b/packages/@tests/frameworks/cra-ts/src/App.tsx new file mode 100644 index 000000000..a53698aab --- /dev/null +++ b/packages/@tests/frameworks/cra-ts/src/App.tsx @@ -0,0 +1,26 @@ +import React from 'react'; +import logo from './logo.svg'; +import './App.css'; + +function App() { + return ( +
+
+ logo +

+ Edit src/App.tsx and save to reload. +

+ + Learn React + +
+
+ ); +} + +export default App; diff --git a/packages/@tests/react_test/src/index.css b/packages/@tests/frameworks/cra-ts/src/index.css similarity index 100% rename from packages/@tests/react_test/src/index.css rename to packages/@tests/frameworks/cra-ts/src/index.css diff --git a/packages/@tests/react_test/src/index.tsx b/packages/@tests/frameworks/cra-ts/src/index.tsx similarity index 66% rename from packages/@tests/react_test/src/index.tsx rename to packages/@tests/frameworks/cra-ts/src/index.tsx index 032464fb6..84ed4ce1c 100644 --- a/packages/@tests/react_test/src/index.tsx +++ b/packages/@tests/frameworks/cra-ts/src/index.tsx @@ -3,17 +3,18 @@ import ReactDOM from 'react-dom/client'; import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals'; +import { runMain } from '@test/aqua_for_test'; -const root = ReactDOM.createRoot( - document.getElementById('root') as HTMLElement -); +const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement); root.render( - - - + + + , ); // If you want to start measuring performance in your app, pass a function // to log results (for example: reportWebVitals(console.log)) // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals reportWebVitals(); + +runMain(); diff --git a/packages/@tests/react_test/src/logo.svg b/packages/@tests/frameworks/cra-ts/src/logo.svg similarity index 100% rename from packages/@tests/react_test/src/logo.svg rename to packages/@tests/frameworks/cra-ts/src/logo.svg diff --git a/packages/@tests/react_test/src/react-app-env.d.ts b/packages/@tests/frameworks/cra-ts/src/react-app-env.d.ts similarity index 100% rename from packages/@tests/react_test/src/react-app-env.d.ts rename to packages/@tests/frameworks/cra-ts/src/react-app-env.d.ts diff --git a/packages/@tests/react_test/src/reportWebVitals.ts b/packages/@tests/frameworks/cra-ts/src/reportWebVitals.ts similarity index 100% rename from packages/@tests/react_test/src/reportWebVitals.ts rename to packages/@tests/frameworks/cra-ts/src/reportWebVitals.ts diff --git a/packages/@tests/react_test/src/setupTests.ts b/packages/@tests/frameworks/cra-ts/src/setupTests.ts similarity index 100% rename from packages/@tests/react_test/src/setupTests.ts rename to packages/@tests/frameworks/cra-ts/src/setupTests.ts diff --git a/packages/@tests/react_test/tsconfig.json b/packages/@tests/frameworks/cra-ts/tsconfig.json similarity index 100% rename from packages/@tests/react_test/tsconfig.json rename to packages/@tests/frameworks/cra-ts/tsconfig.json diff --git a/packages/@tests/marine/node/.gitignore b/packages/@tests/marine/node/.gitignore new file mode 100644 index 000000000..1436c502d --- /dev/null +++ b/packages/@tests/marine/node/.gitignore @@ -0,0 +1,19 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release +bundle/ +/dist/ +/worker/dist/ + +# Dependency directories +node_modules/ +jspm_packages/ + +.idea diff --git a/packages/fluence-js/jest.config.js b/packages/@tests/marine/node/jest.config.js similarity index 82% rename from packages/fluence-js/jest.config.js rename to packages/@tests/marine/node/jest.config.js index 058208779..64e531b49 100644 --- a/packages/fluence-js/jest.config.js +++ b/packages/@tests/marine/node/jest.config.js @@ -1,6 +1,5 @@ module.exports = { preset: 'ts-jest', testEnvironment: 'node', - testTimeout: 10000, testPathIgnorePatterns: ['dist'], }; diff --git a/packages/@tests/marine/node/package.json.skip b/packages/@tests/marine/node/package.json.skip new file mode 100644 index 000000000..2f22d9902 --- /dev/null +++ b/packages/@tests/marine/node/package.json.skip @@ -0,0 +1,19 @@ +{ + "name": "@test/marine_node", + "scripts": { + "build": "tsc", + "test": "jest" + }, + "devDependencies": { + "@types/node": "16.11.59", + "typescript": "^4.0.0", + "@types/jest": "28.1.0", + "jest": "28.1.0", + "ts-jest": "28.0.2" + }, + "dependencies": { + "@fluencelabs/avm": "0.32.1", + "@fluencelabs/marine.background-runner": "0.1.0", + "@fluencelabs/marine.deps-loader.node": "0.1.0" + } +} diff --git a/packages/@tests/marine/node/src/test.spec.ts b/packages/@tests/marine/node/src/test.spec.ts new file mode 100644 index 000000000..f8018a43d --- /dev/null +++ b/packages/@tests/marine/node/src/test.spec.ts @@ -0,0 +1,54 @@ +import { MarineBackgroundRunner } from '@fluencelabs/marine.background-runner'; +import { InlinedWorkerLoader, WasmNpmLoader } from '@fluencelabs/marine.deps-loader.node'; +import { callAvm, JSONArray, JSONObject } from '@fluencelabs/avm'; + +const vmPeerId = '12D3KooWNzutuy8WHXDKFqFsATvCR6j9cj2FijYbnd47geRKaQZS'; + +describe('Nodejs integration tests', () => { + it('Smoke test', async () => { + let runner: MarineBackgroundRunner | undefined = undefined; + try { + // arrange + const avm = new WasmNpmLoader('@fluencelabs/avm', 'avm.wasm'); + const control = new WasmNpmLoader('@fluencelabs/marine-js', 'marine-js.wasm'); + const worker = new InlinedWorkerLoader(); + runner = new MarineBackgroundRunner(worker, control, () => {}); + + await avm.start(); + + await runner.start(); + await runner.createService(avm.getValue(), 'avm'); + + const s = `(seq + (par + (call "${vmPeerId}" ("local_service_id" "local_fn_name") [] result_1) + (call "remote_peer_id" ("service_id" "fn_name") [] g) + ) + (call "${vmPeerId}" ("local_service_id" "local_fn_name") [] result_2) + )`; + + // act + const res = await callAvm( + (args: JSONArray | JSONObject) => runner!.callService('avm', 'invoke', args, undefined), + { + currentPeerId: vmPeerId, + initPeerId: vmPeerId, + timestamp: Date.now(), + ttl: 10000, + }, + s, + Buffer.from(''), + Buffer.from(''), + [], + ); + + // assert + expect(res).toMatchObject({ + retCode: 0, + errorMessage: '', + }); + } finally { + runner?.stop(); + } + }); +}); diff --git a/packages/@tests/marine/node/tsconfig.json b/packages/@tests/marine/node/tsconfig.json new file mode 100644 index 000000000..32d340ac6 --- /dev/null +++ b/packages/@tests/marine/node/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist" + }, + "exclude": ["node_modules", "dist"] +} diff --git a/packages/@tests/marine/web/.gitignore b/packages/@tests/marine/web/.gitignore new file mode 100644 index 000000000..8aadd61ae --- /dev/null +++ b/packages/@tests/marine/web/.gitignore @@ -0,0 +1,22 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +build/ +public/*.* + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release +bundle/ +/dist/ +/worker/dist/ + +# Dependency directories +node_modules/ +jspm_packages/ + +.idea diff --git a/packages/@tests/marine/web/index.html b/packages/@tests/marine/web/index.html new file mode 100644 index 000000000..e3df3163f --- /dev/null +++ b/packages/@tests/marine/web/index.html @@ -0,0 +1,12 @@ + + + + + Webpack App + + +

Hello world!

+

Tip: Check your console

+ + + diff --git a/packages/@tests/marine/web/jest.config.js b/packages/@tests/marine/web/jest.config.js new file mode 100644 index 000000000..22cf0c094 --- /dev/null +++ b/packages/@tests/marine/web/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + preset: 'jest-puppeteer', + testMatch: ['**/?(*.)+(spec|test).[t]s'], + testPathIgnorePatterns: ['/node_modules/', 'dist'], + testMatch: ['**/test/*.spec.ts'], + transform: { + '^.+\\.ts?$': 'ts-jest', + }, +}; diff --git a/packages/@tests/marine/web/package.json.skip b/packages/@tests/marine/web/package.json.skip new file mode 100644 index 000000000..de53af989 --- /dev/null +++ b/packages/@tests/marine/web/package.json.skip @@ -0,0 +1,37 @@ +{ + "name": "@test/marine_web", + "version": "0.1.0", + "scripts": { + "start": "webpack serve", + "test": "jest", + "build": "webpack --mode=production --node-env=production", + "build:dev": "webpack --mode=development", + "build:prod": "webpack --mode=production --node-env=production", + "watch": "webpack --watch", + "serve": "webpack serve" + }, + "devDependencies": { + "@webpack-cli/generators": "^2.4.1", + "css-loader": "^6.5.1", + "html-webpack-plugin": "^5.5.0", + "install-local": "^3.0.1", + "style-loader": "^3.3.1", + "ts-loader": "^8.3.0", + "typescript": "^4.5.4", + "util": "^0.12.4", + "webpack": "^5.65.0", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "^4.6.0", + "@types/jest": "^27.0.3", + "@types/jest-environment-puppeteer": "^4.4.1", + "@types/puppeteer": "^5.4.4", + "jest": "28.1.0", + "jest-puppeteer": "^6.0.2", + "ts-jest": "28.0.2" + }, + "dependencies": { + "@fluencelabs/avm": "0.34.4", + "js-base64": "^3.7.2", + "buffer": "6.0.3" + } +} diff --git a/packages/@tests/marine/web/src/index.ts b/packages/@tests/marine/web/src/index.ts new file mode 100644 index 000000000..1a54defdf --- /dev/null +++ b/packages/@tests/marine/web/src/index.ts @@ -0,0 +1,56 @@ +import { Buffer } from 'buffer'; + +// @ts-ignore +window.Buffer = Buffer; + +import { MarineBackgroundRunner } from '@fluencelabs/marine.background-runner'; +import { InlinedWorkerLoader, WasmWebLoader } from '@fluencelabs/marine.deps-loader.web'; +import { callAvm, JSONArray, JSONObject } from '@fluencelabs/avm'; +import { toUint8Array } from 'js-base64'; + +const vmPeerId = '12D3KooWNzutuy8WHXDKFqFsATvCR6j9cj2FijYbnd47geRKaQZS'; + +const b = (s: string) => { + return toUint8Array(s); +}; + +const main = async () => { + const avm = new WasmWebLoader('avm.wasm'); + const control = new WasmWebLoader('marine-js.wasm'); + const worker = new InlinedWorkerLoader(); + const runner = new MarineBackgroundRunner(worker, control, () => {}); + + await runner.start(); + await avm.start(); + const avmVal = await avm.getValue(); + await runner.createService(avmVal, 'avm'); + + const s = `(seq + (par + (call "${vmPeerId}" ("local_service_id" "local_fn_name") [] result_1) + (call "remote_peer_id" ("service_id" "fn_name") [] g) + ) + (call "${vmPeerId}" ("local_service_id" "local_fn_name") [] result_2) + )`; + + // act + const res = await callAvm( + (args: JSONArray | JSONObject) => runner.callService('avm', 'invoke', args, undefined), + { + currentPeerId: vmPeerId, + initPeerId: vmPeerId, + timestamp: Date.now(), + ttl: 10000, + }, + s, + b(''), + b(''), + [], + ); + await runner.stop(); + + return res; +}; + +// @ts-ignore +window.MAIN = main; diff --git a/packages/@tests/marine/web/test/test.spec.ts b/packages/@tests/marine/web/test/test.spec.ts new file mode 100644 index 000000000..23bc281e2 --- /dev/null +++ b/packages/@tests/marine/web/test/test.spec.ts @@ -0,0 +1,115 @@ +import Webpack from 'webpack'; +import WebpackDevServer from 'webpack-dev-server'; +import webpackConfig from '../webpack.config.js'; +import process from 'process'; +import path from 'path'; +import fs from 'fs'; + +// change directory to the location to the test-project. +// run all the subsequent Webpack scripts in that directory +process.chdir(path.join(__dirname, '..')); + +let server; +const port = 8080; + +jest.setTimeout(10000); + +const startServer = async (modifyConfig?) => { + const loadInBrowserToDebug = false; + // const loadInBrowserToDebug = true; // use this line to debug + + modifyConfig = modifyConfig || ((_) => {}); + + const config: any = webpackConfig(); + modifyConfig(config); + config.devServer.open = loadInBrowserToDebug; + server = await makeServer(config); +}; + +// https://stackoverflow.com/questions/42940550/wait-until-webpack-dev-server-is-ready +function makeServer(config) { + return new Promise((resolve, reject) => { + const compiler = Webpack(config); + + let compiled = false; + let listening = false; + + compiler.hooks.done.tap('tap_name', () => { + // console.log('compiled'); + + if (listening) resolve(server); + else compiled = true; + }); + + const server = new WebpackDevServer(compiler, config.devServer); + + server.listen(port, '0.0.0.0', (err) => { + if (err) return reject(err); + + // console.log('listening'); + + if (compiled) { + resolve(server); + } else { + listening = true; + } + }); + }); +} + +const stopServer = async () => { + console.log('test: stopping server'); + await server.stop(); +}; + +const publicDir = 'public'; + +const copyFile = async (packageName: string, fileName: string) => { + const modulePath = require.resolve(packageName); + const source = path.join(path.dirname(modulePath), fileName); + const dest = path.join(publicDir, fileName); + + return fs.promises.copyFile(source, dest); +}; + +const copyPublicDeps = async () => { + await fs.promises.mkdir(publicDir, { recursive: true }); + return Promise.all([ + copyFile('@fluencelabs/marine-js', 'marine-js.wasm'), + copyFile('@fluencelabs/avm', 'avm.wasm'), + ]); +}; + +const cleanPublicDeps = () => { + return fs.promises.rm(publicDir, { recursive: true, force: true }); +}; + +describe('Browser integration tests', () => { + beforeEach(async () => { + await copyPublicDeps(); + }); + + afterEach(async () => { + await stopServer(); + await cleanPublicDeps(); + }); + + it('Some test', async () => { + console.log('test: starting server...'); + await startServer(); + console.log('test: navigating to page...'); + await page.goto('http://localhost:8080/'); + + console.log('test: running script in browser...'); + const res = await page.evaluate(() => { + // @ts-ignore + return window.MAIN(); + }); + + console.log('test: checking expectations...'); + await expect(res).toMatchObject({ + retCode: 0, + errorMessage: '', + }); + }); +}); diff --git a/packages/@tests/marine/web/tsconfig.json b/packages/@tests/marine/web/tsconfig.json new file mode 100644 index 000000000..32d340ac6 --- /dev/null +++ b/packages/@tests/marine/web/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist" + }, + "exclude": ["node_modules", "dist"] +} diff --git a/packages/@tests/marine/web/webpack.config.js b/packages/@tests/marine/web/webpack.config.js new file mode 100644 index 000000000..c294c0f9a --- /dev/null +++ b/packages/@tests/marine/web/webpack.config.js @@ -0,0 +1,65 @@ +// Generated using webpack-cli https://github.com/webpack/webpack-cli + +const path = require('path'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); + +const isProduction = process.env.NODE_ENV == 'production'; + +const stylesHandler = 'style-loader'; + +const config = { + entry: './src/index.ts', + output: { + path: path.resolve(__dirname, 'dist'), + }, + devServer: { + open: true, + host: 'localhost', + static: { + directory: path.join(__dirname, 'public'), + }, + }, + plugins: [ + new HtmlWebpackPlugin({ + template: 'index.html', + }), + + // Add your plugins here + // Learn more about plugins from https://webpack.js.org/configuration/plugins/ + ], + module: { + rules: [ + { + test: /\.(ts|tsx)$/i, + loader: 'ts-loader', + exclude: ['/node_modules/'], + }, + { + test: /\.css$/i, + use: [stylesHandler, 'css-loader'], + }, + { + test: /\.(eot|svg|ttf|woff|woff2|png|jpg|gif)$/i, + type: 'asset', + }, + + // Add your rules for custom modules here + // Learn more about loaders from https://webpack.js.org/loaders/ + ], + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + fallback: { + buffer: require.resolve('buffer/'), + }, + }, +}; + +module.exports = () => { + if (isProduction) { + config.mode = 'production'; + } else { + config.mode = 'development'; + } + return config; +}; diff --git a/packages/@tests/react_test/src/App.tsx b/packages/@tests/react_test/src/App.tsx deleted file mode 100644 index 8c3c34ab1..000000000 --- a/packages/@tests/react_test/src/App.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import React, { useEffect, useState } from "react"; -import logo from "./logo.svg"; -import "./App.css"; - -import { Fluence } from "@fluencelabs/fluence"; -import { krasnodar } from "@fluencelabs/fluence-network-environment"; - -const relayNode = krasnodar[4]; - -function App() { - const [connected, setConnected] = useState(false); - - useEffect(() => { - Fluence.start({ connectTo: relayNode }) - .then(() => { - setConnected(true); - }) - .catch((err) => { - console.log("Client initialization failed", err); - setConnected(false); - }); - }, []); - - return ( -
-
- logo -

Connected: ${connected}

-

- Edit src/App.tsx and save to reload. -

- - Learn React - -
-
- ); -} - -export default App; diff --git a/packages/@tests/smoke/src/index.ts b/packages/@tests/smoke/src/index.ts deleted file mode 100644 index 2ea67468b..000000000 --- a/packages/@tests/smoke/src/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { FluencePeer } from "@fluencelabs/fluence"; - -const peer = new FluencePeer(); - -const main = async () => { - await peer.start({}); - const peerId = peer.getStatus().peerId; - if (!peerId) { - throw new Error("Peer id is null"); - } - console.log("peer id is: ", peerId); - await peer.stop(); -}; - -main() - .then(() => console.log("done")) - .catch((err) => console.error(err)) - .finally(() => { - if (peer) { - peer.stop(); - } - }); diff --git a/packages/@tests/smoke/tsconfig.json b/packages/@tests/smoke/tsconfig.json deleted file mode 100644 index 8ab4e60cb..000000000 --- a/packages/@tests/smoke/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "outDir": "./dist/", - "module": "commonjs", - "moduleResolution": "node", - "sourceMap": true, - "declaration": true, - "skipDefaultLibCheck": true - }, - "exclude": ["node_modules", "dist"], - "include": ["src/**/*"] -} diff --git a/packages/fluence-connection/.gitignore b/packages/@tests/smoke_node/.gitignore similarity index 100% rename from packages/fluence-connection/.gitignore rename to packages/@tests/smoke_node/.gitignore diff --git a/packages/@tests/smoke/package.json b/packages/@tests/smoke_node/package.json similarity index 62% rename from packages/@tests/smoke/package.json rename to packages/@tests/smoke_node/package.json index e617efdb8..5d432d812 100644 --- a/packages/@tests/smoke/package.json +++ b/packages/@tests/smoke_node/package.json @@ -8,19 +8,18 @@ "node": ">=10", "pnpm": ">=3" }, + "type": "module", "scripts": { "build": "tsc", - "test": "ts-node src/index.ts" + "_test": "node --loader ts-node/esm ./src/index.ts" }, "repository": "https://github.com/fluencelabs/fluence-js", "author": "Fluence Labs", "license": "Apache-2.0", "dependencies": { - "@fluencelabs/fluence": "workspace:*", - "ts-node": "^10.9.1" + "@fluencelabs/fluence": "workspace:0.60.0", + "@fluencelabs/js-client.node": "0.1.0", + "@test/aqua_for_test": "workspace:*" }, - "devDependencies": { - "@types/node": "^18.7.13", - "typescript": "^4.6.4" - } + "devDependencies": {} } diff --git a/packages/@tests/smoke_node/src/index.ts b/packages/@tests/smoke_node/src/index.ts new file mode 100644 index 000000000..2c3f150ba --- /dev/null +++ b/packages/@tests/smoke_node/src/index.ts @@ -0,0 +1,4 @@ +import '@fluencelabs/js-client.node'; +import { runMain } from '@test/aqua_for_test'; + +runMain(); diff --git a/packages/@tests/smoke_node/tsconfig.json b/packages/@tests/smoke_node/tsconfig.json new file mode 100644 index 000000000..8c892f213 --- /dev/null +++ b/packages/@tests/smoke_node/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist" + }, + "exclude": ["node_modules", "dist"] +} diff --git a/packages/@tests/smoke_web/.gitignore b/packages/@tests/smoke_web/.gitignore new file mode 100644 index 000000000..f4ecde86c --- /dev/null +++ b/packages/@tests/smoke_web/.gitignore @@ -0,0 +1,21 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +dist + + +# Dependency directories +node_modules/ +jspm_packages/ + +.idea + +public/js-client.min.js \ No newline at end of file diff --git a/packages/@tests/smoke_web/package.json b/packages/@tests/smoke_web/package.json new file mode 100644 index 000000000..fba2f4d85 --- /dev/null +++ b/packages/@tests/smoke_web/package.json @@ -0,0 +1,24 @@ +{ + "name": "@tests/smoke_web", + "version": "0.1.0", + "description": "Smoke test web", + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "engines": { + "node": ">=10", + "pnpm": ">=3" + }, + "scripts": { + "build": "pnpm copy-script", + "serve": "http-server public", + "copy-script": "cp ../../client/js-client.web.standalone/dist/js-client.min.js ./public" + }, + "repository": "https://github.com/fluencelabs/fluence-js", + "author": "Fluence Labs", + "license": "Apache-2.0", + "dependencies": {}, + "devDependencies": { + "@fluencelabs/js-client.web.standalone": "workspace:*", + "http-server": "14.1.1" + } +} diff --git a/packages/@tests/smoke_web/public/index.html b/packages/@tests/smoke_web/public/index.html new file mode 100644 index 000000000..984425f7d --- /dev/null +++ b/packages/@tests/smoke_web/public/index.html @@ -0,0 +1,20 @@ + + + + + + + + Smoke test for web + + + + + + +
+

Open console f12

+
+ + + \ No newline at end of file diff --git a/packages/@tests/smoke_web/public/index.js b/packages/@tests/smoke_web/public/index.js new file mode 100644 index 000000000..8e0f9d4b5 --- /dev/null +++ b/packages/@tests/smoke_web/public/index.js @@ -0,0 +1,103 @@ +const peer = globalThis.defaultPeer; + +const relay = { + multiaddr: '/ip4/127.0.0.1/tcp/4310/ws/p2p/12D3KooWKEprYXUXqoV5xSBeyqrWLpQLLH4PXfvVkDJtmcqmh5V3', + peerId: '12D3KooWKEprYXUXqoV5xSBeyqrWLpQLLH4PXfvVkDJtmcqmh5V3', +}; + +const getRelayTime = (relayPeerId) => { + const script = ` + (xor + (seq + (seq + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "relayPeerId") [] relayPeerId) + ) + (call -relay- ("op" "noop") []) + ) + (xor + (seq + (call relayPeerId ("peer" "timestamp_ms") [] ts) + (call -relay- ("op" "noop") []) + ) + (seq + (call -relay- ("op" "noop") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + ) + ) + ) + (xor + (call %init_peer_id% ("callbackSrv" "response") [ts]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) + ) + `; + + const def = { + functionName: 'getRelayTime', + arrow: { + tag: 'arrow', + domain: { + tag: 'labeledProduct', + fields: { + relayPeerId: { + tag: 'scalar', + name: 'string', + }, + }, + }, + codomain: { + tag: 'unlabeledProduct', + items: [ + { + tag: 'scalar', + name: 'u64', + }, + ], + }, + }, + names: { + relay: '-relay-', + getDataSrv: 'getDataSrv', + callbackSrv: 'callbackSrv', + responseSrv: 'callbackSrv', + responseFnName: 'response', + errorHandlingSrv: 'errorHandlingSrv', + errorFnName: 'error', + }, + }; + + const config = {}; + + const args = {}; + return peer.compilerSupport.callFunction({ + args, + def, + config, + script, + }); +}; + +const main = async () => { + console.log('starting fluence...'); + await peer.start({ + connectTo: relay, + }); + console.log('started fluence'); + + console.log('getting relay time...'); + const res = await getRelayTime(relay.peerId); + console.log('got relay time, ', res); + + console.log('stopping fluence...'); + await peer.stop(); + console.log('stopped fluence...'); +}; + +main() + .then(() => console.log('done!')) + .catch((err) => console.error('error: ', err)); diff --git a/packages/client/api/.gitignore b/packages/client/api/.gitignore new file mode 100644 index 000000000..3d117a64f --- /dev/null +++ b/packages/client/api/.gitignore @@ -0,0 +1,22 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release +bundle/ +tmp/ + +dist +esm +types + +# Dependency directories +node_modules/ +jspm_packages/ + +.idea diff --git a/packages/fluence-keypair/README.md b/packages/client/api/README.md similarity index 96% rename from packages/fluence-keypair/README.md rename to packages/client/api/README.md index 59c265cda..b05a79df1 100644 --- a/packages/fluence-keypair/README.md +++ b/packages/client/api/README.md @@ -1,4 +1,4 @@ -# FluenceJS Keypair +# JS Client web This package is a part of FluenceJS, the official implementation of the Fluence Peer in typescript. See the [FluenceJS repo](https://github.com/fluencelabs/fluence-js) for more info diff --git a/packages/client/api/package.json b/packages/client/api/package.json new file mode 100644 index 000000000..b00db6a3e --- /dev/null +++ b/packages/client/api/package.json @@ -0,0 +1,42 @@ +{ + "_1": "This should actually be named @fluencelabs/js-client.api. Naming it fluence-js is needed for backward compat w/ aqua compiler", + "name": "@fluencelabs/fluence", + "version": "0.60.0", + "description": "JS Client API", + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "engines": { + "node": ">=10", + "pnpm": ">=3" + }, + "type": "module", + "_2": "dist/internal/ export is needed for backward compat w/ aqua compiler", + "exports": { + ".": { + "import": "./dist/index.js", + "types": "./dist/index.d.ts" + }, + "./compilerSupport/v5": { + "import": "./dist/compilerSupport/v5.js", + "types": "./dist/compilerSupport/v5.d.ts" + }, + "./dist/compilerSupport/v5": { + "import": "./dist/compilerSupport/v5.js", + "types": "./dist/compilerSupport/v5.d.ts" + }, + "./dist/internal/compilerSupport/v4": { + "import": "./dist/compilerSupport/v5.js", + "types": "./dist/compilerSupport/v5.d.ts" + } + }, + "scripts": { + "build": "tsc" + }, + "repository": "https://github.com/fluencelabs/fluence-js", + "author": "Fluence Labs", + "license": "Apache-2.0", + "dependencies": { + "@fluencelabs/interfaces": "0.5.0" + }, + "devDependencies": {} +} diff --git a/packages/client/api/src/compilerSupport/implementation.ts b/packages/client/api/src/compilerSupport/implementation.ts new file mode 100644 index 000000000..a6d4a25a5 --- /dev/null +++ b/packages/client/api/src/compilerSupport/implementation.ts @@ -0,0 +1,181 @@ +/* + * Copyright 2022 Fluence Labs Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { FnConfig, FunctionCallDef, ServiceDef } from '@fluencelabs/interfaces/compilerSupport'; +import type { IFluenceClient } from '@fluencelabs/interfaces/fluenceClient'; +import { getArgumentTypes } from '@fluencelabs/interfaces/compilerSupport'; +import { isFluencePeer } from '@fluencelabs/interfaces/fluenceClient'; + +import { getDefaultPeer } from '../index.js'; + +export type { IFluenceClient, CallParams } from '@fluencelabs/interfaces/fluenceClient'; + +export { + ArrayType, + ArrowType, + ArrowWithCallbacks, + ArrowWithoutCallbacks, + BottomType, + FnConfig, + FunctionCallConstants, + FunctionCallDef, + LabeledProductType, + NilType, + NonArrowType, + OptionType, + ProductType, + ScalarNames, + ScalarType, + ServiceDef, + StructType, + TopType, + UnlabeledProductType, +} from '@fluencelabs/interfaces/compilerSupport'; + +/** + * Convenience function to support Aqua `func` generation backend + * The compiler only need to generate a call the function and provide the corresponding definitions and the air script + * + * @param rawFnArgs - raw arguments passed by user to the generated function + * @param def - function definition generated by the Aqua compiler + * @param script - air script with function execution logic generated by the Aqua compiler + */ +export const callFunction = async (rawFnArgs: Array, def: FunctionCallDef, script: string): Promise => { + const { args, peer, config } = await extractFunctionArgs(rawFnArgs, def); + return peer.compilerSupport.callFunction({ + args, + def, + script, + config: config || {}, + }); +}; + +/** + * Convenience function to support Aqua `service` generation backend + * The compiler only need to generate a call the function and provide the corresponding definitions and the air script + * + * @param args - raw arguments passed by user to the generated function + * @param def - service definition generated by the Aqua compiler + */ +export const registerService = async (args: any[], def: ServiceDef): Promise => { + const { peer, service, serviceId } = await extractServiceArgs(args, def.defaultServiceId); + return peer.compilerSupport.registerService({ + def, + service, + serviceId, + }); +}; + +/** + * Arguments could be passed in one these configurations: + * [...actualArgs] + * [peer, ...actualArgs] + * [...actualArgs, config] + * [peer, ...actualArgs, config] + * + * This function select the appropriate configuration and returns + * arguments in a structured way of: { peer, config, args } + */ +const extractFunctionArgs = async ( + args: any[], + def: FunctionCallDef, +): Promise<{ + peer: IFluenceClient; + config?: FnConfig; + args: { [key: string]: any }; +}> => { + const argumentTypes = getArgumentTypes(def); + const argumentNames = Object.keys(argumentTypes); + const numberOfExpectedArgs = argumentNames.length; + + let peer: IFluenceClient; + let structuredArgs: any[]; + let config: FnConfig; + if (isFluencePeer(args[0])) { + peer = args[0]; + structuredArgs = args.slice(1, numberOfExpectedArgs + 1); + config = args[numberOfExpectedArgs + 1]; + } else { + peer = await getDefaultPeer(); + structuredArgs = args.slice(0, numberOfExpectedArgs); + config = args[numberOfExpectedArgs]; + } + + if (structuredArgs.length !== numberOfExpectedArgs) { + throw new Error(`Incorrect number of arguments. Expecting ${numberOfExpectedArgs}`); + } + + const argsRes = argumentNames.reduce((acc, name, index) => ({ ...acc, [name]: structuredArgs[index] }), {}); + + return { + peer: peer, + config: config, + args: argsRes, + }; +}; + +/** + * Arguments could be passed in one these configurations: + * [serviceObject] + * [peer, serviceObject] + * [defaultId, serviceObject] + * [peer, defaultId, serviceObject] + * + * Where serviceObject is the raw object with function definitions passed by user + * + * This function select the appropriate configuration and returns + * arguments in a structured way of: { peer, serviceId, service } + */ +const extractServiceArgs = async ( + args: any[], + defaultServiceId?: string, +): Promise<{ peer: IFluenceClient; serviceId: string; service: any }> => { + let peer: IFluenceClient; + let serviceId: any; + let service: any; + if (isFluencePeer(args[0])) { + peer = args[0]; + } else { + peer = await getDefaultPeer(); + } + + if (typeof args[0] === 'string') { + serviceId = args[0]; + } else if (typeof args[1] === 'string') { + serviceId = args[1]; + } else { + serviceId = defaultServiceId; + } + + // Figuring out which overload is the service. + // If the first argument is not Fluence Peer and it is an object, then it can only be the service def + // If the first argument is peer, we are checking further. The second argument might either be + // an object, that it must be the service object + // or a string, which is the service id. In that case the service is the third argument + if (!isFluencePeer(args[0]) && typeof args[0] === 'object') { + service = args[0]; + } else if (typeof args[1] === 'object') { + service = args[1]; + } else { + service = args[2]; + } + + return { + peer: peer, + serviceId: serviceId, + service: service, + }; +}; diff --git a/packages/fluence-js/src/internal/compilerSupport/v4.ts b/packages/client/api/src/compilerSupport/v5.ts similarity index 90% rename from packages/fluence-js/src/internal/compilerSupport/v4.ts rename to packages/client/api/src/compilerSupport/v5.ts index 6d747bf96..a9375af7e 100644 --- a/packages/fluence-js/src/internal/compilerSupport/v4.ts +++ b/packages/client/api/src/compilerSupport/v5.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -export { FluencePeer } from '../FluencePeer'; -export { CallParams as CallParams$$ } from '../commonTypes'; +export { IFluenceClient } from './implementation.js'; +export { CallParams as CallParams$$ } from './implementation.js'; export { ArrayType as ArrayType$$, ArrowType as ArrowType$$, @@ -38,4 +38,4 @@ export { UnlabeledProductType as UnlabeledProductType$$, callFunction as callFunction$$, registerService as registerService$$, -} from './v3'; +} from './implementation.js'; diff --git a/packages/client/api/src/index.ts b/packages/client/api/src/index.ts new file mode 100644 index 000000000..ea1235156 --- /dev/null +++ b/packages/client/api/src/index.ts @@ -0,0 +1,69 @@ +import type { IFluenceClient, ClientOptions } from '@fluencelabs/interfaces/fluenceClient'; + +export { IFluenceClient, ClientOptions, CallParams } from '@fluencelabs/interfaces/fluenceClient'; + +// TODO: hack needed to kinda have backward compat with compiler api +export type FluencePeer = IFluenceClient; + +const getPeerFromGlobalThis = (): IFluenceClient | undefined => { + // @ts-ignore + return globalThis.defaultPeer; +}; + +// TODO: DXJ-271 +const REJECT_MESSAGE = 'You probably forgot to add script tag. Read about it here: '; + +/** + * Wait until the js client script it loaded and return the default peer from globalThis + */ +export const getDefaultPeer = (): Promise => { + return new Promise((resolve, reject) => { + let interval: NodeJS.Timer | undefined; + let hits = 50; + interval = setInterval(() => { + if (hits === 0) { + clearInterval(interval); + reject(REJECT_MESSAGE); + } + + let res = getPeerFromGlobalThis(); + if (res) { + clearInterval(interval); + resolve(res); + } + hits--; + }, 100); + }); +}; + +/** + * Public interface to Fluence JS + */ +export const Fluence = { + /** + * Initializes the default peer: starts the Aqua VM, initializes the default call service handlers + * and (optionally) connect to the Fluence network + * @param options - object specifying peer configuration + */ + start: async (options?: ClientOptions): Promise => { + const peer = await getDefaultPeer(); + return peer.start(options); + }, + + /** + * Un-initializes the default peer: stops all the underlying workflows, stops the Aqua VM + * and disconnects from the Fluence network + */ + stop: async (): Promise => { + const peer = await getDefaultPeer(); + return peer.stop(); + }, + + /** + * Get the default peer instance + * @returns the default peer instance + */ + getPeer: async (): Promise => { + return getDefaultPeer(); + }, +}; diff --git a/packages/client/api/tsconfig.json b/packages/client/api/tsconfig.json new file mode 100644 index 000000000..8c892f213 --- /dev/null +++ b/packages/client/api/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist" + }, + "exclude": ["node_modules", "dist"] +} diff --git a/packages/fluence-interfaces/.gitignore b/packages/client/js-client.node/.gitignore similarity index 100% rename from packages/fluence-interfaces/.gitignore rename to packages/client/js-client.node/.gitignore diff --git a/packages/fluence-interfaces/README.md b/packages/client/js-client.node/README.md similarity index 96% rename from packages/fluence-interfaces/README.md rename to packages/client/js-client.node/README.md index 06acea1dd..87bb724bb 100644 --- a/packages/fluence-interfaces/README.md +++ b/packages/client/js-client.node/README.md @@ -1,4 +1,4 @@ -# FluenceJS interfaces +# JS Client node This package is a part of FluenceJS, the official implementation of the Fluence Peer in typescript. See the [FluenceJS repo](https://github.com/fluencelabs/fluence-js) for more info diff --git a/packages/client/js-client.node/package.json b/packages/client/js-client.node/package.json new file mode 100644 index 000000000..81cb66ace --- /dev/null +++ b/packages/client/js-client.node/package.json @@ -0,0 +1,33 @@ +{ + "name": "@fluencelabs/js-client.node", + "version": "0.1.0", + "description": "TypeScript implementation of Fluence Peer", + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "engines": { + "node": ">=10", + "pnpm": ">=3" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "types": "./dist/index.d.ts" + } + }, + "type": "module", + "scripts": { + "build": "tsc" + }, + "repository": "https://github.com/fluencelabs/fluence-js", + "author": "Fluence Labs", + "license": "Apache-2.0", + "dependencies": { + "@fluencelabs/js-peer": "0.5.0", + "@fluencelabs/avm": "0.35.3", + "@fluencelabs/marine-js": "0.3.42", + "platform": "1.3.6" + }, + "devDependencies": { + "@types/platform": "1.3.4" + } +} diff --git a/packages/client/js-client.node/src/index.ts b/packages/client/js-client.node/src/index.ts new file mode 100644 index 000000000..9782427f2 --- /dev/null +++ b/packages/client/js-client.node/src/index.ts @@ -0,0 +1,48 @@ +import * as platform from 'platform'; + +import { FluencePeer } from '@fluencelabs/js-peer/dist/js-peer/FluencePeer.js'; +import { MarineBasedAvmRunner } from '@fluencelabs/js-peer/dist/js-peer/avm.js'; +import { MarineBackgroundRunner } from '@fluencelabs/js-peer/dist/marine/worker'; +import { marineLogFunction } from '@fluencelabs/js-peer/dist/js-peer/utils.js'; +import { WasmLoaderFromNpm } from '@fluencelabs/js-peer/dist/marine/deps-loader/node.js'; +import { WorkerLoader } from '@fluencelabs/js-peer/dist/marine/worker-script/workerLoader.js'; + +throwIfNotSupported(); + +export const defaultNames = { + avm: { + file: 'avm.wasm', + package: '@fluencelabs/avm', + }, + marine: { + file: 'marine-js.wasm', + package: '@fluencelabs/marine-js', + }, +}; + +export const makeDefaultPeer = () => { + const workerLoader = new WorkerLoader(); + const controlModuleLoader = new WasmLoaderFromNpm(defaultNames.marine.package, defaultNames.marine.file); + const avmModuleLoader = new WasmLoaderFromNpm(defaultNames.avm.package, defaultNames.avm.file); + + const marine = new MarineBackgroundRunner(workerLoader, controlModuleLoader, marineLogFunction); + const avm = new MarineBasedAvmRunner(marine, avmModuleLoader, undefined); + return new FluencePeer(marine, avm); +}; + +// @ts-ignore +globalThis.defaultPeer = makeDefaultPeer(); + +function throwIfNotSupported() { + if (platform.name === 'Node.js' && platform.version) { + const version = platform.version.split('.').map(Number); + const major = version[0]; + if (major < 16) { + throw new Error( + 'FluenceJS requires node.js version >= "16.x"; Detected ' + + platform.description + + ' Please update node.js to version 16 or higher.\nYou can use https://nvm.sh utility to update node.js version: "nvm install 17 && nvm use 17 && nvm alias default 17"', + ); + } + } +} diff --git a/packages/client/js-client.node/tsconfig.json b/packages/client/js-client.node/tsconfig.json new file mode 100644 index 000000000..8c892f213 --- /dev/null +++ b/packages/client/js-client.node/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist" + }, + "exclude": ["node_modules", "dist"] +} diff --git a/packages/client/js-client.web.standalone/.gitignore b/packages/client/js-client.web.standalone/.gitignore new file mode 100644 index 000000000..3d117a64f --- /dev/null +++ b/packages/client/js-client.web.standalone/.gitignore @@ -0,0 +1,22 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release +bundle/ +tmp/ + +dist +esm +types + +# Dependency directories +node_modules/ +jspm_packages/ + +.idea diff --git a/packages/fluence-js/.prettierignore b/packages/client/js-client.web.standalone/.prettierignore similarity index 100% rename from packages/fluence-js/.prettierignore rename to packages/client/js-client.web.standalone/.prettierignore diff --git a/packages/fluence-connection/README.md b/packages/client/js-client.web.standalone/README.md similarity index 96% rename from packages/fluence-connection/README.md rename to packages/client/js-client.web.standalone/README.md index 726acb9fb..b05a79df1 100644 --- a/packages/fluence-connection/README.md +++ b/packages/client/js-client.web.standalone/README.md @@ -1,4 +1,4 @@ -# FluenceJS connection +# JS Client web This package is a part of FluenceJS, the official implementation of the Fluence Peer in typescript. See the [FluenceJS repo](https://github.com/fluencelabs/fluence-js) for more info diff --git a/packages/client/js-client.web.standalone/build.ts b/packages/client/js-client.web.standalone/build.ts new file mode 100644 index 000000000..cc398e5c5 --- /dev/null +++ b/packages/client/js-client.web.standalone/build.ts @@ -0,0 +1,126 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import { fromUint8Array } from 'js-base64'; +import { build } from 'vite'; +import { createRequire } from 'module'; +import type { InlineConfig } from 'vite'; +import tsconfigPaths from 'vite-tsconfig-paths'; +import * as inject from '@rollup/plugin-inject'; +import { replaceCodePlugin } from 'vite-plugin-replace'; + +const require = createRequire(import.meta.url); + +const getWorkerScriptPathOrDie = () => { + const scriptPath = path.resolve('../../core/js-peer/dist/marine/worker-script/index.js'); + if (!fs.existsSync(scriptPath)) { + console.error('Worker script not found, looking at: ' + scriptPath); + process.exit(1); + } + + return scriptPath; +}; + +const commonConfig = (opts: { + outDir: string; + name: string; + entry: string; +}): InlineConfig & Required> => { + return { + mode: 'production', + build: { + minify: 'esbuild', + lib: { + entry: opts.entry, + name: opts.name, + fileName: opts.name, + }, + outDir: opts.outDir, + }, + base: '', + plugins: [tsconfigPaths()], + optimizeDeps: { + esbuildOptions: { + define: { + global: 'globalThis', + }, + }, + }, + }; +}; + +const readAsBase64 = async (filePath: string): Promise => { + const scriptRaw = await fs.promises.readFile(filePath); + const b64 = fromUint8Array(scriptRaw); + return b64; +}; + +const readWasmFromNpmAsBase64 = (pkg: string, wasmFileName: string): Promise => { + const pkgPath = require.resolve(pkg); + const wasmFilePath = path.join(path.dirname(pkgPath), wasmFileName); + return readAsBase64(wasmFilePath); +}; + +const buildClient = async () => { + await fs.promises.mkdir('tmp', { recursive: true }); + + // build worker script + const workerConfig = commonConfig({ + outDir: './tmp', + entry: getWorkerScriptPathOrDie(), + name: 'worker-script', + }); + workerConfig.build!.rollupOptions = { + plugins: [ + inject.default({ + Buffer: ['buffer', 'Buffer'], + process: 'process', + }), + ], + }; + + await build(workerConfig); + + // build js-client + const jsClientConfig = commonConfig({ + outDir: './dist', + entry: './src/index.ts', + name: 'js-client', + }); + + const workerScriptB64 = await readAsBase64('./tmp/worker-script.umd.cjs'); + const avmBase64 = await readWasmFromNpmAsBase64('@fluencelabs/avm', 'avm.wasm'); + const marineBase64 = await readWasmFromNpmAsBase64('@fluencelabs/marine-js', 'marine-js.wasm'); + + jsClientConfig.plugins!.push( + replaceCodePlugin({ + replacements: [ + { + from: '___worker___', + to: workerScriptB64, + }, + { + from: '___avm___', + to: avmBase64, + }, + { + from: '___marine___', + to: marineBase64, + }, + ], + }), + ); + + await build(jsClientConfig); + + // We should exclude the script with type=module because + // - it might be confusing (i.e won't work in browsers that do not support ESM, or if you miss the `type` attribute) + // - there is a problem when using `self.crypto` in web workers + await fs.promises.rm('./dist/js-client.js'); + + // browsers don't understand `.cjs` extensions, just use `.js` + await fs.promises.rename('./dist/js-client.umd.cjs', './dist/js-client.min.js'); +}; + +buildClient() + .then(() => console.log('Built successfully')) + .catch((err) => console.error('failed', err)); diff --git a/packages/client/js-client.web.standalone/package.json b/packages/client/js-client.web.standalone/package.json new file mode 100644 index 000000000..987837f05 --- /dev/null +++ b/packages/client/js-client.web.standalone/package.json @@ -0,0 +1,36 @@ +{ + "name": "@fluencelabs/js-client.web.standalone", + "version": "0.1.0", + "description": "TypeScript implementation of Fluence Peer", + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "engines": { + "node": ">=10", + "pnpm": ">=3" + }, + "type": "module", + "scripts": { + "build": "node --loader ts-node/esm ./build.ts" + }, + "repository": "https://github.com/fluencelabs/fluence-js", + "author": "Fluence Labs", + "license": "Apache-2.0", + "dependencies": { + "@fluencelabs/js-peer": "0.5.0", + "buffer": "6.0.3", + "process": "0.11.10" + }, + "devDependencies": { + "@fluencelabs/avm": "0.35.3", + "@fluencelabs/marine-js": "0.3.42", + "@types/node": "16.11.59", + "@types/jest": "28.1.0", + "jest": "28.1.0", + "ts-jest": "28.0.2", + "js-base64": "3.7.2", + "@rollup/plugin-inject": "5.0.3", + "vite-plugin-replace": "0.1.1", + "vite": "4.0.4", + "vite-tsconfig-paths": "4.0.3" + } +} diff --git a/packages/client/js-client.web.standalone/src/index.ts b/packages/client/js-client.web.standalone/src/index.ts new file mode 100644 index 000000000..6e4fd7693 --- /dev/null +++ b/packages/client/js-client.web.standalone/src/index.ts @@ -0,0 +1,18 @@ +import { FluencePeer } from '@fluencelabs/js-peer/dist/js-peer/FluencePeer.js'; +import { MarineBasedAvmRunner } from '@fluencelabs/js-peer/dist/js-peer/avm.js'; +import { MarineBackgroundRunner } from '@fluencelabs/js-peer/dist/marine/worker'; +import { checkConnection, marineLogFunction } from '@fluencelabs/js-peer/dist/js-peer/utils.js'; +import { InlinedWorkerLoader, InlinedWasmLoader } from '@fluencelabs/js-peer/dist/marine/deps-loader/common.js'; + +export const makeDefaultPeer = () => { + const workerLoader = new InlinedWorkerLoader('___worker___'); + const controlModuleLoader = new InlinedWasmLoader('___marine___'); + const avmModuleLoader = new InlinedWasmLoader('___avm___'); + + const marine = new MarineBackgroundRunner(workerLoader, controlModuleLoader, marineLogFunction); + const avm = new MarineBasedAvmRunner(marine, avmModuleLoader, undefined); + return new FluencePeer(marine, avm); +}; + +// @ts-ignore +globalThis.defaultPeer = makeDefaultPeer(); diff --git a/packages/client/js-client.web.standalone/tsconfig.json b/packages/client/js-client.web.standalone/tsconfig.json new file mode 100644 index 000000000..0d2678596 --- /dev/null +++ b/packages/client/js-client.web.standalone/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist", + "moduleResolution": "node" + }, + "exclude": ["node_modules", "dist"] +} diff --git a/packages/fluence-js/.gitignore b/packages/client/js-client.web/.gitignore similarity index 100% rename from packages/fluence-js/.gitignore rename to packages/client/js-client.web/.gitignore diff --git a/packages/fluence-js/README.md b/packages/client/js-client.web/README.md similarity index 54% rename from packages/fluence-js/README.md rename to packages/client/js-client.web/README.md index c1052b601..b05a79df1 100644 --- a/packages/fluence-js/README.md +++ b/packages/client/js-client.web/README.md @@ -1,12 +1,6 @@ -# Fluence JS +# JS Client web -[![npm](https://img.shields.io/npm/v/@fluencelabs/fluence)](https://www.npmjs.com/package/@fluencelabs/fluence) - -Official TypeScript implementation of the Fluence Peer. - -## Getting started - -To start developing applications with Fluence JS refer to the official [documentation](https://fluence.dev/docs/build/fluence-js/) +This package is a part of FluenceJS, the official implementation of the Fluence Peer in typescript. See the [FluenceJS repo](https://github.com/fluencelabs/fluence-js) for more info ## Contributing diff --git a/packages/fluence-keypair/package.json b/packages/client/js-client.web/package.json.skip similarity index 54% rename from packages/fluence-keypair/package.json rename to packages/client/js-client.web/package.json.skip index 3dc06e4fc..7ded9f633 100644 --- a/packages/fluence-keypair/package.json +++ b/packages/client/js-client.web/package.json.skip @@ -1,7 +1,7 @@ { - "name": "@fluencelabs/keypair", - "version": "0.2.0", - "description": "Keypair implementation for Fluence JS Peer", + "name": "@fluencelabs/js-client.web", + "version": "0.1.0", + "description": "TypeScript implementation of Fluence Peer", "main": "./dist/index.js", "typings": "./dist/index.d.ts", "engines": { @@ -15,11 +15,12 @@ "author": "Fluence Labs", "license": "Apache-2.0", "dependencies": { - "peer-id": "0.16.0", - "libp2p-crypto": "0.21.2", - "js-base64": "^3.7.2" + "@fluencelabs/js-peer": "workspace:0.60.0" }, "devDependencies": { - "typescript": "^4.6.4" + "@types/node": "16.11.59", + "@types/jest": "28.1.0", + "jest": "28.1.0", + "ts-jest": "28.0.2" } } diff --git a/packages/client/js-client.web/src/index.ts b/packages/client/js-client.web/src/index.ts new file mode 100644 index 000000000..1b74bdf5a --- /dev/null +++ b/packages/client/js-client.web/src/index.ts @@ -0,0 +1,23 @@ +import { MarineBackgroundRunner } from '@fluencelabs/marine.background-runner'; +import { MarineBasedAvmRunner } from '@fluencelabs/js-peer/dist/avm'; +import { marineLogFunction } from '@fluencelabs/js-peer/dist/utils'; +import { FluencePeer } from '@fluencelabs/js-peer/dist/FluencePeer'; +import { InlinedWorkerLoader, WasmWebLoader } from '@fluencelabs/marine.deps-loader.web'; + +export const defaultNames = { + avm: 'avm.wasm', + marine: 'marine-js.wasm', +}; + +export const makeDefaultPeer = () => { + const workerLoader = new InlinedWorkerLoader(); + const controlModuleLoader = new WasmWebLoader(defaultNames.marine); + const avmModuleLoader = new WasmWebLoader(defaultNames.avm); + + const marine = new MarineBackgroundRunner(workerLoader, controlModuleLoader, marineLogFunction); + const avm = new MarineBasedAvmRunner(marine, avmModuleLoader, undefined); + return new FluencePeer(marine, avm); +}; + +// @ts-ignore +globalThis.defaultPeer = makeDefaultPeer(); diff --git a/packages/client/js-client.web/tsconfig.json b/packages/client/js-client.web/tsconfig.json new file mode 100644 index 000000000..8c892f213 --- /dev/null +++ b/packages/client/js-client.web/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist" + }, + "exclude": ["node_modules", "dist"] +} diff --git a/packages/fluence-keypair/.gitignore b/packages/client/tools/.gitignore similarity index 100% rename from packages/fluence-keypair/.gitignore rename to packages/client/tools/.gitignore diff --git a/packages/fluence-connection/.npmignore b/packages/client/tools/.npmignore similarity index 100% rename from packages/fluence-connection/.npmignore rename to packages/client/tools/.npmignore diff --git a/packages/client/tools/.prettierignore b/packages/client/tools/.prettierignore new file mode 100644 index 000000000..178135c2b --- /dev/null +++ b/packages/client/tools/.prettierignore @@ -0,0 +1 @@ +/dist/ diff --git a/packages/fluence-connection/CONTRIBUTING.md b/packages/client/tools/CONTRIBUTING.md similarity index 100% rename from packages/fluence-connection/CONTRIBUTING.md rename to packages/client/tools/CONTRIBUTING.md diff --git a/packages/client/tools/README.md b/packages/client/tools/README.md new file mode 100644 index 000000000..b4c27fc0b --- /dev/null +++ b/packages/client/tools/README.md @@ -0,0 +1,11 @@ +# Fluence JS Client tools + +This package is a part of FluenceJS, the official implementation of the Fluence Peer in typescript. See the [FluenceJS repo](https://github.com/fluencelabs/fluence-js) for more info + +## Contributing + +While the project is still in the early stages of development, you are welcome to track progress and contribute. As the project is undergoing rapid changes, interested contributors should contact the team before embarking on larger pieces of work. All contributors should consult with and agree to our [basic contributing rules](CONTRIBUTING.md). + +## License + +[Apache 2.0](LICENSE) diff --git a/packages/fluence-interfaces/package.json b/packages/client/tools/package.json similarity index 68% rename from packages/fluence-interfaces/package.json rename to packages/client/tools/package.json index 36c6d2a0e..76046db2e 100644 --- a/packages/fluence-interfaces/package.json +++ b/packages/client/tools/package.json @@ -1,7 +1,7 @@ { - "name": "@fluencelabs/interfaces", + "name": "@fluencelabs/tools", "version": "0.1.0", - "description": "Fluence interfaces", + "description": "Fluence JS Client tools", "main": "./dist/index.js", "typings": "./dist/index.d.ts", "engines": { @@ -14,8 +14,11 @@ "repository": "https://github.com/fluencelabs/fluence-js", "author": "Fluence Labs", "license": "Apache-2.0", + "bin": { + "copy-marine": "dist/copyMarine.js" + }, "dependencies": {}, "devDependencies": { - "typescript": "^4.6.4" + "@types/node": "16.11.59" } } diff --git a/packages/fluence-js/src/tools/copyMarine.ts b/packages/client/tools/src/copyMarine.ts similarity index 89% rename from packages/fluence-js/src/tools/copyMarine.ts rename to packages/client/tools/src/copyMarine.ts index 7e3259b3d..72b4c7afc 100644 --- a/packages/fluence-js/src/tools/copyMarine.ts +++ b/packages/client/tools/src/copyMarine.ts @@ -1,7 +1,7 @@ #! /usr/bin/env node -import fs from 'fs'; -import path from 'path'; +import * as fs from 'fs'; +import * as path from 'path'; const firstArgument = process.argv[2]; @@ -31,7 +31,7 @@ async function main() { await fs.promises.mkdir(destPath, { recursive: true }); await Promise.all([ - copyFile('@fluencelabs/marine-js', 'marine-js.web.js'), + copyFile('@fluencelabs/marine.worker-script', 'marine-js.web.js'), copyFile('@fluencelabs/marine-js', 'marine-js.wasm'), copyFile('@fluencelabs/avm', 'avm.wasm'), ]); diff --git a/packages/client/tools/tsconfig.json b/packages/client/tools/tsconfig.json new file mode 100644 index 000000000..8c892f213 --- /dev/null +++ b/packages/client/tools/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist" + }, + "exclude": ["node_modules", "dist"] +} diff --git a/packages/core/interfaces/package.json b/packages/core/interfaces/package.json new file mode 100644 index 000000000..8b5fdeb5e --- /dev/null +++ b/packages/core/interfaces/package.json @@ -0,0 +1,48 @@ +{ + "name": "@fluencelabs/interfaces", + "type": "module", + "version": "0.5.0", + "description": "Interfaces", + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "exports": { + ".": { + "import": "./dist/index.js", + "types": "./dist/index.d.ts" + }, + "./fluenceClient": { + "import": "./dist/fluenceClient.js", + "types": "./dist/fluenceClient.d.ts" + }, + "./compilerSupport": { + "import": "./dist/compilerSupport.js", + "types": "./dist/compilerSupport.d.ts" + } + }, + "typesVersions": { + "*": { + "fluenceClient.d.ts": [ + "./dist/fluenceClient.d.ts" + ], + "compilerSupport.d.ts": [ + "./dist/compilerSupport.d.ts" + ] + } + }, + "engines": { + "node": ">=10", + "pnpm": ">=3" + }, + "scripts": { + "build": "tsc" + }, + "repository": "https://github.com/fluencelabs/fluence-js", + "author": "Fluence Labs", + "license": "Apache-2.0", + "dependencies": {}, + "devDependencies": { + "@multiformats/multiaddr": "11.3.0", + "@fluencelabs/avm": "0.35.3", + "@fluencelabs/marine-js": "0.3.44" + } +} diff --git a/packages/fluence-js/src/internal/compilerSupport/v3impl/interface.ts b/packages/core/interfaces/src/compilerSupport.ts similarity index 91% rename from packages/fluence-js/src/internal/compilerSupport/v3impl/interface.ts rename to packages/core/interfaces/src/compilerSupport.ts index ce14fe716..01b8361aa 100644 --- a/packages/fluence-js/src/internal/compilerSupport/v3impl/interface.ts +++ b/packages/core/interfaces/src/compilerSupport.ts @@ -236,3 +236,23 @@ export interface FnConfig { */ ttl?: number; } + +export const getArgumentTypes = ( + def: FunctionCallDef, +): { + [key: string]: NonArrowType | ArrowWithoutCallbacks; +} => { + if (def.arrow.domain.tag !== 'labeledProduct') { + throw new Error('Should be impossible'); + } + + return def.arrow.domain.fields; +}; + +export const isReturnTypeVoid = (def: FunctionCallDef): boolean => { + if (def.arrow.codomain.tag === 'nil') { + return true; + } + + return def.arrow.codomain.items.length == 0; +}; diff --git a/packages/core/interfaces/src/fluenceClient.ts b/packages/core/interfaces/src/fluenceClient.ts new file mode 100644 index 000000000..729421245 --- /dev/null +++ b/packages/core/interfaces/src/fluenceClient.ts @@ -0,0 +1,220 @@ +import { SecurityTetraplet } from '@fluencelabs/avm'; +import type { LogLevel } from '@fluencelabs/marine-js/dist/types'; +import type { MultiaddrInput } from '@multiformats/multiaddr'; +import { FnConfig, FunctionCallDef, ServiceDef } from './compilerSupport.js'; + +/** + * Peer ID's id as a base58 string (multihash/CIDv0). + */ +export type PeerIdB58 = string; + +/** + * Additional information about a service call + * @typeparam ArgName + */ +export interface CallParams { + /** + * The identifier of particle which triggered the call + */ + particleId: string; + + /** + * The peer id which created the particle + */ + initPeerId: PeerIdB58; + + /** + * Particle's timestamp when it was created + */ + timestamp: number; + + /** + * Time to live in milliseconds. The time after the particle should be expired + */ + ttl: number; + + /** + * Particle's signature + */ + signature?: string; + + /** + * Security tetraplets + */ + tetraplets: ArgName extends string ? Record : Record; +} + +/** + * Node of the Fluence network specified as a pair of node's multiaddr and it's peer id + */ +type Node = { + peerId: PeerIdB58; + multiaddr: string; +}; + +export type RelayOptions = string | MultiaddrInput | Node; + +export type KeyTypes = 'RSA' | 'Ed25519' | 'secp256k1'; + +export type KeyPairOptions = { + type: 'Ed25519'; + source: 'random' | Uint8Array; +}; + +/** + * Configuration used when initiating Fluence Client + */ +export interface ClientOptions { + /** + * Node in Fluence network to connect to. + * Can be in the form of: + * - string: multiaddr in string format + * - Multiaddr: multiaddr object, @see https://github.com/multiformats/js-multiaddr + * - Node: node structure, @see Node + * - Implementation of FluenceConnection class, @see FluenceConnection + * If not specified the will work locally and would not be able to send or receive particles. + */ + relay?: RelayOptions; + + /** + * Specify the KeyPair to be used to identify the Fluence Peer. + * Will be generated randomly if not specified + */ + keyPair?: KeyPairOptions; + + connectionOptions?: { + /** + * When the peer established the connection to the network it sends a ping-like message to check if it works correctly. + * The options allows to specify the timeout for that message in milliseconds. + * If not specified the default timeout will be used + CallParams, + */ + skipCheckConnection?: boolean; + + /** + * The dialing timeout in milliseconds + */ + dialTimeoutMs?: number; + }; + + /** + * Sets the default TTL for all particles originating from the peer with no TTL specified. + * If the originating particle's TTL is defined then that value will be used + * If the option is not set default TTL will be 7000 + */ + defaultTtlMs?: number; + + /** + * Enables\disabled various debugging features + */ + debug?: { + /** + * If set to true, newly initiated particle ids will be printed to console. + * Useful to see what particle id is responsible for aqua function + */ + printParticleId?: boolean; + /** + * Log level for marine services. By default logging is turned off. + */ + marineLogLevel?: LogLevel; + }; +} + +/** + * Information about Fluence Peer connection. + * Represented as object with the following keys: + * - `isInitialized`: Is the peer initialized or not. + * - `peerId`: Peer Id of the peer. Null if the peer is not initialized + * - `isConnected`: Is the peer connected to network or not + * - `relayPeerId`: Peer Id of the relay the peer is connected to. If the connection is direct relayPeerId is null + * - `isDirect`: True if the peer is connected to the network directly (not through relay) + */ +export type PeerStatus = + | { + isInitialized: false; + peerId: null; + isConnected: false; + relayPeerId: null; + } + | { + isInitialized: true; + peerId: PeerIdB58; + isConnected: false; + relayPeerId: null; + } + | { + isInitialized: true; + peerId: PeerIdB58; + isConnected: true; + relayPeerId: PeerIdB58; + } + | { + isInitialized: true; + peerId: PeerIdB58; + isConnected: true; + isDirect: true; + relayPeerId: null; + }; + +export interface IFluenceClient { + /** + * Get the peer's status + */ + start(config?: ClientOptions): Promise; + + /** + * Un-initializes the peer: stops all the underlying workflows, stops the Aqua VM and disconnects from the Fluence network + */ + stop(): Promise; + + /** + * Get the peer's status + */ + getStatus(): PeerStatus; + + /** + * Return peers SK + */ + getSk(): Uint8Array; + + // TODO: come up with a working interface for + // - particle creation + // - particle initialization + // - service registration + internals: any; + + // TODO: extract this out of Client interface + compilerSupport: { + callFunction: (args: CallFunctionArgs) => Promise; + registerService: (args: RegisterServiceArgs) => void; + }; +} + +export interface CallFunctionArgs { + def: FunctionCallDef; + script: string; + config: FnConfig; + args: { [key: string]: any }; +} + +export interface RegisterServiceArgs { + def: ServiceDef; + serviceId: string | undefined; + service: any; +} + +export const asFluencePeer = (fluencePeerCandidate: unknown): IFluenceClient => { + if (isFluencePeer(fluencePeerCandidate)) { + return fluencePeerCandidate; + } + + throw new Error(`Argument ${fluencePeerCandidate} is not a Fluence Peer`); +}; + +export const isFluencePeer = (fluencePeerCandidate: unknown): fluencePeerCandidate is IFluenceClient => { + if (fluencePeerCandidate && (fluencePeerCandidate as any).__isFluenceAwesome) { + return true; + } + + return false; +}; diff --git a/packages/core/interfaces/src/index.ts b/packages/core/interfaces/src/index.ts new file mode 100644 index 000000000..e4241e03d --- /dev/null +++ b/packages/core/interfaces/src/index.ts @@ -0,0 +1,2 @@ +export * from './compilerSupport.js' +export * from './fluenceClient.js' \ No newline at end of file diff --git a/packages/core/interfaces/tsconfig.json b/packages/core/interfaces/tsconfig.json new file mode 100644 index 000000000..aa5bb8304 --- /dev/null +++ b/packages/core/interfaces/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/core/js-peer/.gitignore b/packages/core/js-peer/.gitignore new file mode 100644 index 000000000..1a59a95f5 --- /dev/null +++ b/packages/core/js-peer/.gitignore @@ -0,0 +1,21 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release +bundle/ + +dist +esm +types + +# Dependency directories +node_modules/ +jspm_packages/ + +.idea diff --git a/packages/fluence-interfaces/.npmignore b/packages/core/js-peer/.npmignore similarity index 100% rename from packages/fluence-interfaces/.npmignore rename to packages/core/js-peer/.npmignore diff --git a/packages/core/js-peer/.prettierignore b/packages/core/js-peer/.prettierignore new file mode 100644 index 000000000..178135c2b --- /dev/null +++ b/packages/core/js-peer/.prettierignore @@ -0,0 +1 @@ +/dist/ diff --git a/packages/fluence-interfaces/CONTRIBUTING.md b/packages/core/js-peer/CONTRIBUTING.md similarity index 100% rename from packages/fluence-interfaces/CONTRIBUTING.md rename to packages/core/js-peer/CONTRIBUTING.md diff --git a/packages/core/js-peer/README.md b/packages/core/js-peer/README.md new file mode 100644 index 000000000..271a05d15 --- /dev/null +++ b/packages/core/js-peer/README.md @@ -0,0 +1,11 @@ +# JS Peer + +TDB + +## Contributing + +While the project is still in the early stages of development, you are welcome to track progress and contribute. As the project is undergoing rapid changes, interested contributors should contact the team before embarking on larger pieces of work. All contributors should consult with and agree to our [basic contributing rules](CONTRIBUTING.md). + +## License + +[Apache 2.0](LICENSE) diff --git a/packages/fluence-js/aqua/src/node-utils.aqua b/packages/core/js-peer/aqua/node-utils.aqua similarity index 100% rename from packages/fluence-js/aqua/src/node-utils.aqua rename to packages/core/js-peer/aqua/node-utils.aqua diff --git a/packages/fluence-js/aqua/src/services.aqua b/packages/core/js-peer/aqua/services.aqua similarity index 100% rename from packages/fluence-js/aqua/src/services.aqua rename to packages/core/js-peer/aqua/services.aqua diff --git a/packages/fluence-js/aqua/src/single-module-srv.aqua b/packages/core/js-peer/aqua/single-module-srv.aqua similarity index 100% rename from packages/fluence-js/aqua/src/single-module-srv.aqua rename to packages/core/js-peer/aqua/single-module-srv.aqua diff --git a/packages/core/js-peer/jest.config.cjs b/packages/core/js-peer/jest.config.cjs new file mode 100644 index 000000000..6ea1a606d --- /dev/null +++ b/packages/core/js-peer/jest.config.cjs @@ -0,0 +1,16 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + extensionsToTreatAsEsm: ['.ts'], + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + testPathIgnorePatterns: ['dist'], + transform: { + '^.+\\.tsx?$': [ + 'ts-jest', + { + useESM: true, + }, + ], + }, +}; diff --git a/packages/core/js-peer/package.json b/packages/core/js-peer/package.json new file mode 100644 index 000000000..642d4a68e --- /dev/null +++ b/packages/core/js-peer/package.json @@ -0,0 +1,65 @@ +{ + "name": "@fluencelabs/js-peer", + "version": "0.5.0", + "description": "TypeScript implementation of Fluence Peer", + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "engines": { + "node": ">=10", + "pnpm": ">=3" + }, + "type": "module", + "scripts": { + "build": "tsc", + "compile-aqua": "aqua -i ./aqua/ -o ./src/internal/_aqua", + "test:smoke": "node ./dist/js-peer/__test__/integration/smokeTest.js", + "test": "NODE_OPTIONS=--experimental-vm-modules pnpm jest", + "test:unit": "NODE_OPTIONS=--experimental-vm-modules pnpm jest --testPathPattern=src/__test__/unit", + "test:integration": "NODE_OPTIONS=--experimental-vm-modules pnpm jest --testPathPattern=src/__test__/integration" + }, + "repository": "https://github.com/fluencelabs/fluence-js", + "author": "Fluence Labs", + "license": "Apache-2.0", + "dependencies": { + "@fluencelabs/interfaces": "0.5.0", + "@fluencelabs/avm": "0.31.10", + "@fluencelabs/marine-js": "0.3.44", + "multiformats": "11.0.1", + "async": "3.2.4", + "bs58": "5.0.0", + "buffer": "6.0.3", + "loglevel": "1.8.1", + "@libp2p/peer-id": "2.0.1", + "rxjs": "7.5.5", + "ts-pattern": "3.3.3", + "uuid": "8.3.2", + "threads": "1.7.0", + "@libp2p/crypto": "1.0.8", + "@libp2p/peer-id-factory": "2.0.1", + "@libp2p/interface-peer-id": "2.0.1", + "@libp2p/interface-keys": "1.0.7", + "js-base64": "3.7.2", + "it-length-prefixed": "8.0.4", + "it-pipe": "2.0.5", + "it-map": "2.0.0", + "uint8arrays": "4.0.3", + "@chainsafe/libp2p-noise": "11.0.0", + "libp2p": "0.42.2", + "@libp2p/interfaces": "3.3.1", + "@libp2p/interface-connection": "3.0.8", + "@libp2p/mplex": "7.1.1", + "@libp2p/websockets": "5.0.3", + "@multiformats/multiaddr": "11.3.0" + }, + "devDependencies": { + "@fluencelabs/aqua": "0.7.7-362", + "@fluencelabs/aqua-api": "0.9.1-373", + "@fluencelabs/aqua-lib": "0.6.0", + "@fluencelabs/fluence-network-environment": "1.0.13", + "@types/bs58": "4.0.1", + "@types/uuid": "8.3.2", + "@types/jest": "29.4.0", + "jest": "29.4.1", + "ts-jest": "29.0.5" + } +} diff --git a/packages/fluence-js/src/__test__/unit/compiler/v3.spec.ts b/packages/core/js-peer/src/compilerSupport/__test__/v3.spec.ts similarity index 70% rename from packages/fluence-js/src/__test__/unit/compiler/v3.spec.ts rename to packages/core/js-peer/src/compilerSupport/__test__/v3.spec.ts index 47c486fd7..d13fb409c 100644 --- a/packages/fluence-js/src/__test__/unit/compiler/v3.spec.ts +++ b/packages/core/js-peer/src/compilerSupport/__test__/v3.spec.ts @@ -1,5 +1,4 @@ -import each from 'jest-each'; -import { aqua2ts, ts2aqua } from '../../../internal/compilerSupport/v3impl/conversions'; +import { aqua2ts, ts2aqua } from '../conversions.js'; const i32 = { tag: 'scalar', name: 'i32' } as const; @@ -152,24 +151,24 @@ const nestedStructs = [ ]; describe('Conversion from aqua to typescript', () => { - each` - aqua | ts | type - ${1} | ${1} | ${i32} - ${[]} | ${null} | ${opt_i32} - ${[1]} | ${1} | ${opt_i32} - ${[1, 2, 3]} | ${[1, 2, 3]} | ${array_i32} - ${[]} | ${[]} | ${array_i32} - ${[[1]]} | ${[1]} | ${array_opt_i32} - ${[[]]} | ${[null]} | ${array_opt_i32} - ${[[1], [2]]} | ${[1, 2]} | ${array_opt_i32} - ${[[], [2]]} | ${[null, 2]} | ${array_opt_i32} - ${structs[0].aqua} | ${structs[0].ts} | ${labeledProduct} - ${structs[1].aqua} | ${structs[1].ts} | ${labeledProduct} - ${structs[0].aqua} | ${structs[0].ts} | ${struct} - ${structs[1].aqua} | ${structs[1].ts} | ${struct} - ${nestedStructs[0].aqua} | ${nestedStructs[0].ts} | ${nestedLabeledProductType} - ${nestedStructs[1].aqua} | ${nestedStructs[1].ts} | ${nestedLabeledProductType} -`.test( + test.each` + aqua | ts | type + ${1} | ${1} | ${i32} + ${[]} | ${null} | ${opt_i32} + ${[1]} | ${1} | ${opt_i32} + ${[1, 2, 3]} | ${[1, 2, 3]} | ${array_i32} + ${[]} | ${[]} | ${array_i32} + ${[[1]]} | ${[1]} | ${array_opt_i32} + ${[[]]} | ${[null]} | ${array_opt_i32} + ${[[1], [2]]} | ${[1, 2]} | ${array_opt_i32} + ${[[], [2]]} | ${[null, 2]} | ${array_opt_i32} + ${structs[0].aqua} | ${structs[0].ts} | ${labeledProduct} + ${structs[1].aqua} | ${structs[1].ts} | ${labeledProduct} + ${structs[0].aqua} | ${structs[0].ts} | ${struct} + ${structs[1].aqua} | ${structs[1].ts} | ${struct} + ${nestedStructs[0].aqua} | ${nestedStructs[0].ts} | ${nestedLabeledProductType} + ${nestedStructs[1].aqua} | ${nestedStructs[1].ts} | ${nestedLabeledProductType} + `( // 'aqua: $aqua. ts: $ts. type: $type', async ({ aqua, ts, type }) => { diff --git a/packages/fluence-js/src/internal/compilerSupport/v3impl/callFunction.ts b/packages/core/js-peer/src/compilerSupport/callFunction.ts similarity index 52% rename from packages/fluence-js/src/internal/compilerSupport/v3impl/callFunction.ts rename to packages/core/js-peer/src/compilerSupport/callFunction.ts index 95c117e64..4421d6ae7 100644 --- a/packages/fluence-js/src/internal/compilerSupport/v3impl/callFunction.ts +++ b/packages/core/js-peer/src/compilerSupport/callFunction.ts @@ -1,6 +1,13 @@ -import { FnConfig, FunctionCallDef } from './interface'; -import { FluencePeer } from '../../FluencePeer'; -import { Fluence } from '../../../index'; +import { + ArrowWithoutCallbacks, + FnConfig, + FunctionCallDef, + NonArrowType, + getArgumentTypes, + isReturnTypeVoid, + IFluenceClient, +} from '@fluencelabs/interfaces'; + import { injectRelayService, registerParticleScopeService, @@ -9,21 +16,7 @@ import { ServiceDescription, userHandlerService, injectValueService, -} from './services'; - -/** - * Convenience function to support Aqua `func` generation backend - * The compiler only need to generate a call the function and provide the corresponding definitions and the air script - * - * @param rawFnArgs - raw arguments passed by user to the generated function - * @param def - function definition generated by the Aqua compiler - * @param script - air script with function execution logic generated by the Aqua compiler - */ -export function callFunction(rawFnArgs: Array, def: FunctionCallDef, script: string): Promise { - const { args, peer, config } = extractArgs(rawFnArgs, def); - - return callFunctionImpl(def, script, config || {}, peer, args); -} +} from './services.js'; /** * Convenience function which does all the internal work of creating particles @@ -40,7 +33,7 @@ export function callFunctionImpl( def: FunctionCallDef, script: string, config: FnConfig, - peer: FluencePeer, + peer: IFluenceClient, args: { [key: string]: any }, ): Promise { const argumentTypes = getArgumentTypes(def); @@ -69,7 +62,7 @@ export function callFunctionImpl( registerParticleScopeService(peer, particle, errorHandlingService(def, reject)); - peer.internals.initiateParticle(particle, (stage) => { + peer.internals.initiateParticle(particle, (stage: any) => { // If function is void, then it's completed when one of the two conditions is met: // 1. The particle is sent to the network (state 'sent') // 2. All CallRequests are executed, e.g., all variable loading and local function calls are completed (state 'localWorkDone') @@ -95,67 +88,3 @@ export function callFunctionImpl( return promise; } - -const isReturnTypeVoid = (def: FunctionCallDef) => { - if (def.arrow.codomain.tag === 'nil') { - return true; - } - - return def.arrow.codomain.items.length == 0; -}; - -/** - * Arguments could be passed in one these configurations: - * [...actualArgs] - * [peer, ...actualArgs] - * [...actualArgs, config] - * [peer, ...actualArgs, config] - * - * This function select the appropriate configuration and returns - * arguments in a structured way of: { peer, config, args } - */ -const extractArgs = ( - args: any[], - def: FunctionCallDef, -): { - peer: FluencePeer; - config?: FnConfig; - args: { [key: string]: any }; -} => { - const argumentTypes = getArgumentTypes(def); - const argumentNames = Object.keys(argumentTypes); - const numberOfExpectedArgs = argumentNames.length; - - let peer: FluencePeer; - let structuredArgs: any[]; - let config: FnConfig; - if (FluencePeer.isInstance(args[0])) { - peer = args[0]; - structuredArgs = args.slice(1, numberOfExpectedArgs + 1); - config = args[numberOfExpectedArgs + 1]; - } else { - peer = Fluence.getPeer(); - structuredArgs = args.slice(0, numberOfExpectedArgs); - config = args[numberOfExpectedArgs]; - } - - if (structuredArgs.length !== numberOfExpectedArgs) { - throw new Error(`Incorrect number of arguments. Expecting ${numberOfExpectedArgs}`); - } - - const argsRes = argumentNames.reduce((acc, name, index) => ({ ...acc, [name]: structuredArgs[index] }), {}); - - return { - peer: peer, - config: config, - args: argsRes, - }; -}; - -const getArgumentTypes = (def: FunctionCallDef) => { - if (def.arrow.domain.tag !== 'labeledProduct') { - throw new Error('Should be impossible'); - } - - return def.arrow.domain.fields; -}; diff --git a/packages/fluence-js/src/internal/compilerSupport/v3impl/conversions.ts b/packages/core/js-peer/src/compilerSupport/conversions.ts similarity index 96% rename from packages/fluence-js/src/internal/compilerSupport/v3impl/conversions.ts rename to packages/core/js-peer/src/compilerSupport/conversions.ts index 578d491b8..08af1ad92 100644 --- a/packages/fluence-js/src/internal/compilerSupport/v3impl/conversions.ts +++ b/packages/core/js-peer/src/compilerSupport/conversions.ts @@ -1,7 +1,7 @@ -import { jsonify } from '../../utils'; +import { jsonify } from '../js-peer/utils.js'; import { match } from 'ts-pattern'; -import { ArrowType, ArrowWithoutCallbacks, NonArrowType, UnlabeledProductType } from './interface'; -import { CallServiceData } from 'src/internal/commonTypes'; +import type { ArrowType, ArrowWithoutCallbacks, NonArrowType } from '@fluencelabs/interfaces'; +import { CallServiceData } from '../interfaces/commonTypes.js'; /** * Convert value from its representation in aqua language to representation in typescript @@ -21,6 +21,7 @@ export const aqua2ts = (value: any, type: NonArrowType): any => { return aqua2ts(value[0], opt.type); } }) + // @ts-ignore .with({ tag: 'scalar' }, { tag: 'bottomType' }, { tag: 'topType' }, () => { return value; }) @@ -102,6 +103,7 @@ export const ts2aqua = (value: any, type: NonArrowType): any => { return [ts2aqua(value, opt.type)]; } }) + // @ts-ignore .with({ tag: 'scalar' }, { tag: 'bottomType' }, { tag: 'topType' }, () => { return value; }) diff --git a/packages/core/js-peer/src/compilerSupport/registerService.ts b/packages/core/js-peer/src/compilerSupport/registerService.ts new file mode 100644 index 000000000..c478bf28b --- /dev/null +++ b/packages/core/js-peer/src/compilerSupport/registerService.ts @@ -0,0 +1,46 @@ +import type { IFluenceClient, ServiceDef } from '@fluencelabs/interfaces'; +import { registerGlobalService, userHandlerService } from './services.js'; + +export const registerServiceImpl = ( + peer: IFluenceClient, + def: ServiceDef, + serviceId: string | undefined, + service: any, +) => { + // TODO: TBH service registration is just putting some stuff into a hashmap + // there should not be such a check at all + if (!peer.getStatus().isInitialized) { + throw new Error( + 'Could not register the service because the peer is not initialized. Are you passing the wrong peer to the register function?', + ); + } + + // Checking for missing keys + const requiredKeys = def.functions.tag === 'nil' ? [] : Object.keys(def.functions.fields); + const incorrectServiceDefinitions = requiredKeys.filter((f) => !(f in service)); + if (!!incorrectServiceDefinitions.length) { + throw new Error( + `Error registering service ${serviceId}: missing functions: ` + + incorrectServiceDefinitions.map((d) => "'" + d + "'").join(', '), + ); + } + + if (!serviceId) { + serviceId = def.defaultServiceId; + } + + if (!serviceId) { + throw new Error('Service ID must be specified'); + } + + const singleFunctions = def.functions.tag === 'nil' ? [] : Object.entries(def.functions.fields); + for (let singleFunction of singleFunctions) { + let [name, type] = singleFunction; + // The function has type of (arg1, arg2, arg3, ... , callParams) => CallServiceResultType | void + // Account for the fact that user service might be defined as a class - .bind(...) + const userDefinedHandler = service[name].bind(service); + + const serviceDescription = userHandlerService(serviceId, singleFunction, userDefinedHandler); + registerGlobalService(peer, serviceDescription); + } +}; diff --git a/packages/fluence-js/src/internal/compilerSupport/v3impl/services.ts b/packages/core/js-peer/src/compilerSupport/services.ts similarity index 87% rename from packages/fluence-js/src/internal/compilerSupport/v3impl/services.ts rename to packages/core/js-peer/src/compilerSupport/services.ts index b8e5ff40e..322789991 100644 --- a/packages/fluence-js/src/internal/compilerSupport/v3impl/services.ts +++ b/packages/core/js-peer/src/compilerSupport/services.ts @@ -1,12 +1,18 @@ import { SecurityTetraplet } from '@fluencelabs/avm'; import { match } from 'ts-pattern'; -import { Particle } from '../../Particle'; -import { CallParams, CallServiceData, GenericCallServiceHandler, ResultCodes } from '../../commonTypes'; -import { FluencePeer } from '../../FluencePeer'; - -import { aquaArgs2Ts, responseServiceValue2ts, returnType2Aqua, ts2aqua } from './conversions'; -import { ArrowWithoutCallbacks, FunctionCallConstants, FunctionCallDef, NonArrowType } from './interface'; +import { Particle } from '../js-peer/Particle.js'; +import { CallServiceData, GenericCallServiceHandler, ResultCodes } from '../interfaces/commonTypes.js'; + +import { aquaArgs2Ts, responseServiceValue2ts, returnType2Aqua, ts2aqua } from './conversions.js'; +import { + IFluenceClient, + CallParams, + ArrowWithoutCallbacks, + FunctionCallConstants, + FunctionCallDef, + NonArrowType, +} from '@fluencelabs/interfaces'; export interface ServiceDescription { serviceId: string; @@ -17,7 +23,7 @@ export interface ServiceDescription { /** * Creates a service which injects relay's peer id into aqua space */ -export const injectRelayService = (def: FunctionCallDef, peer: FluencePeer) => { +export const injectRelayService = (def: FunctionCallDef, peer: IFluenceClient) => { return { serviceId: def.names.getDataSrv, fnName: def.names.relay, @@ -162,10 +168,10 @@ const extractCallParams = (req: CallServiceData, arrow: ArrowWithoutCallbacks): return callParams; }; -export const registerParticleScopeService = (peer: FluencePeer, particle: Particle, service: ServiceDescription) => { +export const registerParticleScopeService = (peer: IFluenceClient, particle: Particle, service: ServiceDescription) => { peer.internals.regHandler.forParticle(particle.id, service.serviceId, service.fnName, service.handler); }; -export const registerGlobalService = (peer: FluencePeer, service: ServiceDescription) => { +export const registerGlobalService = (peer: IFluenceClient, service: ServiceDescription) => { peer.internals.regHandler.common(service.serviceId, service.fnName, service.handler); }; diff --git a/packages/fluence-connection/src/index.ts b/packages/core/js-peer/src/connection/index.ts similarity index 71% rename from packages/fluence-connection/src/index.ts rename to packages/core/js-peer/src/connection/index.ts index 008db986a..44d7dad71 100644 --- a/packages/fluence-connection/src/index.ts +++ b/packages/core/js-peer/src/connection/index.ts @@ -13,23 +13,26 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { FluenceConnection, ParticleHandler, PeerIdB58 } from '@fluencelabs/interfaces'; -// @ts-ignore -import Websockets from 'libp2p-websockets'; -// @ts-ignore -import Mplex from 'libp2p-mplex'; -import Lib2p2Peer from 'libp2p'; -import { decode, encode } from 'it-length-prefixed'; +import { PeerIdB58 } from '@fluencelabs/interfaces'; +import { FluenceConnection, ParticleHandler } from '../interfaces/index.js'; import { pipe } from 'it-pipe'; -import * as log from 'loglevel'; -import { Noise } from '@chainsafe/libp2p-noise'; -import PeerId from 'peer-id'; -import type { MultiaddrInput } from 'multiaddr'; -import { Multiaddr } from 'multiaddr'; -// @ts-ignore -import { all as allow_all } from 'libp2p-websockets/src/filters'; -import { Connection } from 'libp2p-interfaces/src/topology'; -import Buffer from './Buffer'; +import { encode, decode } from 'it-length-prefixed'; +import type { PeerId } from '@libp2p/interface-peer-id'; +import { createLibp2p, Libp2p } from 'libp2p'; + +import { noise } from '@chainsafe/libp2p-noise'; +import { mplex } from '@libp2p/mplex'; +import { webSockets } from '@libp2p/websockets'; +import { all } from '@libp2p/websockets/filters'; +import { multiaddr } from '@multiformats/multiaddr'; +import type { MultiaddrInput, Multiaddr } from '@multiformats/multiaddr'; +import type { Connection } from '@libp2p/interface-connection'; + +import map from 'it-map'; +import { fromString } from 'uint8arrays/from-string'; +import { toString } from 'uint8arrays/to-string'; + +import log from 'loglevel'; export const PROTOCOL_NAME = '/fluence/particle/2.0.0'; @@ -59,7 +62,7 @@ export interface FluenceConnectionOptions { export class RelayConnection extends FluenceConnection { constructor( public peerId: PeerIdB58, - private _lib2p2Peer: Lib2p2Peer, + private _lib2p2Peer: Libp2p, private _relayAddress: Multiaddr, public readonly relayPeerId: PeerIdB58, ) { @@ -69,27 +72,18 @@ export class RelayConnection extends FluenceConnection { private _connection?: Connection; static async createConnection(options: FluenceConnectionOptions): Promise { - const transportKey = Websockets.prototype[Symbol.toStringTag]; - const lib2p2Peer = await Lib2p2Peer.create({ + const lib2p2Peer = await createLibp2p({ peerId: options.peerId, - modules: { - transport: [Websockets], - streamMuxer: [Mplex], - connEncryption: [new Noise()], - }, - config: { - transport: { - [transportKey]: { - filter: allow_all, - }, - }, - }, - dialer: { - dialTimeout: options?.dialTimeoutMs, - }, + transports: [ + webSockets({ + filter: all, + }), + ], + streamMuxers: [mplex()], + connectionEncryption: [noise()], }); - const relayMultiaddr = new Multiaddr(options.relayAddress); + const relayMultiaddr = multiaddr(options.relayAddress); const relayPeerId = relayMultiaddr.getPeerId(); if (relayPeerId === null) { throw new Error('Specified multiaddr is invalid or missing peer id: ' + options.relayAddress); @@ -97,7 +91,7 @@ export class RelayConnection extends FluenceConnection { return new RelayConnection( // force new line - options.peerId.toB58String(), + options.peerId.toString(), lib2p2Peer, relayMultiaddr, relayPeerId, @@ -127,12 +121,12 @@ export class RelayConnection extends FluenceConnection { const sink = this._connection.streams[0].sink; */ - const conn = await this._lib2p2Peer.dialProtocol(this._relayAddress, PROTOCOL_NAME); - const sink = conn.stream.sink; + const stream = await this._lib2p2Peer.dialProtocol(this._relayAddress, PROTOCOL_NAME); + const sink = stream.sink; pipe( - // force new line - [Buffer.from(particle, 'utf8')], + [fromString(particle)], + // @ts-ignore encode(), sink, ); @@ -146,7 +140,9 @@ export class RelayConnection extends FluenceConnection { stream.source, // @ts-ignore decode(), - async (source: AsyncIterable) => { + // @ts-ignore + (source) => map(source, (buf) => toString(buf.subarray())), + async (source) => { try { for await (const msg of source) { try { @@ -162,7 +158,7 @@ export class RelayConnection extends FluenceConnection { ); }); - log.debug(`dialing to the node with client's address: ` + this._lib2p2Peer.peerId.toB58String()); + log.debug(`dialing to the node with client's address: ` + this._lib2p2Peer.peerId.toString()); try { this._connection = await this._lib2p2Peer.dial(this._relayAddress); diff --git a/packages/fluence-js/src/internal/commonTypes.ts b/packages/core/js-peer/src/interfaces/commonTypes.ts similarity index 75% rename from packages/fluence-js/src/internal/commonTypes.ts rename to packages/core/js-peer/src/interfaces/commonTypes.ts index 7857b0325..878337c6c 100644 --- a/packages/fluence-js/src/internal/commonTypes.ts +++ b/packages/core/js-peer/src/interfaces/commonTypes.ts @@ -14,48 +14,8 @@ * limitations under the License. */ -import { SecurityTetraplet } from '@fluencelabs/avm'; - -/** - * Peer ID's id as a base58 string (multihash/CIDv0). - */ -export type PeerIdB58 = string; - -/** - * Additional information about a service call - * @typeparam ArgName - */ -export interface CallParams { - /** - * The identifier of particle which triggered the call - */ - particleId: string; - - /** - * The peer id which created the particle - */ - initPeerId: PeerIdB58; - - /** - * Particle's timestamp when it was created - */ - timestamp: number; - - /** - * Time to live in milliseconds. The time after the particle should be expired - */ - ttl: number; - - /** - * Particle's signature - */ - signature?: string; - - /** - * Security tetraplets - */ - tetraplets: ArgName extends string ? Record : Record; -} +import type { PeerIdB58 } from '@fluencelabs/interfaces'; +import type { SecurityTetraplet } from '@fluencelabs/avm'; export enum ResultCodes { success = 0, diff --git a/packages/core/js-peer/src/interfaces/index.ts b/packages/core/js-peer/src/interfaces/index.ts new file mode 100644 index 000000000..b93667c14 --- /dev/null +++ b/packages/core/js-peer/src/interfaces/index.ts @@ -0,0 +1,90 @@ +/* + * Copyright 2020 Fluence Labs Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { PeerIdB58 } from '@fluencelabs/interfaces'; +import type { JSONArray, JSONObject, LogLevel } from '@fluencelabs/marine-js/dist/types'; +import type { RunParameters, CallResultsArray, InterpreterResult } from '@fluencelabs/avm'; +import type { WorkerImplementation } from 'threads/dist/types/master'; + +export type ParticleHandler = (particle: string) => void; + +/** + * Base class for connectivity layer to Fluence Network + */ +export abstract class FluenceConnection { + abstract readonly relayPeerId: PeerIdB58 | null; + abstract connect(onIncomingParticle: ParticleHandler): Promise; + abstract disconnect(): Promise; + abstract sendParticle(nextPeerIds: PeerIdB58[], particle: string): Promise; +} + +export interface IMarine extends IModule { + createService(serviceModule: SharedArrayBuffer | Buffer, serviceId: string, logLevel?: LogLevel): Promise; + + callService( + serviceId: string, + functionName: string, + args: JSONArray | JSONObject, + callParams: any, + ): Promise; +} + +export interface IAvmRunner extends IModule { + run( + runParams: RunParameters, + air: string, + prevData: Uint8Array, + data: Uint8Array, + callResults: CallResultsArray, + ): Promise; +} + +export interface IModule { + start(): Promise; + stop(): Promise; +} + +export interface IValueLoader { + getValue(): T; +} + +export interface IWasmLoader extends IValueLoader, IModule {} + +export interface IWorkerLoader extends IValueLoader, IModule {} + +export class LazyLoader implements IModule, IValueLoader { + private value: T | null = null; + + constructor(private loadValue: () => Promise | T) {} + + getValue(): T { + if (this.value == null) { + throw new Error('Value has not been loaded. Call `start` method to load the value.'); + } + + return this.value; + } + + async start() { + if (this.value !== null) { + return; + } + + this.value = await this.loadValue(); + } + + async stop() {} +} diff --git a/packages/fluence-js/src/internal/FluencePeer.ts b/packages/core/js-peer/src/js-peer/FluencePeer.ts similarity index 68% rename from packages/fluence-js/src/internal/FluencePeer.ts rename to packages/core/js-peer/src/js-peer/FluencePeer.ts index d235e9142..458495d74 100644 --- a/packages/fluence-js/src/internal/FluencePeer.ts +++ b/packages/core/js-peer/src/js-peer/FluencePeer.ts @@ -15,190 +15,61 @@ */ import 'buffer'; -import { RelayConnection } from '@fluencelabs/connection'; -import { FluenceConnection } from '@fluencelabs/interfaces'; -import { KeyPair } from '@fluencelabs/keypair'; -import { FluenceAppService, loadDefaults, loadWasmFromFileSystem, loadWasmFromServer } from '@fluencelabs/marine-js'; -import type { MultiaddrInput } from 'multiaddr'; -import { CallServiceData, CallServiceResult, GenericCallServiceHandler, ResultCodes } from './commonTypes'; -import { PeerIdB58 } from './commonTypes'; -import { Particle, ParticleExecutionStage, ParticleQueueItem } from './Particle'; +import { RelayConnection } from '../connection/index.js'; +import { FluenceConnection, IAvmRunner, IMarine } from '../interfaces/index.js'; +import { fromOpts, KeyPair } from '../keypair/index.js'; import { - throwIfNotSupported, - dataToString, - jsonify, - MarineLoglevel, - marineLogLevelToEnvs, - isString, - ServiceError, -} from './utils'; + CallServiceData, + CallServiceResult, + GenericCallServiceHandler, + ResultCodes, +} from '../interfaces/commonTypes.js'; +import type { + PeerIdB58, + IFluenceClient, + PeerStatus, + CallFunctionArgs, + RegisterServiceArgs, + ClientOptions, + KeyPairOptions, + RelayOptions, +} from '@fluencelabs/interfaces/dist/fluenceClient'; +import { Particle, ParticleExecutionStage, ParticleQueueItem } from './Particle.js'; +import { dataToString, jsonify, isString, ServiceError } from './utils.js'; import { concatMap, filter, pipe, Subject, tap } from 'rxjs'; import log from 'loglevel'; -import { builtInServices } from './builtins/common'; -import { defaultSigGuard, Sig } from './builtins/Sig'; -import { registerSig } from './_aqua/services'; -import { registerSrv } from './_aqua/single-module-srv'; -import Buffer from './Buffer'; - -import { isBrowser, isNode } from 'browser-or-node'; -import { deserializeAvmResult, InterpreterResult, JSONValue, LogLevel, serializeAvmArgs } from '@fluencelabs/avm'; -import { NodeUtils, Srv } from './builtins/SingleModuleSrv'; -import { registerNodeUtils } from './_aqua/node-utils'; - -/** - * Node of the Fluence network specified as a pair of node's multiaddr and it's peer id - */ -type Node = { - peerId: PeerIdB58; - multiaddr: string; -}; +import { builtInServices } from './builtins/common.js'; +import { defaultSigGuard, Sig } from './builtins/Sig.js'; +import { registerSig } from './_aqua/services.js'; +import { registerSrv } from './_aqua/single-module-srv.js'; +import { Buffer } from 'buffer'; + +import { JSONValue } from '@fluencelabs/avm'; +import { LogLevel } from '@fluencelabs/marine-js/dist/types'; +import { NodeUtils, Srv } from './builtins/SingleModuleSrv.js'; +import { registerNodeUtils } from './_aqua/node-utils.js'; +import type { MultiaddrInput } from '@multiformats/multiaddr'; +import { callFunctionImpl } from '../compilerSupport/callFunction.js'; +import { registerServiceImpl } from '../compilerSupport/registerService.js'; const DEFAULT_TTL = 7000; -export type ConnectionOption = string | MultiaddrInput | Node; - -/** - * Configuration used when initiating Fluence Peer - */ -export interface PeerConfig { - /** - * Node in Fluence network to connect to. - * Can be in the form of: - * - string: multiaddr in string format - * - Multiaddr: multiaddr object, @see https://github.com/multiformats/js-multiaddr - * - Node: node structure, @see Node - * - Implementation of FluenceConnection class, @see FluenceConnection - * If not specified the will work locally and would not be able to send or receive particles. - */ - connectTo?: ConnectionOption; - - /** - * @deprecated. AVM run through marine-js infrastructure. - * @see debug.marineLogLevel option to configure logging level of AVM - */ - avmLogLevel?: MarineLoglevel; - - /** - * Specify the KeyPair to be used to identify the Fluence Peer. - * Will be generated randomly if not specified - */ - KeyPair?: KeyPair; - - /** - * When the peer established the connection to the network it sends a ping-like message to check if it works correctly. - * The options allows to specify the timeout for that message in milliseconds. - * If not specified the default timeout will be used - */ - checkConnectionTimeoutMs?: number; - - /** - * When the peer established the connection to the network it sends a ping-like message to check if it works correctly. - * If set to true, the ping-like message will be skipped - * Default: false - */ - skipCheckConnection?: boolean; - - /** - * The dialing timeout in milliseconds - */ - dialTimeoutMs?: number; - - /** - * Sets the default TTL for all particles originating from the peer with no TTL specified. - * If the originating particle's TTL is defined then that value will be used - * If the option is not set default TTL will be 7000 - */ - defaultTtlMs?: number; - - /** - * This option allows to specify the location of various dependencies needed for marine-js. - * Each key specifies the location of the corresponding dependency. - * If Fluence peer is started inside browser the location is treated as the path to the file relative to origin. - * IF Fluence peer is started in nodejs the location is treated as the full path to file on the file system. - */ - marineJS?: { - /** - * Configures path to the marine-js worker script. - */ - workerScriptPath: string; - - /** - * Configures the path to marine-js control wasm module - */ - marineWasmPath: string; - - /** - * Configures the path to AVM wasm module - */ - avmWasmPath: string; - }; - - /** - * Enables\disabled various debugging features - */ - debug?: { - /** - * If set to true, newly initiated particle ids will be printed to console. - * Useful to see what particle id is responsible for aqua function - */ - printParticleId?: boolean; - - /** - * Log level for marine services. By default logging is turned off. - */ - marineLogLevel?: LogLevel; - }; -} - -/** - * Information about Fluence Peer connection. - * Represented as object with the following keys: - * - `isInitialized`: Is the peer initialized or not. - * - `peerId`: Peer Id of the peer. Null if the peer is not initialized - * - `isConnected`: Is the peer connected to network or not - * - `relayPeerId`: Peer Id of the relay the peer is connected to. If the connection is direct relayPeerId is null - * - `isDirect`: True if the peer is connected to the network directly (not through relay) - */ -export type PeerStatus = - | { - isInitialized: false; - peerId: null; - isConnected: false; - relayPeerId: null; - } - | { - isInitialized: true; - peerId: PeerIdB58; - isConnected: false; - relayPeerId: null; - } - | { - isInitialized: true; - peerId: PeerIdB58; - isConnected: true; - relayPeerId: PeerIdB58; - } - | { - isInitialized: true; - peerId: PeerIdB58; - isConnected: true; - isDirect: true; - relayPeerId: null; - }; +export type PeerConfig = ClientOptions; /** * This class implements the Fluence protocol for javascript-based environments. * It provides all the necessary features to communicate with Fluence network */ -export class FluencePeer { +export class FluencePeer implements IFluenceClient { + constructor(private marine: IMarine, private avmRunner: IAvmRunner) {} + /** - * Checks whether the object is instance of FluencePeer class - * @param obj - object to check if it is FluencePeer - * @returns true if the object is FluencePeer false otherwise + * Internal contract to cast unknown objects to IFluenceClient. + * If an unknown object has this property then we assume it is in fact a Peer and it implements IFluenceClient + * Check against this variable MUST NOT be coupled with any `FluencePeer` because otherwise it might get bundled + * brining a lot of unnecessary stuff alongside with it */ - static isInstance(obj: unknown): obj is FluencePeer { - return obj instanceof FluencePeer; - } + __isFluenceAwesome = true; /** * Get the peer's status @@ -214,19 +85,19 @@ export class FluencePeer { }; } - if (this._connection === undefined) { + if (this.connection === null) { return { isInitialized: true, - peerId: this._keyPair.Libp2pPeerId.toB58String(), + peerId: this._keyPair.getPeerId(), isConnected: false, relayPeerId: null, }; } - if (this._connection.relayPeerId === null) { + if (this.connection.relayPeerId === null) { return { isInitialized: true, - peerId: this._keyPair.Libp2pPeerId.toB58String(), + peerId: this._keyPair.getPeerId(), isConnected: true, isDirect: true, relayPeerId: null, @@ -235,25 +106,34 @@ export class FluencePeer { return { isInitialized: true, - peerId: this._keyPair.Libp2pPeerId.toB58String(), + peerId: this._keyPair.getPeerId(), isConnected: true, - relayPeerId: this._connection.relayPeerId, + relayPeerId: this.connection.relayPeerId, }; } + /** + * Return peers SK + */ + getSk(): Uint8Array { + if (!this._keyPair) { + throw new Error("Can't get key pair: peer is not initialized"); + } + + return this._keyPair.toEd25519PrivateKey(); + } + /** * Initializes the peer: starts the Aqua VM, initializes the default call service handlers * and (optionally) connect to the Fluence network * @param config - object specifying peer configuration */ async start(config: PeerConfig = {}): Promise { - throwIfNotSupported(); - const keyPair = config.KeyPair ?? (await KeyPair.randomEd25519()); - const newConfig = { ...config, KeyPair: keyPair }; + const keyPair = await makeKeyPair(config.keyPair); + await this.init(config, keyPair); - await this.init(newConfig); + const conn = await configToConnection(keyPair, config?.relay, config?.connectionOptions?.dialTimeoutMs); - const conn = await configToConnection(newConfig.KeyPair, config?.connectTo, config?.dialTimeoutMs); if (conn !== null) { await this.connect(conn); } @@ -278,19 +158,14 @@ export class FluencePeer { * @param serviceId - the service id by which the service can be accessed in aqua */ async registerMarineService(wasm: SharedArrayBuffer | Buffer, serviceId: string): Promise { - if (!this._fluenceAppService) { + if (!this.marine) { throw new Error("Can't register marine service: peer is not initialized"); } if (this._containsService(serviceId)) { throw new Error(`Service with '${serviceId}' id already exists`); } - await this._fluenceAppService.createService( - wasm, - serviceId, - undefined, - marineLogLevelToEnvs(this._marineLogLevel), - ); + await this.marine.createService(wasm, serviceId, this._marineLogLevel); this._marineServices.add(serviceId); } @@ -310,8 +185,8 @@ export class FluencePeer { this._keyPair = undefined; // This will set peer to non-initialized state and stop particle processing this._stopParticleProcessing(); await this.disconnect(); - await this._fluenceAppService?.terminate(); - this._fluenceAppService = undefined; + await this.marine.stop(); + await this.avmRunner.stop(); this._classServices = undefined; this._particleSpecificHandlers.clear(); @@ -320,6 +195,16 @@ export class FluencePeer { } // internal api + get compilerSupport() { + return { + callFunction: (args: CallFunctionArgs): Promise => { + return callFunctionImpl(args.def, args.script, args.config, this, args.args); + }, + registerService: (args: RegisterServiceArgs): void => { + return registerServiceImpl(this, args.def, args.serviceId, args.service); + }, + }; + } /** * @private Is not intended to be used manually. Subject to change @@ -333,7 +218,7 @@ export class FluencePeer { new Error("Can't use avm: peer is not initialized"); } - const res = await this._fluenceAppService!.callService('avm', 'ast', [air], undefined); + const res = await this.marine.callService('avm', 'ast', [air], undefined); if (!isString(res)) { throw new Error(`Call to avm:ast expected to return string. Actual return: ${res}`); } @@ -430,10 +315,10 @@ export class FluencePeer { /** * @private Subject to change. Do not use this method directly */ - async init(config: PeerConfig & Required>) { - this._keyPair = config.KeyPair; + async init(config: Omit, keyPair: KeyPair) { + this._keyPair = keyPair; - const peerId = this._keyPair.Libp2pPeerId.toB58String(); + const peerId = this._keyPair.getPeerId(); if (config?.debug?.printParticleId) { this._printParticleId = true; @@ -445,17 +330,8 @@ export class FluencePeer { this._marineLogLevel = config.debug.marineLogLevel; } - this._fluenceAppService = new FluenceAppService(config?.marineJS?.workerScriptPath); - const marineDeps = config?.marineJS - ? await loadMarineAndAvm(config.marineJS.marineWasmPath, config.marineJS.avmWasmPath) - : await loadDefaults(); - await this._fluenceAppService.init(marineDeps.marine); - await this._fluenceAppService.createService( - marineDeps.avm, - 'avm', - undefined, - marineLogLevelToEnvs(this._marineLogLevel), - ); + await this.marine.start(); + await this.avmRunner.start(); registerDefaultServices(this); @@ -464,11 +340,11 @@ export class FluencePeer { srv: new Srv(this), }; this._classServices.sig.securityGuard = defaultSigGuard(peerId); - registerSig(this, this._classServices.sig); + registerSig(this, 'sig', this._classServices.sig); registerSig(this, peerId, this._classServices.sig); - registerSrv(this, this._classServices.srv); - registerNodeUtils(this, new NodeUtils(this)); + registerSrv(this, 'single_module_srv', this._classServices.srv); + registerNodeUtils(this, 'node_utils', new NodeUtils(this)); this._startParticleProcessing(); } @@ -477,23 +353,19 @@ export class FluencePeer { * @private Subject to change. Do not use this method directly */ async connect(connection: FluenceConnection): Promise { - if (this._connection) { - await this._connection.disconnect(); + if (this.connection) { + await this.connection.disconnect(); } - this._connection = connection; - - await this._connection.connect(this._onIncomingParticle.bind(this)); + this.connection = connection; + await this.connection.connect(this._onIncomingParticle.bind(this)); } /** * @private Subject to change. Do not use this method directly */ async disconnect(): Promise { - if (this._connection) { - await this._connection.disconnect(); - this._connection = undefined; - } + await this.connection?.disconnect(); } // private @@ -506,7 +378,7 @@ export class FluencePeer { // Call service handler private _marineServices = new Set(); - private _marineLogLevel?: MarineLoglevel; + private _marineLogLevel?: LogLevel; private _particleSpecificHandlers = new Map>(); private _commonHandlers = new Map(); @@ -521,11 +393,10 @@ export class FluencePeer { // Internal peer state + private connection: FluenceConnection | null = null; private _printParticleId = false; private _defaultTTL: number = DEFAULT_TTL; private _keyPair: KeyPair | undefined; - private _connection?: FluenceConnection; - private _fluenceAppService?: FluenceAppService; private _timeouts: Array = []; private _particleQueues = new Map>(); @@ -566,13 +437,13 @@ export class FluencePeer { return; } - if (!this._connection) { + if (!this.connection) { item.particle.logTo('error', 'cannot send particle, peer is not connected'); item.onStageChange({ stage: 'sendingError' }); return; } item.particle.logTo('debug', 'sending particle:'); - this._connection.sendParticle(item.nextPeerIds, item.particle.toString()).then( + this.connection?.sendParticle(item.nextPeerIds, item.particle.toString()).then( () => { item.onStageChange({ stage: 'sent' }); }, @@ -605,7 +476,7 @@ export class FluencePeer { concatMap(async (item) => { const status = this.getStatus(); - if (!status.isInitialized || this._fluenceAppService === undefined) { + if (!status.isInitialized || this.marine === undefined) { // If `.stop()` was called return null to stop particle processing immediately return null; } @@ -615,7 +486,10 @@ export class FluencePeer { // MUST happen sequentially (in a critical section). // Otherwise the race between runner might occur corrupting the prevData - const args = serializeAvmArgs( + item.particle.logTo('debug', 'Sending particle to interpreter'); + log.debug('prevData: ', dataToString(prevData)); + + const avmCallResult = await this.avmRunner.run( { initPeerId: item.particle.initPeerId, currentPeerId: status.peerId, @@ -628,16 +502,6 @@ export class FluencePeer { item.particle.callResults, ); - item.particle.logTo('debug', 'Sending particle to interpreter'); - log.debug('prevData: ', dataToString(prevData)); - let avmCallResult: InterpreterResult | Error; - try { - const res = await this._fluenceAppService.callService('avm', 'invoke', args, undefined); - avmCallResult = deserializeAvmResult(res); - } catch (e) { - avmCallResult = e instanceof Error ? e : new Error((e as any).toString()); - } - if (!(avmCallResult instanceof Error) && avmCallResult.retCode === 0) { const newData = Buffer.from(avmCallResult.data); prevData = newData; @@ -749,8 +613,8 @@ export class FluencePeer { log.debug('executing call service handler', jsonify(req)); const particleId = req.particleContext.particleId; - if (this._fluenceAppService && this._marineServices.has(req.serviceId)) { - const result = await this._fluenceAppService.callService(req.serviceId, req.fnName, req.args, undefined); + if (this.marine && this._marineServices.has(req.serviceId)) { + const result = await this.marine.callService(req.serviceId, req.fnName, req.args, undefined); return { retCode: ResultCodes.success, @@ -806,7 +670,7 @@ export class FluencePeer { async function configToConnection( keyPair: KeyPair, - connection?: ConnectionOption, + connection?: RelayOptions, dialTimeoutMs?: number, ): Promise { if (!connection) { @@ -829,7 +693,7 @@ async function configToConnection( } const res = await RelayConnection.createConnection({ - peerId: keyPair.Libp2pPeerId, + peerId: keyPair.getLibp2pPeerId(), relayAddress: connectToMultiAddr, dialTimeoutMs: dialTimeoutMs, }); @@ -859,34 +723,7 @@ function filterExpiredParticles(onParticleExpiration: (item: ParticleQueueItem) ); } -async function loadMarineAndAvm( - marinePath: string, - avmPath: string, -): Promise<{ - marine: SharedArrayBuffer | Buffer; - avm: SharedArrayBuffer | Buffer; -}> { - let promises: [Promise, Promise]; - // check if we are running inside the browser and instantiate worker with the corresponding script - if (isBrowser) { - promises = [ - // force new line - loadWasmFromServer(marinePath), - loadWasmFromServer(avmPath), - ]; - } else if (isNode) { - promises = [ - // force new line - loadWasmFromFileSystem(marinePath), - loadWasmFromFileSystem(avmPath), - ]; - } else { - throw new Error('Unknown environment'); - } - - const [marine, avm] = await Promise.all(promises); - return { - marine, - avm, - }; +async function makeKeyPair(opts?: KeyPairOptions) { + opts = opts || { type: 'Ed25519', source: 'random' }; + return fromOpts(opts); } diff --git a/packages/fluence-js/src/internal/Particle.ts b/packages/core/js-peer/src/js-peer/Particle.ts similarity index 93% rename from packages/fluence-js/src/internal/Particle.ts rename to packages/core/js-peer/src/js-peer/Particle.ts index f93a8ab6c..aed892fa8 100644 --- a/packages/fluence-js/src/internal/Particle.ts +++ b/packages/core/js-peer/src/js-peer/Particle.ts @@ -13,15 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import 'buffer'; +import { fromUint8Array, toUint8Array } from 'js-base64'; import { CallResultsArray, LogLevel } from '@fluencelabs/avm'; import { v4 as uuidv4 } from 'uuid'; -import { fromByteArray, toByteArray } from 'base64-js'; import log from 'loglevel'; -import { ParticleContext } from './commonTypes'; -import { dataToString, jsonify } from './utils'; -import Buffer from './Buffer'; +import { ParticleContext } from '../interfaces/commonTypes.js'; +import { dataToString, jsonify } from './utils.js'; +import { Buffer } from 'buffer'; export class Particle { // TODO: make it not optional (should be added to the constructor) @@ -47,7 +46,7 @@ export class Particle { json.id, json.timestamp, json.script, - toByteArray(json.data), + toUint8Array(json.data), json.ttl, json.init_peer_id, ); @@ -93,7 +92,7 @@ export class Particle { script: this.script, // TODO: copy signature from a particle after signatures will be implemented on nodes signature: [], - data: this.data && fromByteArray(this.data), + data: this.data && fromUint8Array(this.data), }); } diff --git a/packages/fluence-js/src/__test__/connection.ts b/packages/core/js-peer/src/js-peer/__test__/connection.ts similarity index 100% rename from packages/fluence-js/src/__test__/connection.ts rename to packages/core/js-peer/src/js-peer/__test__/connection.ts diff --git a/packages/fluence-js/src/__test__/integration/greeting-record.wasm b/packages/core/js-peer/src/js-peer/__test__/data/greeting-record.wasm similarity index 100% rename from packages/fluence-js/src/__test__/integration/greeting-record.wasm rename to packages/core/js-peer/src/js-peer/__test__/data/greeting-record.wasm diff --git a/packages/fluence-js/src/__test__/integration/greeting.wasm b/packages/core/js-peer/src/js-peer/__test__/data/greeting.wasm similarity index 100% rename from packages/fluence-js/src/__test__/integration/greeting.wasm rename to packages/core/js-peer/src/js-peer/__test__/data/greeting.wasm diff --git a/packages/fluence-js/aqua/tests/marine-js.aqua b/packages/core/js-peer/src/js-peer/__test__/data/marine-js.aqua similarity index 56% rename from packages/fluence-js/aqua/tests/marine-js.aqua rename to packages/core/js-peer/src/js-peer/__test__/data/marine-js.aqua index c9f76222a..2de7507fb 100644 --- a/packages/fluence-js/aqua/tests/marine-js.aqua +++ b/packages/core/js-peer/src/js-peer/__test__/data/marine-js.aqua @@ -11,3 +11,16 @@ func call(arg: string) -> string: res2 <- Greeting.greeting(res1) res3 <- Greeting.greeting(res2) <- res3 + +service GreetingRecord: + greeting_record() -> GreetingRecord + log_debug() + log_error() + log_info() + log_trace() + log_warn() + void_fn() + +func call_info(srvId: string): + GreetingRecord srvId + GreetingRecord.log_info() diff --git a/packages/fluence-js/aqua/tests/sig-tests.aqua b/packages/core/js-peer/src/js-peer/__test__/data/sigService.aqua similarity index 81% rename from packages/fluence-js/aqua/tests/sig-tests.aqua rename to packages/core/js-peer/src/js-peer/__test__/data/sigService.aqua index a3ca9a665..409f6b6f7 100644 --- a/packages/fluence-js/aqua/tests/sig-tests.aqua +++ b/packages/core/js-peer/src/js-peer/__test__/data/sigService.aqua @@ -1,6 +1,6 @@ module Export -import SignResult, Sig from "../src/services.aqua" +import SignResult, Sig from "../../../aqua/services.aqua" export Sig, DataProvider, callSig service DataProvider("data"): diff --git a/packages/fluence-js/aqua/tests/srv-tests.aqua b/packages/core/js-peer/src/js-peer/__test__/data/srv.aqua similarity index 84% rename from packages/fluence-js/aqua/tests/srv-tests.aqua rename to packages/core/js-peer/src/js-peer/__test__/data/srv.aqua index f390062ef..c564b1276 100644 --- a/packages/fluence-js/aqua/tests/srv-tests.aqua +++ b/packages/core/js-peer/src/js-peer/__test__/data/srv.aqua @@ -1,7 +1,7 @@ module Export -import Srv from "../src/single-module-srv.aqua" -import NodeUtils from "../src/node-utils.aqua" +import Srv from "../../../aqua/single-module-srv.aqua" +import NodeUtils from "../../../aqua/node-utils.aqua" export happy_path, list_services, file_not_found, service_removed, removing_non_exiting service Greeting("greeting"): @@ -25,14 +25,18 @@ func file_not_found() -> string: <- e.error! func service_removed(file_path: string) -> string: + result: *string + file <- NodeUtils.read_file(file_path) created_service <- Srv.create(file.content!) Greeting created_service.service_id! Srv.remove(created_service.service_id!) try: dontcare <- Greeting.greeting("test") + result <<- "ok" catch e: - <- e.message + result <<- e.message + <- result! func removing_non_exiting() -> string: e <- Srv.remove("random_id") diff --git a/packages/core/js-peer/src/js-peer/__test__/integration/avm.spec.ts.skip b/packages/core/js-peer/src/js-peer/__test__/integration/avm.spec.ts.skip new file mode 100644 index 000000000..85f3dc62e --- /dev/null +++ b/packages/core/js-peer/src/js-peer/__test__/integration/avm.spec.ts.skip @@ -0,0 +1,158 @@ +import { handleTimeout } from '../../utils.js'; +import { registerHandlersHelper, withPeer } from '../util.js'; + +describe('Avm spec', () => { + it('Simple call', async () => { + await withPeer(async (peer) => { + const res = await new Promise((resolve, reject) => { + const script = ` + (call %init_peer_id% ("print" "print") ["1"]) + `; + const particle = peer.internals.createNewParticle(script); + + if (particle instanceof Error) { + return reject(particle.message); + } + + registerHandlersHelper(peer, particle, { + print: { + print: (args: Array>) => { + const [res] = args; + resolve(res); + }, + }, + }); + + peer.internals.initiateParticle(particle, handleTimeout(reject)); + }); + + expect(res).toBe('1'); + }); + }); + + it('Par call', async () => { + await withPeer(async (peer) => { + const res = await new Promise((resolve, reject) => { + const res: any[] = []; + const script = ` + (seq + (par + (call %init_peer_id% ("print" "print") ["1"]) + (null) + ) + (call %init_peer_id% ("print" "print") ["2"]) + ) + `; + const particle = peer.internals.createNewParticle(script); + + if (particle instanceof Error) { + return reject(particle.message); + } + + registerHandlersHelper(peer, particle, { + print: { + print: (args: any) => { + res.push(args[0]); + if (res.length == 2) { + resolve(res); + } + }, + }, + }); + + peer.internals.initiateParticle(particle, handleTimeout(reject)); + }); + + expect(res).toStrictEqual(['1', '2']); + }); + }); + + it('Timeout in par call: race', async () => { + await withPeer(async (peer) => { + const res = await new Promise((resolve, reject) => { + const script = ` + (seq + (call %init_peer_id% ("op" "identity") ["slow_result"] arg) + (seq + (par + (call %init_peer_id% ("peer" "timeout") [1000 arg] $result) + (call %init_peer_id% ("op" "identity") ["fast_result"] $result) + ) + (seq + (canon %init_peer_id% $result #result) + (call %init_peer_id% ("return" "return") [#result.$[0]]) + ) + ) + ) + `; + const particle = peer.internals.createNewParticle(script); + + if (particle instanceof Error) { + return reject(particle.message); + } + + registerHandlersHelper(peer, particle, { + return: { + return: (args: any) => { + resolve(args[0]); + }, + }, + }); + + peer.internals.initiateParticle(particle, handleTimeout(reject)); + }); + + expect(res).toBe('fast_result'); + }); + }); + + it('Timeout in par call: wait', async () => { + await withPeer(async (peer) => { + const res = await new Promise((resolve, reject) => { + const script = ` + (seq + (call %init_peer_id% ("op" "identity") ["timeout_msg"] arg) + (seq + (seq + (par + (call %init_peer_id% ("peer" "timeout") [1000 arg] $ok_or_err) + (call "invalid_peer" ("op" "identity") ["never"] $ok_or_err) + ) + (xor + (seq + (canon %init_peer_id% $ok_or_err #ok_or_err) + (match #ok_or_err.$[0] "timeout_msg" + (ap "failed_with_timeout" $result) + ) + ) + (ap "impossible happened" $result) + ) + ) + (seq + (canon %init_peer_id% $result #result) + (call %init_peer_id% ("return" "return") [#result.$[0]]) + ) + ) + ) + `; + const particle = peer.internals.createNewParticle(script); + + if (particle instanceof Error) { + return reject(particle.message); + } + + registerHandlersHelper(peer, particle, { + return: { + return: (args: any) => { + resolve(args[0]); + }, + }, + }); + + peer.internals.initiateParticle(particle, handleTimeout(reject)); + }); + + expect(res).toBe('failed_with_timeout'); + }); + }); +}); diff --git a/packages/fluence-js/src/__test__/integration/jsonBuiltin.spec.ts b/packages/core/js-peer/src/js-peer/__test__/integration/jsonBuiltin.spec.ts.skip similarity index 93% rename from packages/fluence-js/src/__test__/integration/jsonBuiltin.spec.ts rename to packages/core/js-peer/src/js-peer/__test__/integration/jsonBuiltin.spec.ts.skip index 3bfcfb9c1..e1a32a6a6 100644 --- a/packages/fluence-js/src/__test__/integration/jsonBuiltin.spec.ts +++ b/packages/core/js-peer/src/js-peer/__test__/integration/jsonBuiltin.spec.ts.skip @@ -1,6 +1,7 @@ -import { Particle } from '../../internal/Particle'; -import { doNothing } from '../../internal/utils'; -import { FluencePeer } from '../../index'; +import { Particle } from '../../Particle.js'; +import { doNothing } from '../../utils.js'; +import { FluencePeer } from '../../FluencePeer.js'; +import { mkTestPeer } from '../util.js'; let peer: FluencePeer; @@ -12,7 +13,7 @@ describe('Sig service test suite', () => { }); beforeEach(async () => { - peer = new FluencePeer(); + peer = mkTestPeer(); await peer.start(); }); diff --git a/packages/core/js-peer/src/js-peer/__test__/integration/marine-js.spec.ts.skip b/packages/core/js-peer/src/js-peer/__test__/integration/marine-js.spec.ts.skip new file mode 100644 index 000000000..0738dd8dd --- /dev/null +++ b/packages/core/js-peer/src/js-peer/__test__/integration/marine-js.spec.ts.skip @@ -0,0 +1,53 @@ +import * as fs from 'fs'; +import * as url from 'url'; +import * as path from 'path'; +import { compileAqua, withPeer } from '../util.js'; + +let aqua: any; +const __dirname = url.fileURLToPath(new URL('.', import.meta.url)); + +describe('Marine js tests', () => { + beforeAll(async () => { + const { services, functions } = await compileAqua(path.join(__dirname, '../data/marine-js.aqua')); + aqua = functions; + }); + + it('should call marine service correctly', async () => { + await withPeer(async (peer) => { + // arrange + const wasm = await fs.promises.readFile(path.join(__dirname, '../data/greeting.wasm')); + await peer.registerMarineService(wasm, 'greeting'); + + // act + const res = await aqua.call(peer, { arg: 'test' }); + + // assert + expect(res).toBe('Hi, Hi, Hi, test'); + }); + }); + + // TODO: console printouts are happening inside web-worker\worker threads. + // Find a way to mock functions in background thread + it.skip('logging should work', async () => { + await withPeer(async (peer) => { + // arrange + + jest.spyOn(global.console, 'info').mockImplementation(() => {}); + + await peer.start({ + debug: { + marineLogLevel: 'debug', + }, + }); + const wasm = await fs.promises.readFile(path.join(__dirname, '../data/greeting-record.wasm')); + await peer.registerMarineService(wasm, 'greeting'); + + // act + await aqua.call_info(peer, { arg: 'greeting' }); + + // assert + expect(console.info).toBeCalledTimes(1); + expect(console.info).toHaveBeenNthCalledWith(1, '[marine service "greeting"]: info'); + }); + }); +}); diff --git a/packages/core/js-peer/src/js-peer/__test__/integration/peer.spec.ts.skip b/packages/core/js-peer/src/js-peer/__test__/integration/peer.spec.ts.skip new file mode 100644 index 000000000..4cf7d2d09 --- /dev/null +++ b/packages/core/js-peer/src/js-peer/__test__/integration/peer.spec.ts.skip @@ -0,0 +1,425 @@ +import { nodes } from '../connection.js'; +import { checkConnection, doNothing, handleTimeout } from '../../utils.js'; +import { registerHandlersHelper, mkTestPeer, withPeer, withConnectedPeer } from '../util.js'; +import { FluencePeer } from '../../FluencePeer.js'; + +describe('Typescript usage suite', () => { + it('should perform test for FluencePeer class correctly', () => { + // arrange + const peer = mkTestPeer(); + const number = 1; + const object = { str: 'Hello!' }; + const undefinedVal = undefined; + + // act + const isPeerPeer = FluencePeer.isInstance(peer); + const isNumberPeer = FluencePeer.isInstance(number); + const isObjectPeer = FluencePeer.isInstance(object); + const isUndefinedPeer = FluencePeer.isInstance(undefinedVal); + + // act + expect(isPeerPeer).toBe(true); + expect(isNumberPeer).toBe(false); + expect(isObjectPeer).toBe(false); + expect(isUndefinedPeer).toBe(false); + }); + + describe('Should expose correct peer status', () => { + it('Should expose correct status for uninitialized peer', () => { + const peer = mkTestPeer(); + const status = peer.getStatus(); + + expect(status.isConnected).toBe(false); + expect(status.isInitialized).toBe(false); + expect(status.peerId).toBe(null); + expect(status.relayPeerId).toBe(null); + }); + + it('Should expose correct status for initialized but not connected peer', async () => { + await withPeer(async (peer) => { + // arrange + + // act + const status = peer.getStatus(); + + // assert + expect(status.isConnected).toBe(false); + expect(status.isInitialized).toBe(true); + expect(status.peerId).not.toBe(null); + expect(status.relayPeerId).toBe(null); + }); + }); + + it('Should expose correct status for connected peer', async () => { + await withConnectedPeer(async (peer) => { + // arrange + + // act + const status = peer.getStatus(); + + // assert + expect(status.isConnected).toBe(true); + expect(status.isInitialized).toBe(true); + expect(status.peerId).not.toBe(null); + expect(status.relayPeerId).not.toBe(null); + }); + }); + }); + + it('should make a call through network', async () => { + await withConnectedPeer(async (peer) => { + // arrange + + const result = await new Promise((resolve, reject) => { + const script = ` + (xor + (seq + (call %init_peer_id% ("load" "relay") [] init_relay) + (seq + (call init_relay ("op" "identity") ["hello world!"] result) + (call %init_peer_id% ("callback" "callback") [result]) + ) + ) + (seq + (call init_relay ("op" "identity") []) + (call %init_peer_id% ("callback" "error") [%last_error%]) + ) + )`; + const particle = peer.internals.createNewParticle(script); + + if (particle instanceof Error) { + return reject(particle.message); + } + + registerHandlersHelper(peer, particle, { + load: { + relay: () => { + return peer.getStatus().relayPeerId; + }, + }, + callback: { + callback: (args: any) => { + const [val] = args; + resolve(val); + }, + error: (args: any) => { + const [error] = args; + reject(error); + }, + }, + }); + + peer.internals.initiateParticle(particle, handleTimeout(reject)); + }); + + expect(result).toBe('hello world!'); + }); + }); + + it('check connection should work', async function () { + await withConnectedPeer(async (peer) => { + const isConnected = await checkConnection(peer); + + expect(isConnected).toEqual(true); + }); + }); + + it('check connection should work with ttl', async function () { + await withConnectedPeer(async (peer) => { + const isConnected = await checkConnection(peer, 10000); + + expect(isConnected).toEqual(true); + }); + }); + + it('two clients should work inside the same time browser', async () => { + await withConnectedPeer(async (peer1) => { + await withConnectedPeer(async (peer2) => { + const res = new Promise((resolve) => { + peer2.internals.regHandler.common('test', 'test', (req) => { + resolve(req.args[0]); + return { + result: {}, + retCode: 0, + }; + }); + }); + + const script = ` + (seq + (call "${peer1.getStatus().relayPeerId}" ("op" "identity") []) + (call "${peer2.getStatus().peerId}" ("test" "test") ["test"]) + ) + `; + const particle = peer1.internals.createNewParticle(script); + + if (particle instanceof Error) { + throw particle; + } + + peer1.internals.initiateParticle(particle, doNothing); + + expect(await res).toEqual('test'); + }); + }); + }); + + describe('should make connection to network', () => { + it('address as string', async () => { + await withConnectedPeer(async (peer) => { + const isConnected = await checkConnection(peer); + + expect(isConnected).toBeTruthy(); + }); + }); + + it('address as multiaddr', async () => { + await withConnectedPeer(async (peer) => { + const isConnected = await checkConnection(peer); + + expect(isConnected).toBeTruthy(); + }); + }); + + it('address as node', async () => { + await withConnectedPeer(async (peer) => { + const isConnected = await checkConnection(peer); + + expect(isConnected).toBeTruthy(); + }); + }); + + it('With connection options: dialTimeout', async () => { + await withPeer( + async (peer) => { + const isConnected = await checkConnection(peer); + + expect(isConnected).toBeTruthy(); + }, + { connectTo: nodes[0], dialTimeoutMs: 100000 }, + ); + }); + + it('With connection options: skipCheckConnection', async () => { + await withPeer( + async (peer) => { + const isConnected = await checkConnection(peer); + + expect(isConnected).toBeTruthy(); + }, + { connectTo: nodes[0], skipCheckConnection: true }, + ); + }); + + it('With connection options: checkConnectionTTL', async () => { + await withPeer( + async (peer) => { + const isConnected = await checkConnection(peer); + + expect(isConnected).toBeTruthy(); + }, + { connectTo: nodes[0], checkConnectionTimeoutMs: 1000 }, + ); + }); + + it('With connection options: defaultTTL', async () => { + await withPeer( + async (peer) => { + const isConnected = await checkConnection(peer); + + expect(isConnected).toBeFalsy(); + }, + { connectTo: nodes[0], defaultTtlMs: 1 }, + ); + }); + }); + + it('Should successfully call identity on local peer', async function () { + await withPeer(async (peer) => { + const res = await new Promise((resolve, reject) => { + const script = ` + (seq + (call %init_peer_id% ("op" "identity") ["test"] res) + (call %init_peer_id% ("callback" "callback") [res]) + ) + `; + const particle = peer.internals.createNewParticle(script); + + if (particle instanceof Error) { + return reject(particle.message); + } + + registerHandlersHelper(peer, particle, { + callback: { + callback: async (args: any) => { + const [res] = args; + resolve(res); + }, + }, + }); + + peer.internals.initiateParticle(particle, handleTimeout(reject)); + }); + + expect(res).toBe('test'); + }); + }); + + it('Should throw correct message when calling non existing local service', async function () { + await withConnectedPeer(async (peer) => { + const res = callIncorrectService(peer); + + await expect(res).rejects.toMatchObject({ + message: expect.stringContaining( + `No handler has been registered for serviceId='incorrect' fnName='incorrect' args='[]'\"'`, + ), + // instruction: 'call %init_peer_id% ("incorrect" "incorrect") [] res', + }); + }); + }); + + it('Should not crash if undefined is passed as a variable', async () => { + await withPeer(async (peer) => { + const res = await new Promise((resolve, reject) => { + const script = ` + (seq + (call %init_peer_id% ("load" "arg") [] arg) + (seq + (call %init_peer_id% ("op" "identity") [arg] res) + (call %init_peer_id% ("callback" "callback") [res]) + ) + )`; + const particle = peer.internals.createNewParticle(script); + + if (particle instanceof Error) { + return reject(particle.message); + } + + registerHandlersHelper(peer, particle, { + load: { + arg: () => undefined, + }, + callback: { + callback: (args: any) => { + const [val] = args; + resolve(val); + }, + error: (args: any) => { + const [error] = args; + reject(error); + }, + }, + }); + + peer.internals.initiateParticle(particle, handleTimeout(reject)); + }); + + expect(res).toBe(null); + }); + }); + + it('Should not crash if an error ocurred in user-defined handler', async () => { + await withPeer(async (peer) => { + const promise = new Promise((_resolve, reject) => { + const script = ` + (xor + (call %init_peer_id% ("load" "arg") [] arg) + (call %init_peer_id% ("callback" "error") [%last_error%]) + )`; + const particle = peer.internals.createNewParticle(script); + + if (particle instanceof Error) { + return reject(particle.message); + } + + registerHandlersHelper(peer, particle, { + load: { + arg: () => { + throw new Error('my super custom error message'); + }, + }, + callback: { + error: (args: any) => { + const [error] = args; + reject(error); + }, + }, + }); + + peer.internals.initiateParticle(particle, handleTimeout(reject)); + }); + + await expect(promise).rejects.toMatchObject({ + message: expect.stringContaining('my super custom error message'), + }); + }); + }); + + it('Should return error if particle is created on a stopped peer', async () => { + const peer = mkTestPeer(); + const particle = peer.internals.createNewParticle(`(null)`); + + expect(particle instanceof Error).toBe(true); + }); + + it.skip('Should throw correct error when the client tries to send a particle not to the relay', async () => { + await withConnectedPeer(async (peer) => { + const promise = new Promise((resolve, reject) => { + const script = ` + (xor + (call "incorrect_peer_id" ("any" "service") []) + (call %init_peer_id% ("callback" "error") [%last_error%]) + )`; + const particle = peer.internals.createNewParticle(script); + + if (particle instanceof Error) { + return reject(particle.message); + } + + registerHandlersHelper(peer, particle, { + callback: { + error: (args: any) => { + const [error] = args; + reject(error); + }, + }, + }); + + peer.internals.initiateParticle(particle, doNothing); + }); + + await expect(promise).rejects.toMatch( + 'Particle is expected to be sent to only the single peer (relay which client is connected to)', + ); + }); + }); +}); + +async function callIncorrectService(peer: FluencePeer): Promise { + return new Promise((resolve, reject) => { + const script = ` + (xor + (call %init_peer_id% ("incorrect" "incorrect") [] res) + (call %init_peer_id% ("callback" "error") [%last_error%]) + )`; + const particle = peer.internals.createNewParticle(script); + + if (particle instanceof Error) { + return reject(particle.message); + } + + registerHandlersHelper(peer, particle, { + callback: { + callback: (args: any) => { + resolve(args); + }, + error: (args: any) => { + const [error] = args; + reject(error); + }, + }, + }); + + peer.internals.initiateParticle(particle, handleTimeout(reject)); + }); +} diff --git a/packages/core/js-peer/src/js-peer/__test__/integration/sigService.spec.ts.skip b/packages/core/js-peer/src/js-peer/__test__/integration/sigService.spec.ts.skip new file mode 100644 index 000000000..155563499 --- /dev/null +++ b/packages/core/js-peer/src/js-peer/__test__/integration/sigService.spec.ts.skip @@ -0,0 +1,99 @@ +import * as path from 'path'; +import * as url from 'url'; +import { KeyPair } from '../../../keypair/index.js'; +import { allowServiceFn } from '../../builtins/securityGuard.js'; +import { Sig } from '../../builtins/Sig.js'; +import { compileAqua, withPeer } from '../util.js'; +import { registerServiceImpl } from '../../compilerSupport/registerService.js'; + +const __dirname = url.fileURLToPath(new URL('.', import.meta.url)); + +let aqua: any; +let sigDef: any; +let dataProviderDef: any; + +describe('Sig service test suite', () => { + beforeAll(async () => { + const { services, functions } = await compileAqua(path.join(__dirname, '../data/sigService.aqua')); + aqua = functions; + sigDef = services.Sig; + dataProviderDef = services.DataProvider; + }); + + it('Use custom sig service, success path', async () => { + await withPeer(async (peer) => { + const customKeyPair = await KeyPair.randomEd25519(); + const customSig = new Sig(customKeyPair); + const data = [1, 2, 3, 4, 5]; + + registerServiceImpl(peer, sigDef, 'CustomSig', customSig); + + registerServiceImpl(peer, dataProviderDef, 'data', { + provide_data: () => { + return data; + }, + }); + + customSig.securityGuard = allowServiceFn('data', 'provide_data'); + + const result = await aqua.callSig(peer, { sigId: 'CustomSig' }); + + expect(result.success).toBe(true); + const isSigCorrect = await customSig.verify(result.signature as number[], data); + expect(isSigCorrect).toBe(true); + }); + }); + + it('Use custom sig service, fail path', async () => { + await withPeer(async (peer) => { + const customKeyPair = await KeyPair.randomEd25519(); + const customSig = new Sig(customKeyPair); + const data = [1, 2, 3, 4, 5]; + + registerServiceImpl(peer, sigDef, 'CustomSig', customSig); + + registerServiceImpl(peer, dataProviderDef, 'data', { + provide_data: () => { + return data; + }, + }); + + customSig.securityGuard = allowServiceFn('wrong', 'wrong'); + + const result = await aqua.callSig(peer, { sigId: 'CustomSig' }); + }); + }); + + it('Default sig service should be resolvable by peer id', async () => { + await withPeer(async (peer) => { + const sig = peer.getServices().sig; + + const data = [1, 2, 3, 4, 5]; + registerServiceImpl(peer, dataProviderDef, 'data', { + provide_data: () => { + return data; + }, + }); + + const callAsSigRes = await aqua.callSig(peer, { sigId: 'sig' }); + const callAsPeerIdRes = await aqua.callSig(peer, { sigId: peer.getStatus().peerId }); + + expect(callAsSigRes.success).toBe(false); + expect(callAsPeerIdRes.success).toBe(false); + + sig.securityGuard = () => true; + + const callAsSigResAfterGuardChange = await aqua.callSig(peer, { sigId: 'sig' }); + const callAsPeerIdResAfterGuardChange = await aqua.callSig(peer, { + sigId: peer.getStatus().peerId, + }); + + expect(callAsSigResAfterGuardChange.success).toBe(true); + expect(callAsPeerIdResAfterGuardChange.success).toBe(true); + + const isValid = await sig.verify(callAsSigResAfterGuardChange.signature as number[], data); + + expect(isValid).toBe(true); + }); + }); +}); diff --git a/packages/core/js-peer/src/js-peer/__test__/integration/smokeTest.ts b/packages/core/js-peer/src/js-peer/__test__/integration/smokeTest.ts new file mode 100644 index 000000000..ba3d0c736 --- /dev/null +++ b/packages/core/js-peer/src/js-peer/__test__/integration/smokeTest.ts @@ -0,0 +1,67 @@ +import { handleTimeout } from '../../utils.js'; +import { nodes } from '../connection.js'; +import { mkTestPeer, registerHandlersHelper } from '../util.js'; + +const smokeTest = async () => { + // arrange + const peer = mkTestPeer(); + await peer.start({ + relay: nodes[0], + }); + + const result = await new Promise((resolve, reject) => { + const script = ` + (xor + (seq + (call %init_peer_id% ("load" "relay") [] init_relay) + (seq + (call init_relay ("op" "identity") ["hello world!"] result) + (call %init_peer_id% ("callback" "callback") [result]) + ) + ) + (seq + (call init_relay ("op" "identity") []) + (call %init_peer_id% ("callback" "error") [%last_error%]) + ) + )`; + const particle = peer.internals.createNewParticle(script); + + if (particle instanceof Error) { + return reject(particle.message); + } + + registerHandlersHelper(peer, particle, { + load: { + relay: () => { + return peer.getStatus().relayPeerId; + }, + }, + callback: { + callback: (args: any) => { + const [val] = args; + resolve(val); + }, + error: (args: any) => { + const [error] = args; + reject(error); + }, + }, + }); + + peer.internals.initiateParticle(particle, handleTimeout(reject)); + }); + + await peer.stop(); + + if (result[0] !== 'hello world!') { + throw new Error('Expecting "hello wrold!" got ' + result[0]); + } +}; + +smokeTest() + .then(() => { + console.log('Test passed'); + }) + .catch((err) => { + console.error('Test failed: ', err); + }); diff --git a/packages/core/js-peer/src/js-peer/__test__/integration/srv.spec.ts.skip b/packages/core/js-peer/src/js-peer/__test__/integration/srv.spec.ts.skip new file mode 100644 index 000000000..9612413ce --- /dev/null +++ b/packages/core/js-peer/src/js-peer/__test__/integration/srv.spec.ts.skip @@ -0,0 +1,76 @@ +import * as path from 'path'; +import * as url from 'url'; +import { compileAqua, withPeer } from '../util.js'; + +const __dirname = url.fileURLToPath(new URL('.', import.meta.url)); +let aqua: any; + +describe('Srv service test suite', () => { + beforeAll(async () => { + const { services, functions } = await compileAqua(path.join(__dirname, '../data/srv.aqua')); + aqua = functions; + }); + + it('Use custom srv service, success path', async () => { + await withPeer(async (peer) => { + // arrange + const wasm = path.join(__dirname, '../data/greeting.wasm'); + + // act + const res = await aqua.happy_path(peer, { file_path: wasm }); + + // assert + expect(res).toBe('Hi, test'); + }); + }); + + it('List deployed services', async () => { + await withPeer(async (peer) => { + // arrange + const wasm = path.join(__dirname, '../data/greeting.wasm'); + + // act + const res = await aqua.list_services(peer, { file_path: wasm }); + + // assert + expect(res).toHaveLength(3); + }); + }); + + it('Correct error for removed services', async () => { + await withPeer(async (peer) => { + // arrange + const wasm = path.join(__dirname, '../data/greeting.wasm'); + + // act + const res = await aqua.service_removed(peer, { file_path: wasm }); + + // assert + expect(res).toMatch('No handler has been registered for serviceId'); + }); + }); + + it('Correct error for file not found', async () => { + await withPeer(async (peer) => { + // arrange + + // act + const res = await aqua.file_not_found(peer, {}); + + // assert + expect(res).toMatch("ENOENT: no such file or directory, open '/random/incorrect/file'"); + }); + }); + + it('Correct error for removing non existing service', async () => { + await withPeer(async (peer) => { + // arrange + + // act + const res = await aqua.removing_non_exiting(peer, {}); + + // assert + expect(res).toMatch('Service with id random_id not found'); + }); + }); +}); diff --git a/packages/fluence-js/src/__test__/unit/ast.spec.ts b/packages/core/js-peer/src/js-peer/__test__/unit/ast.spec.ts.skip similarity index 79% rename from packages/fluence-js/src/__test__/unit/ast.spec.ts rename to packages/core/js-peer/src/js-peer/__test__/unit/ast.spec.ts.skip index 4a7aa75ac..0d4b1526c 100644 --- a/packages/fluence-js/src/__test__/unit/ast.spec.ts +++ b/packages/core/js-peer/src/js-peer/__test__/unit/ast.spec.ts.skip @@ -1,16 +1,17 @@ -import { Fluence } from '../../index'; +import { mkTestPeer } from '../util.js'; + +const peer = mkTestPeer(); describe('Parse ast tests', () => { beforeAll(async () => { - await Fluence.start(); + await peer.start(); }); afterAll(async () => { - await Fluence.stop(); + await peer.stop(); }); it('Correct ast should be parsed correctly', async function () { - const peer = Fluence.getPeer(); const air = `(null)`; const res = await peer.internals.parseAst(air); @@ -21,7 +22,6 @@ describe('Parse ast tests', () => { }); it('Incorrect ast should result in corresponding error', async function () { - const peer = Fluence.getPeer(); const air = `(null`; const res = await peer.internals.parseAst(air); diff --git a/packages/core/js-peer/src/js-peer/__test__/unit/builtInHandler.spec.ts b/packages/core/js-peer/src/js-peer/__test__/unit/builtInHandler.spec.ts new file mode 100644 index 000000000..bbd6333bd --- /dev/null +++ b/packages/core/js-peer/src/js-peer/__test__/unit/builtInHandler.spec.ts @@ -0,0 +1,305 @@ +import { CallParams } from '@fluencelabs/interfaces'; +import { toUint8Array } from 'js-base64'; +import { CallServiceData } from '../../../interfaces/commonTypes.js'; +import { builtInServices } from '../../builtins/common.js'; +import { KeyPair } from '../../../keypair/index.js'; +import { Sig, defaultSigGuard } from '../../builtins/Sig.js'; +import { allowServiceFn } from '../../builtins/securityGuard.js'; + +const a10b20 = `{ + "a": 10, + "b": 20 +}`; + +const oneTwoThreeFour = `[ + 1, + 2, + 3, + 4 +]`; + +describe('Tests for default handler', () => { + test.each` + serviceId | fnName | args | retCode | result + ${'op'} | ${'identity'} | ${[]} | ${0} | ${{}} + ${'op'} | ${'identity'} | ${[1]} | ${0} | ${1} + ${'op'} | ${'identity'} | ${[1, 2]} | ${1} | ${'identity accepts up to 1 arguments, received 2 arguments'} + ${'op'} | ${'noop'} | ${[1, 2]} | ${0} | ${{}} + ${'op'} | ${'array'} | ${[1, 2, 3]} | ${0} | ${[1, 2, 3]} + ${'op'} | ${'array_length'} | ${[[1, 2, 3]]} | ${0} | ${3} + ${'op'} | ${'array_length'} | ${[]} | ${1} | ${'array_length accepts exactly one argument, found: 0'} + ${'op'} | ${'concat'} | ${[[1, 2], [3, 4], [5, 6]]} | ${0} | ${[1, 2, 3, 4, 5, 6]} + ${'op'} | ${'concat'} | ${[[1, 2]]} | ${0} | ${[1, 2]} + ${'op'} | ${'concat'} | ${[]} | ${0} | ${[]} + ${'op'} | ${'concat'} | ${[1, [1, 2], 1]} | ${1} | ${"All arguments of 'concat' must be arrays: arguments 0, 2 are not"} + ${'op'} | ${'string_to_b58'} | ${['test']} | ${0} | ${'3yZe7d'} + ${'op'} | ${'string_to_b58'} | ${['test', 1]} | ${1} | ${'string_to_b58 accepts only one string argument'} + ${'op'} | ${'string_from_b58'} | ${['3yZe7d']} | ${0} | ${'test'} + ${'op'} | ${'string_from_b58'} | ${['3yZe7d', 1]} | ${1} | ${'string_from_b58 accepts only one string argument'} + ${'op'} | ${'bytes_to_b58'} | ${[[116, 101, 115, 116]]} | ${0} | ${'3yZe7d'} + ${'op'} | ${'bytes_to_b58'} | ${[[116, 101, 115, 116], 1]} | ${1} | ${'bytes_to_b58 accepts only single argument: array of numbers'} + ${'op'} | ${'bytes_from_b58'} | ${['3yZe7d']} | ${0} | ${[116, 101, 115, 116]} + ${'op'} | ${'bytes_from_b58'} | ${['3yZe7d', 1]} | ${1} | ${'bytes_from_b58 accepts only one string argument'} + ${'op'} | ${'sha256_string'} | ${['hello, world!']} | ${0} | ${'QmVQ8pg6L1tpoWYeq6dpoWqnzZoSLCh7E96fCFXKvfKD3u'} + ${'op'} | ${'sha256_string'} | ${['hello, world!', true]} | ${0} | ${'84V7ZxLW7qKsx1Qvbd63BdGaHxUc3TfT2MBPqAXM7Wyu'} + ${'op'} | ${'sha256_string'} | ${[]} | ${1} | ${'sha256_string accepts 1-3 arguments, found: 0'} + ${'op'} | ${'concat_strings'} | ${[]} | ${0} | ${''} + ${'op'} | ${'concat_strings'} | ${['a', 'b', 'c']} | ${0} | ${'abc'} + ${'peer'} | ${'timeout'} | ${[200, []]} | ${0} | ${[]} + ${'peer'} | ${'timeout'} | ${[200, ['test']]} | ${0} | ${['test']} + ${'peer'} | ${'timeout'} | ${[]} | ${1} | ${'timeout accepts exactly two arguments: timeout duration in ms and a message string'} + ${'peer'} | ${'timeout'} | ${[200, 'test', 1]} | ${1} | ${'timeout accepts exactly two arguments: timeout duration in ms and a message string'} + ${'debug'} | ${'stringify'} | ${[]} | ${0} | ${'""'} + ${'debug'} | ${'stringify'} | ${[{ a: 10, b: 20 }]} | ${0} | ${a10b20} + ${'debug'} | ${'stringify'} | ${[1, 2, 3, 4]} | ${0} | ${oneTwoThreeFour} + ${'math'} | ${'add'} | ${[2, 2]} | ${0} | ${4} + ${'math'} | ${'add'} | ${[2]} | ${1} | ${'Expected 2 argument(s). Got 1'} + ${'math'} | ${'sub'} | ${[2, 2]} | ${0} | ${0} + ${'math'} | ${'sub'} | ${[2, 3]} | ${0} | ${-1} + ${'math'} | ${'mul'} | ${[2, 2]} | ${0} | ${4} + ${'math'} | ${'mul'} | ${[2, 0]} | ${0} | ${0} + ${'math'} | ${'mul'} | ${[2, -1]} | ${0} | ${-2} + ${'math'} | ${'fmul'} | ${[10, 0.66]} | ${0} | ${6} + ${'math'} | ${'fmul'} | ${[0.5, 0.5]} | ${0} | ${0} + ${'math'} | ${'fmul'} | ${[100.5, 0.5]} | ${0} | ${50} + ${'math'} | ${'div'} | ${[2, 2]} | ${0} | ${1} + ${'math'} | ${'div'} | ${[2, 3]} | ${0} | ${0} + ${'math'} | ${'div'} | ${[10, 5]} | ${0} | ${2} + ${'math'} | ${'rem'} | ${[10, 3]} | ${0} | ${1} + ${'math'} | ${'pow'} | ${[2, 2]} | ${0} | ${4} + ${'math'} | ${'pow'} | ${[2, 0]} | ${0} | ${1} + ${'math'} | ${'log'} | ${[2, 2]} | ${0} | ${1} + ${'math'} | ${'log'} | ${[2, 4]} | ${0} | ${2} + ${'cmp'} | ${'gt'} | ${[2, 4]} | ${0} | ${false} + ${'cmp'} | ${'gte'} | ${[2, 4]} | ${0} | ${false} + ${'cmp'} | ${'gte'} | ${[4, 2]} | ${0} | ${true} + ${'cmp'} | ${'gte'} | ${[2, 2]} | ${0} | ${true} + ${'cmp'} | ${'lt'} | ${[2, 4]} | ${0} | ${true} + ${'cmp'} | ${'lte'} | ${[2, 4]} | ${0} | ${true} + ${'cmp'} | ${'lte'} | ${[4, 2]} | ${0} | ${false} + ${'cmp'} | ${'lte'} | ${[2, 2]} | ${0} | ${true} + ${'cmp'} | ${'cmp'} | ${[2, 4]} | ${0} | ${-1} + ${'cmp'} | ${'cmp'} | ${[2, -4]} | ${0} | ${1} + ${'cmp'} | ${'cmp'} | ${[2, 2]} | ${0} | ${0} + ${'array'} | ${'sum'} | ${[[1, 2, 3]]} | ${0} | ${6} + ${'array'} | ${'dedup'} | ${[['a', 'a', 'b', 'c', 'a', 'b', 'c']]} | ${0} | ${['a', 'b', 'c']} + ${'array'} | ${'intersect'} | ${[['a', 'b', 'c'], ['c', 'b', 'd']]} | ${0} | ${['b', 'c']} + ${'array'} | ${'diff'} | ${[['a', 'b', 'c'], ['c', 'b', 'd']]} | ${0} | ${['a']} + ${'array'} | ${'sdiff'} | ${[['a', 'b', 'c'], ['c', 'b', 'd']]} | ${0} | ${['a', 'd']} + ${'json'} | ${'obj'} | ${['a', 10, 'b', 'string', 'c', null]} | ${0} | ${{ a: 10, b: 'string', c: null }} + ${'json'} | ${'obj'} | ${['a', 10, 'b', 'string', 'c']} | ${1} | ${'Expected even number of argument(s). Got 5'} + ${'json'} | ${'obj'} | ${[]} | ${0} | ${{}} + ${'json'} | ${'put'} | ${[{}, 'a', 10]} | ${0} | ${{ a: 10 }} + ${'json'} | ${'put'} | ${[{ b: 11 }, 'a', 10]} | ${0} | ${{ a: 10, b: 11 }} + ${'json'} | ${'put'} | ${['a', 'a', 11]} | ${1} | ${'Argument 0 expected to be of type object, Got string'} + ${'json'} | ${'put'} | ${[{}, 'a', 10, 'b', 20]} | ${1} | ${'Expected 3 argument(s). Got 5'} + ${'json'} | ${'put'} | ${[{}]} | ${1} | ${'Expected 3 argument(s). Got 1'} + ${'json'} | ${'puts'} | ${[{}, 'a', 10]} | ${0} | ${{ a: 10 }} + ${'json'} | ${'puts'} | ${[{ b: 11 }, 'a', 10]} | ${0} | ${{ a: 10, b: 11 }} + ${'json'} | ${'puts'} | ${[{}, 'a', 10, 'b', 'string', 'c', null]} | ${0} | ${{ a: 10, b: 'string', c: null }} + ${'json'} | ${'puts'} | ${[{ x: 'text' }, 'a', 10, 'b', 'string']} | ${0} | ${{ a: 10, b: 'string', x: 'text' }} + ${'json'} | ${'puts'} | ${[{}]} | ${1} | ${'Expected more than 3 argument(s). Got 1'} + ${'json'} | ${'puts'} | ${['a', 'a', 11]} | ${1} | ${'Argument 0 expected to be of type object, Got string'} + ${'json'} | ${'stringify'} | ${[{ a: 10, b: 'string', c: null }]} | ${0} | ${'{"a":10,"b":"string","c":null}'} + ${'json'} | ${'stringify'} | ${[1]} | ${1} | ${'Argument 0 expected to be of type object, Got number'} + ${'json'} | ${'parse'} | ${['{"a":10,"b":"string","c":null}']} | ${0} | ${{ a: 10, b: 'string', c: null }} + ${'json'} | ${'parse'} | ${['incorrect']} | ${1} | ${'Unexpected token i in JSON at position 0'} + ${'json'} | ${'parse'} | ${[10]} | ${1} | ${'Argument 0 expected to be of type string, Got number'} + `( + // + '$fnName with $args expected retcode: $retCode and result: $result', + async ({ serviceId, fnName, args, retCode, result }) => { + // arrange + const req: CallServiceData = { + serviceId: serviceId, + fnName: fnName, + args: args, + tetraplets: [], + particleContext: { + particleId: 'some', + initPeerId: 'init peer id', + timestamp: 595951200, + ttl: 595961200, + signature: 'sig', + }, + }; + + // act + const fn = builtInServices[req.serviceId][req.fnName]; + const res = await fn(req); + + // assert + expect(res).toMatchObject({ + retCode: retCode, + result: result, + }); + }, + ); + + it('should return correct error message for identiy service', async () => { + // arrange + const req: CallServiceData = { + serviceId: 'peer', + fnName: 'identify', + args: [], + tetraplets: [], + particleContext: { + particleId: 'some', + initPeerId: 'init peer id', + timestamp: 595951200, + ttl: 595961200, + signature: 'sig', + }, + }; + + // act + const fn = builtInServices[req.serviceId][req.fnName]; + const res = await fn(req); + + // assert + expect(res).toMatchObject({ + retCode: 0, + result: { + external_addresses: [], + node_version: expect.stringContaining('js'), + air_version: expect.stringContaining('js'), + }, + }); + }); +}); + +const key = '+cmeYlZKj+MfSa9dpHV+BmLPm6wq4inGlsPlQ1GvtPk='; + +const context = (async () => { + const keyBytes = toUint8Array(key); + const kp = await KeyPair.fromEd25519SK(keyBytes); + const res = { + peerKeyPair: kp, + peerId: kp.getPeerId(), + }; + return res; +})(); + +const testData = [1, 2, 3, 4, 5, 6, 7, 9, 10]; + +// signature produced by KeyPair created from key above (`key` variable) +const testDataSig = [ + 224, 104, 245, 206, 140, 248, 27, 72, 68, 133, 111, 10, 164, 197, 242, 132, 107, 77, 224, 67, 99, 106, 76, 29, 144, + 121, 122, 169, 36, 173, 58, 80, 170, 102, 137, 253, 157, 247, 168, 87, 162, 223, 188, 214, 203, 220, 52, 246, 29, + 86, 77, 71, 224, 248, 16, 213, 254, 75, 78, 239, 243, 222, 241, 15, +]; + +// signature produced by KeyPair created from some random KeyPair +const testDataWrongSig = [ + 116, 247, 189, 118, 236, 53, 147, 123, 219, 75, 176, 105, 101, 108, 233, 137, 97, 14, 146, 132, 252, 70, 51, 153, + 237, 167, 156, 150, 36, 90, 229, 108, 166, 231, 255, 137, 8, 246, 125, 0, 213, 150, 83, 196, 237, 221, 131, 159, + 157, 159, 25, 109, 95, 160, 181, 65, 254, 238, 47, 156, 240, 151, 58, 14, +]; + +const makeTetraplet = (initPeerId: string, serviceId?: string, fnName?: string): CallParams<'data'> => { + return { + initPeerId: initPeerId, + tetraplets: { + data: [ + { + function_name: fnName, + service_id: serviceId, + }, + ], + }, + } as any; +}; + +describe('Sig service tests', () => { + it('sig.sign should create the correct signature', async () => { + const ctx = await context; + const sig = new Sig(ctx.peerKeyPair); + + const res = await sig.sign(testData, makeTetraplet(ctx.peerId)); + + expect(res.success).toBe(true); + expect(res.signature).toStrictEqual(testDataSig); + }); + + it('sig.verify should return true for the correct signature', async () => { + const ctx = await context; + const sig = new Sig(ctx.peerKeyPair); + + const res = await sig.verify(testDataSig, testData); + + expect(res).toBe(true); + }); + + it('sig.verify should return false for the incorrect signature', async () => { + const ctx = await context; + const sig = new Sig(ctx.peerKeyPair); + + const res = await sig.verify(testDataWrongSig, testData); + + expect(res).toBe(false); + }); + + it('sign-verify call chain should work', async () => { + const ctx = await context; + const sig = new Sig(ctx.peerKeyPair); + + const signature = await sig.sign(testData, makeTetraplet(ctx.peerId)); + const res = await sig.verify(signature.signature as number[], testData); + + expect(res).toBe(true); + }); + + it('sig.sign with defaultSigGuard should work for correct callParams', async () => { + const ctx = await context; + const sig = new Sig(ctx.peerKeyPair); + sig.securityGuard = defaultSigGuard(ctx.peerId); + + const signature = await sig.sign(testData, makeTetraplet(ctx.peerId, 'registry', 'get_route_bytes')); + + await expect(signature).toBeDefined(); + }); + + it('sig.sign with defaultSigGuard should not allow particles initiated from incorrect service', async () => { + const ctx = await context; + const sig = new Sig(ctx.peerKeyPair); + sig.securityGuard = defaultSigGuard(ctx.peerId); + + const res = await sig.sign(testData, makeTetraplet(ctx.peerId, 'other_service', 'other_fn')); + + await expect(res.success).toBe(false); + await expect(res.error).toBe('Security guard validation failed'); + }); + + it('sig.sign with defaultSigGuard should not allow particles initiated from other peers', async () => { + const ctx = await context; + const sig = new Sig(ctx.peerKeyPair); + sig.securityGuard = defaultSigGuard(ctx.peerId); + + const res = await sig.sign( + testData, + makeTetraplet((await KeyPair.randomEd25519()).getPeerId(), 'registry', 'get_key_bytes'), + ); + + await expect(res.success).toBe(false); + await expect(res.error).toBe('Security guard validation failed'); + }); + + it('changing securityGuard should work', async () => { + const ctx = await context; + const sig = new Sig(ctx.peerKeyPair); + sig.securityGuard = allowServiceFn('test', 'test'); + + const successful1 = await sig.sign(testData, makeTetraplet(ctx.peerId, 'test', 'test')); + const unSuccessful1 = await sig.sign(testData, makeTetraplet(ctx.peerId, 'wrong', 'wrong')); + + sig.securityGuard = allowServiceFn('wrong', 'wrong'); + + const successful2 = await sig.sign(testData, makeTetraplet(ctx.peerId, 'wrong', 'wrong')); + const unSuccessful2 = await sig.sign(testData, makeTetraplet(ctx.peerId, 'test', 'test')); + + expect(successful1.success).toBe(true); + expect(successful2.success).toBe(true); + expect(unSuccessful1.success).toBe(false); + expect(unSuccessful2.success).toBe(false); + }); +}); diff --git a/packages/fluence-js/src/__test__/unit/ephemeral.spec.ts b/packages/core/js-peer/src/js-peer/__test__/unit/ephemeral.spec.ts.skip similarity index 86% rename from packages/fluence-js/src/__test__/unit/ephemeral.spec.ts rename to packages/core/js-peer/src/js-peer/__test__/unit/ephemeral.spec.ts.skip index 89b16ef4e..9005b6aae 100644 --- a/packages/fluence-js/src/__test__/unit/ephemeral.spec.ts +++ b/packages/core/js-peer/src/js-peer/__test__/unit/ephemeral.spec.ts.skip @@ -1,18 +1,20 @@ import { KeyPair } from '@fluencelabs/keypair'; -import { EphemeralNetwork, defaultConfig } from '../../internal/ephemeral'; -import { FluencePeer } from '../../index'; -import { ResultCodes } from '../../internal/commonTypes'; +import { EphemeralNetwork, defaultConfig } from '../../ephemeral'; +import { ResultCodes } from '../../commonTypes'; +import { FluencePeer } from '../../FluencePeer'; +import { mkTestPeer } from '../util'; let en: EphemeralNetwork; let peer: FluencePeer; -describe('Ephemeral networks tests', () => { +// TODO: jest tests hang when running this test. Fix it (DXJ-219) +describe.skip('Ephemeral networks tests', () => { beforeEach(async () => { en = new EphemeralNetwork(defaultConfig); await en.up(); const relay = defaultConfig.peers[0].peerId; - peer = new FluencePeer(); + peer = mkTestPeer(); await peer.init({ KeyPair: await KeyPair.randomEd25519(), }); diff --git a/packages/core/js-peer/src/js-peer/__test__/util.ts b/packages/core/js-peer/src/js-peer/__test__/util.ts new file mode 100644 index 000000000..09a8b2b60 --- /dev/null +++ b/packages/core/js-peer/src/js-peer/__test__/util.ts @@ -0,0 +1,74 @@ +import * as api from '@fluencelabs/aqua-api/aqua-api.js'; + +import { promises as fs } from 'fs'; +import { FluencePeer, PeerConfig } from '../FluencePeer.js'; +import { Particle } from '../Particle.js'; +import { MakeServiceCall } from '../utils.js'; +import { avmModuleLoader, controlModuleLoader } from '../utilsForNode.js'; +import { ServiceDef } from '@fluencelabs/interfaces'; +import { callFunctionImpl } from '../../compilerSupport/callFunction.js'; + +import { marineLogFunction } from '../utils.js'; +import { MarineBackgroundRunner } from '../../marine/worker/index.js'; +import { MarineBasedAvmRunner } from '../avm.js'; +import { nodes } from './connection.js'; +import { WorkerLoaderFromFs } from '../../marine/deps-loader/node.js'; + +export const registerHandlersHelper = ( + peer: FluencePeer, + particle: Particle, + handlers: Record>, +) => { + Object.entries(handlers).forEach(([serviceId, service]) => { + Object.entries(service).forEach(([fnName, fn]) => { + peer.internals.regHandler.forParticle(particle.id, serviceId, fnName, MakeServiceCall(fn)); + }); + }); +}; + +export type CompiledFnCall = (peer: FluencePeer, args: { [key: string]: any }) => Promise; +export type CompiledFile = { + functions: { [key: string]: CompiledFnCall }; + services: { [key: string]: ServiceDef }; +}; + +export const compileAqua = async (aquaFile: string): Promise => { + await fs.access(aquaFile); + + const compilationResult = await api.Aqua.compile(new api.Path(aquaFile), [], undefined); + + const functions = Object.entries(compilationResult.functions) + .map(([name, fnInfo]) => { + const callFn = (peer: FluencePeer, args: { [key: string]: any }) => { + return callFunctionImpl(fnInfo.funcDef, fnInfo.script, {}, peer, args); + }; + return { [name]: callFn }; + }) + .reduce((agg, obj) => { + return { ...agg, ...obj }; + }, {}); + + return { functions, services: compilationResult.services }; +}; + +export const mkTestPeer = () => { + const workerLoader = new WorkerLoaderFromFs('../../marine/worker-script'); + + const marine = new MarineBackgroundRunner(workerLoader, controlModuleLoader, marineLogFunction); + const avm = new MarineBasedAvmRunner(marine, avmModuleLoader, undefined); + return new FluencePeer(marine, avm); +}; + +export const withPeer = async (action: (p: FluencePeer) => Promise, config?: PeerConfig) => { + const p = mkTestPeer(); + try { + await p.start(config); + await action(p); + } finally { + await p!.stop(); + } +}; + +export const withConnectedPeer = async (action: (p: FluencePeer) => Promise, config?: PeerConfig) => { + return withPeer(action, { relay: nodes[0] }); +}; diff --git a/packages/core/js-peer/src/js-peer/_aqua/node-utils.ts b/packages/core/js-peer/src/js-peer/_aqua/node-utils.ts new file mode 100644 index 000000000..a0dfe971d --- /dev/null +++ b/packages/core/js-peer/src/js-peer/_aqua/node-utils.ts @@ -0,0 +1,81 @@ +/** + * + * This file is auto-generated. Do not edit manually: changes may be erased. + * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. + * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues + * Aqua version: 0.7.7-362 + * + */ +import { CallParams } from '@fluencelabs/interfaces'; +import { registerServiceImpl } from '../../compilerSupport/registerService.js'; +import { FluencePeer } from '../FluencePeer.js'; + +// Services + +export interface NodeUtilsDef { + read_file: ( + path: string, + callParams: CallParams<'path'>, + ) => + | { content: string | null; error: string | null; success: boolean } + | Promise<{ content: string | null; error: string | null; success: boolean }>; +} + +export function registerNodeUtils(peer: FluencePeer, serviceId: string, service: any) { + registerServiceImpl( + peer, + { + defaultServiceId: 'node_utils', + functions: { + tag: 'labeledProduct', + fields: { + read_file: { + tag: 'arrow', + domain: { + tag: 'labeledProduct', + fields: { + path: { + tag: 'scalar', + name: 'string', + }, + }, + }, + codomain: { + tag: 'unlabeledProduct', + items: [ + { + tag: 'struct', + name: 'ReadFileResult', + fields: { + content: { + tag: 'option', + type: { + tag: 'scalar', + name: 'string', + }, + }, + error: { + tag: 'option', + type: { + tag: 'scalar', + name: 'string', + }, + }, + success: { + tag: 'scalar', + name: 'bool', + }, + }, + }, + ], + }, + }, + }, + }, + }, + serviceId, + service, + ); +} + +// Functions diff --git a/packages/core/js-peer/src/js-peer/_aqua/services.ts b/packages/core/js-peer/src/js-peer/_aqua/services.ts new file mode 100644 index 000000000..1f797cd96 --- /dev/null +++ b/packages/core/js-peer/src/js-peer/_aqua/services.ts @@ -0,0 +1,139 @@ +/** + * + * This file is auto-generated. Do not edit manually: changes may be erased. + * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. + * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues + * Aqua version: 0.7.7-362 + * + */ +import { CallParams } from '@fluencelabs/interfaces'; +import { registerServiceImpl } from '../../compilerSupport/registerService.js'; +import { FluencePeer } from '../FluencePeer.js'; + +// Services + +export interface SigDef { + get_peer_id: (callParams: CallParams) => string | Promise; + sign: ( + data: number[], + callParams: CallParams<'data'>, + ) => + | { error: string | null; signature: number[] | null; success: boolean } + | Promise<{ error: string | null; signature: number[] | null; success: boolean }>; + verify: ( + signature: number[], + data: number[], + callParams: CallParams<'signature' | 'data'>, + ) => boolean | Promise; +} + +export function registerSig(peer: FluencePeer, serviceId: string, service: any) { + registerServiceImpl( + peer, + { + defaultServiceId: 'sig', + functions: { + tag: 'labeledProduct', + fields: { + get_peer_id: { + tag: 'arrow', + domain: { + tag: 'nil', + }, + codomain: { + tag: 'unlabeledProduct', + items: [ + { + tag: 'scalar', + name: 'string', + }, + ], + }, + }, + sign: { + tag: 'arrow', + domain: { + tag: 'labeledProduct', + fields: { + data: { + tag: 'array', + type: { + tag: 'scalar', + name: 'u8', + }, + }, + }, + }, + codomain: { + tag: 'unlabeledProduct', + items: [ + { + tag: 'struct', + name: 'SignResult', + fields: { + error: { + tag: 'option', + type: { + tag: 'scalar', + name: 'string', + }, + }, + signature: { + tag: 'option', + type: { + tag: 'array', + type: { + tag: 'scalar', + name: 'u8', + }, + }, + }, + success: { + tag: 'scalar', + name: 'bool', + }, + }, + }, + ], + }, + }, + verify: { + tag: 'arrow', + domain: { + tag: 'labeledProduct', + fields: { + signature: { + tag: 'array', + type: { + tag: 'scalar', + name: 'u8', + }, + }, + data: { + tag: 'array', + type: { + tag: 'scalar', + name: 'u8', + }, + }, + }, + }, + codomain: { + tag: 'unlabeledProduct', + items: [ + { + tag: 'scalar', + name: 'bool', + }, + ], + }, + }, + }, + }, + }, + serviceId, + service, + ); +} + +// Functions diff --git a/packages/core/js-peer/src/js-peer/_aqua/single-module-srv.ts b/packages/core/js-peer/src/js-peer/_aqua/single-module-srv.ts new file mode 100644 index 000000000..e5eb69814 --- /dev/null +++ b/packages/core/js-peer/src/js-peer/_aqua/single-module-srv.ts @@ -0,0 +1,138 @@ +/** + * + * This file is auto-generated. Do not edit manually: changes may be erased. + * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. + * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues + * Aqua version: 0.7.7-362 + * + */ +import { CallParams } from '@fluencelabs/interfaces'; +import { registerServiceImpl } from '../../compilerSupport/registerService.js'; +import { FluencePeer } from '../FluencePeer.js'; + +// Services + +export interface SrvDef { + create: ( + wasm_b64_content: string, + callParams: CallParams<'wasm_b64_content'>, + ) => + | { error: string | null; service_id: string | null; success: boolean } + | Promise<{ error: string | null; service_id: string | null; success: boolean }>; + list: (callParams: CallParams) => string[] | Promise; + remove: ( + service_id: string, + callParams: CallParams<'service_id'>, + ) => { error: string | null; success: boolean } | Promise<{ error: string | null; success: boolean }>; +} + +export function registerSrv(peer: FluencePeer, serviceId: string, service: any) { + registerServiceImpl( + peer, + { + defaultServiceId: 'single_module_srv', + functions: { + tag: 'labeledProduct', + fields: { + create: { + tag: 'arrow', + domain: { + tag: 'labeledProduct', + fields: { + wasm_b64_content: { + tag: 'scalar', + name: 'string', + }, + }, + }, + codomain: { + tag: 'unlabeledProduct', + items: [ + { + tag: 'struct', + name: 'ServiceCreationResult', + fields: { + error: { + tag: 'option', + type: { + tag: 'scalar', + name: 'string', + }, + }, + service_id: { + tag: 'option', + type: { + tag: 'scalar', + name: 'string', + }, + }, + success: { + tag: 'scalar', + name: 'bool', + }, + }, + }, + ], + }, + }, + list: { + tag: 'arrow', + domain: { + tag: 'nil', + }, + codomain: { + tag: 'unlabeledProduct', + items: [ + { + tag: 'array', + type: { + tag: 'scalar', + name: 'string', + }, + }, + ], + }, + }, + remove: { + tag: 'arrow', + domain: { + tag: 'labeledProduct', + fields: { + service_id: { + tag: 'scalar', + name: 'string', + }, + }, + }, + codomain: { + tag: 'unlabeledProduct', + items: [ + { + tag: 'struct', + name: 'RemoveResult', + fields: { + error: { + tag: 'option', + type: { + tag: 'scalar', + name: 'string', + }, + }, + success: { + tag: 'scalar', + name: 'bool', + }, + }, + }, + ], + }, + }, + }, + }, + }, + serviceId, + service, + ); +} + +// Functions diff --git a/packages/core/js-peer/src/js-peer/avm.ts b/packages/core/js-peer/src/js-peer/avm.ts new file mode 100644 index 000000000..1cc772827 --- /dev/null +++ b/packages/core/js-peer/src/js-peer/avm.ts @@ -0,0 +1,36 @@ +import type { CallResultsArray, InterpreterResult, RunParameters } from '@fluencelabs/avm'; +import { deserializeAvmResult, serializeAvmArgs } from '@fluencelabs/avm'; +import type { LogLevel } from '@fluencelabs/marine-js/dist/types'; +import type { IMarine, IAvmRunner, IWasmLoader } from '../interfaces/index.js'; + +export class MarineBasedAvmRunner implements IAvmRunner { + constructor(private marine: IMarine, private avmWasmLoader: IWasmLoader, private logLevel: LogLevel | undefined) {} + + async run( + runParams: RunParameters, + air: string, + prevData: Uint8Array, + data: Uint8Array, + callResults: CallResultsArray, + ): Promise { + const args = serializeAvmArgs(runParams, air, prevData, data, callResults); + + let avmCallResult: InterpreterResult | Error; + try { + const res = await this.marine.callService('avm', 'invoke', args, undefined); + avmCallResult = deserializeAvmResult(res); + } catch (e) { + avmCallResult = e instanceof Error ? e : new Error((e as any).toString()); + } + + return avmCallResult; + } + + async start(): Promise { + await this.marine.start(); + await this.avmWasmLoader.start(); + await this.marine.createService(this.avmWasmLoader.getValue(), 'avm', this.logLevel); + } + + async stop(): Promise {} +} diff --git a/packages/fluence-js/src/internal/builtins/Sig.ts b/packages/core/js-peer/src/js-peer/builtins/Sig.ts similarity index 90% rename from packages/fluence-js/src/internal/builtins/Sig.ts rename to packages/core/js-peer/src/js-peer/builtins/Sig.ts index dd2a99e8e..b3a90c8be 100644 --- a/packages/fluence-js/src/internal/builtins/Sig.ts +++ b/packages/core/js-peer/src/js-peer/builtins/Sig.ts @@ -1,7 +1,7 @@ -import { CallParams, PeerIdB58 } from '../commonTypes'; -import { KeyPair } from '@fluencelabs/keypair'; -import { SigDef } from '../_aqua/services'; -import { allowOnlyParticleOriginatedAt, allowServiceFn, and, or, SecurityGuard } from './securityGuard'; +import { CallParams, PeerIdB58 } from '@fluencelabs/interfaces'; +import { KeyPair } from '../../keypair/index.js'; +import { SigDef } from '../_aqua/services.js'; +import { allowOnlyParticleOriginatedAt, allowServiceFn, and, or, SecurityGuard } from './securityGuard.js'; export const defaultSigGuard = (peerId: PeerIdB58) => { return and<'data'>( diff --git a/packages/fluence-js/src/internal/builtins/SingleModuleSrv.ts b/packages/core/js-peer/src/js-peer/builtins/SingleModuleSrv.ts similarity index 74% rename from packages/fluence-js/src/internal/builtins/SingleModuleSrv.ts rename to packages/core/js-peer/src/js-peer/builtins/SingleModuleSrv.ts index c817bfe02..1eccb7dc0 100644 --- a/packages/fluence-js/src/internal/builtins/SingleModuleSrv.ts +++ b/packages/core/js-peer/src/js-peer/builtins/SingleModuleSrv.ts @@ -1,10 +1,10 @@ import { v4 as uuidv4 } from 'uuid'; -import { SrvDef } from '../_aqua/single-module-srv'; -import { NodeUtilsDef } from '../_aqua/node-utils'; -import { FluencePeer } from '../FluencePeer'; -import { isNode } from 'browser-or-node'; -import { CallParams } from '../commonTypes'; -import { allowOnlyParticleOriginatedAt, SecurityGuard } from './securityGuard'; +import { SrvDef } from '../_aqua/single-module-srv.js'; +import { NodeUtilsDef } from '../_aqua/node-utils.js'; +import { FluencePeer } from '../FluencePeer.js'; +import { CallParams } from '@fluencelabs/interfaces'; +import { Buffer } from 'buffer'; +import { allowOnlyParticleOriginatedAt, SecurityGuard } from './securityGuard.js'; export const defaultGuard = (peer: FluencePeer) => { return allowOnlyParticleOriginatedAt(peer.getStatus().peerId!); @@ -13,9 +13,12 @@ export const defaultGuard = (peer: FluencePeer) => { export class Srv implements SrvDef { private services: Set = new Set(); - constructor(private peer: FluencePeer) {} + constructor(private peer: FluencePeer) { + this.securityGuard_create = defaultGuard(this.peer); + this.securityGuard_remove = defaultGuard(this.peer); + } - securityGuard_create: SecurityGuard<'wasm_b64_content'> = defaultGuard(this.peer); + securityGuard_create: SecurityGuard<'wasm_b64_content'>; async create(wasm_b64_content: string, callParams: CallParams<'wasm_b64_content'>) { if (!this.securityGuard_create(callParams)) { @@ -49,7 +52,7 @@ export class Srv implements SrvDef { } } - securityGuard_remove: SecurityGuard<'service_id'> = defaultGuard(this.peer); + securityGuard_remove: SecurityGuard<'service_id'>; remove(service_id: string, callParams: CallParams<'service_id'>) { if (!this.securityGuard_remove(callParams)) { @@ -82,18 +85,21 @@ export class Srv implements SrvDef { } export class NodeUtils implements NodeUtilsDef { - constructor(private peer: FluencePeer) {} + constructor(private peer: FluencePeer) { + this.securityGuard_readFile = defaultGuard(this.peer); + } - securityGuard_readFile: SecurityGuard<'path'> = defaultGuard(this.peer); + securityGuard_readFile: SecurityGuard<'path'>; async read_file(path: string, callParams: CallParams<'path'>) { - if (!isNode) { - return { - success: false, - error: 'read_file is only supported in node.js', - content: null, - }; - } + // TODO: split node-only and universal services into different client packages + // if (!isNode) { + // return { + // success: false, + // error: 'read_file is only supported in node.js', + // content: null, + // }; + // } if (!this.securityGuard_readFile(callParams)) { return { diff --git a/packages/fluence-js/src/internal/builtins/common.ts b/packages/core/js-peer/src/js-peer/builtins/common.ts similarity index 96% rename from packages/fluence-js/src/internal/builtins/common.ts rename to packages/core/js-peer/src/js-peer/builtins/common.ts index 0a0cd8af1..8be42d7e6 100644 --- a/packages/fluence-js/src/internal/builtins/common.ts +++ b/packages/core/js-peer/src/js-peer/builtins/common.ts @@ -14,13 +14,17 @@ * limitations under the License. */ -import { encode, decode } from 'bs58'; +import * as bs58 from 'bs58'; + import { sha256 } from 'multiformats/hashes/sha2'; import { CallServiceResult } from '@fluencelabs/avm'; -import { CallServiceData, GenericCallServiceHandler, ResultCodes } from '../commonTypes'; -import { jsonify } from '../utils'; -import Buffer from '../Buffer'; +import { GenericCallServiceHandler, ResultCodes } from '../../interfaces/commonTypes.js'; +import { jsonify } from '../utils.js'; +import { Buffer } from 'buffer'; + +//@ts-ignore +const { encode, decode } = bs58.default; const success = (result: any): CallServiceResult => { return { @@ -501,7 +505,7 @@ export const builtInServices: Record { export const isObject = (unknown: unknown): unknown is object => { return unknown !== null && typeof unknown === 'object'; }; - diff --git a/packages/fluence-js/src/internal/builtins/securityGuard.ts b/packages/core/js-peer/src/js-peer/builtins/securityGuard.ts similarity index 96% rename from packages/fluence-js/src/internal/builtins/securityGuard.ts rename to packages/core/js-peer/src/js-peer/builtins/securityGuard.ts index a8d7c7721..0bc7e7623 100644 --- a/packages/fluence-js/src/internal/builtins/securityGuard.ts +++ b/packages/core/js-peer/src/js-peer/builtins/securityGuard.ts @@ -1,5 +1,5 @@ import { SecurityTetraplet } from '@fluencelabs/avm'; -import { CallParams, PeerIdB58 } from '../commonTypes'; +import { CallParams, PeerIdB58 } from '@fluencelabs/interfaces'; type ArgName = string | null; diff --git a/packages/fluence-js/src/internal/ephemeral.ts b/packages/core/js-peer/src/js-peer/ephemeral.ts similarity index 89% rename from packages/fluence-js/src/internal/ephemeral.ts rename to packages/core/js-peer/src/js-peer/ephemeral.ts index ed6a4d857..1488dbd98 100644 --- a/packages/fluence-js/src/internal/ephemeral.ts +++ b/packages/core/js-peer/src/js-peer/ephemeral.ts @@ -1,9 +1,14 @@ -import { FluenceConnection, ParticleHandler } from '@fluencelabs/interfaces'; -import { keyPairFromBase64Sk } from '@fluencelabs/keypair'; +import { PeerIdB58 } from '@fluencelabs/interfaces'; +import { FluenceConnection, ParticleHandler } from '../interfaces/index.js'; +import { fromBase64Sk } from '../keypair/index.js'; +import { FluencePeer } from './FluencePeer.js'; +import { MarineBackgroundRunner } from '../marine/worker/index.js'; +import { avmModuleLoader, controlModuleLoader } from './utilsForNode'; +import { marineLogFunction } from './utils'; +import { MarineBasedAvmRunner } from './avm'; -import { PeerIdB58 } from './commonTypes'; -import { FluencePeer } from '../index'; import log from 'loglevel'; +import { WorkerLoaderFromFs } from '../marine/deps-loader/node.js'; interface EphemeralConfig { peers: Array<{ @@ -120,19 +125,22 @@ export class EphemeralNetwork { async up(): Promise { log.debug('Starting ephemeral network up...'); const allPeerIds = this.config.peers.map((x) => x.peerId); + // shared worker for all the peers + const workerLoader = new WorkerLoaderFromFs('../../marine/worker-script'); + const promises = this.config.peers.map(async (x) => { - const peer = new FluencePeer(); + const logLevel = undefined; + const marine = new MarineBackgroundRunner(workerLoader, controlModuleLoader, marineLogFunction); + const avm = new MarineBasedAvmRunner(marine, avmModuleLoader, logLevel); + const peer = new FluencePeer(marine, avm); const sendParticle = async (nextPeerIds: string[], particle: string): Promise => { this._send(peer.getStatus().peerId!, nextPeerIds, particle); }; - const kp = await keyPairFromBase64Sk(x.sk); + const kp = await fromBase64Sk(x.sk); if (kp.getPeerId() !== x.peerId) { throw new Error(`Invalid config: peer id ${x.peerId} does not match the secret key ${x.sk}`); } - - await peer.init({ - KeyPair: kp, - }); + await peer.init({}, kp); let handler: ParticleHandler | null = null; const connectionCtor = class extends FluenceConnection { @@ -189,7 +197,6 @@ export class EphemeralNetwork { if (relayPeer === undefined) { throw new Error(`Relay with peer Id: ${relay} has not been found in ephemeral network`); } - const connectionCtor = class extends FluenceConnection { relayPeerId = relay; @@ -210,13 +217,11 @@ export class EphemeralNetwork { relayPeer.connections.delete(peerId); me._peers.delete(peerId); } - async sendParticle(nextPeerIds: string[], particle: string): Promise { const peerId = peer.getStatus().peerId!; me._send(peerId, nextPeerIds, particle); } }; - return new connectionCtor(); } diff --git a/packages/fluence-js/src/internal/utils.ts b/packages/core/js-peer/src/js-peer/utils.ts similarity index 79% rename from packages/fluence-js/src/internal/utils.ts rename to packages/core/js-peer/src/js-peer/utils.ts index e0adef2b8..6e5bca50b 100644 --- a/packages/fluence-js/src/internal/utils.ts +++ b/packages/core/js-peer/src/js-peer/utils.ts @@ -13,16 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import 'buffer'; import log from 'loglevel'; -import platform from 'platform'; -import { LogLevel } from '@fluencelabs/avm'; -import { CallServiceData, CallServiceResult, CallServiceResultType, ResultCodes } from './commonTypes'; -import { FluencePeer } from './FluencePeer'; -import { ParticleExecutionStage } from './Particle'; -import Buffer from './Buffer'; +import { Buffer } from 'buffer'; +import { CallServiceData, CallServiceResult, CallServiceResultType, ResultCodes } from '../interfaces/commonTypes.js'; +import { FluencePeer } from './FluencePeer.js'; +import { ParticleExecutionStage } from './Particle.js'; +import { LogFunction } from '@fluencelabs/marine-js/dist/types'; export const MakeServiceCall = (fn: (args: any[]) => CallServiceResultType) => @@ -151,29 +149,6 @@ export function jsonify(obj: unknown) { return JSON.stringify(obj, null, 4); } -export function throwIfNotSupported() { - if (platform.name === 'Node.js' && platform.version) { - const version = platform.version.split('.').map(Number); - const major = version[0]; - if (major < 16) { - throw new Error( - 'FluenceJS requires node.js version >= "16.x"; Detected ' + - platform.description + - ' Please update node.js to version 16 or higher.\nYou can use https://nvm.sh utility to update node.js version: "nvm install 17 && nvm use 17 && nvm alias default 17"', - ); - } - } -} - -/** - * Enum representing the log level used in Aqua VM. - * Possible values: 'info', 'trace', 'debug', 'info', 'warn', 'error', 'off'; - */ -export type MarineLoglevel = LogLevel; - -export const marineLogLevelToEnvs = (marineLogLevel: MarineLoglevel | undefined) => - marineLogLevel ? { WASM_LOG: marineLogLevel } : undefined; - export const isString = (x: unknown): x is string => { return x !== null && typeof x === 'string'; }; @@ -185,3 +160,29 @@ export class ServiceError extends Error { Object.setPrototypeOf(this, ServiceError.prototype); } } + +export const marineLogFunction: LogFunction = (message) => { + const str = `[marine service "${message.service}"]: ${message.message}`; + + const nodeProcess = (globalThis as any).process ? (globalThis as any).process : undefined; + if (nodeProcess && nodeProcess.stderr) { + nodeProcess.stderr.write(str); + return; + } + + switch (message.level) { + case 'warn': + console.warn(str); + break; + + case 'error': + console.error(str); + break; + + case 'debug': + case 'trace': + case 'info': + console.log(str); + break; + } +}; diff --git a/packages/core/js-peer/src/js-peer/utilsForNode.ts b/packages/core/js-peer/src/js-peer/utilsForNode.ts new file mode 100644 index 000000000..22b3018fa --- /dev/null +++ b/packages/core/js-peer/src/js-peer/utilsForNode.ts @@ -0,0 +1,5 @@ +import { WorkerLoaderFromFs, WasmLoaderFromFs, WasmLoaderFromNpm } from '../marine/deps-loader/node.js'; + +// TODO!: after moving to ESM loaders stopped working. Should be fixed in scope of DXJ-194 +export const controlModuleLoader = new WasmLoaderFromNpm('@fluencelabs/marine-js', 'marine-js.wasm'); +export const avmModuleLoader = new WasmLoaderFromNpm('@fluencelabs/avm', 'avm.wasm'); diff --git a/packages/core/js-peer/src/keypair/__test__/KeyPair.spec.ts b/packages/core/js-peer/src/keypair/__test__/KeyPair.spec.ts new file mode 100644 index 000000000..d63aaeecc --- /dev/null +++ b/packages/core/js-peer/src/keypair/__test__/KeyPair.spec.ts @@ -0,0 +1,94 @@ +import { toUint8Array } from 'js-base64'; +import * as bs58 from 'bs58'; +import { KeyPair } from '../index.js'; + +// @ts-ignore +const { decode } = bs58.default; + +const key = '+cmeYlZKj+MfSa9dpHV+BmLPm6wq4inGlsPlQ1GvtPk='; +const keyBytes = toUint8Array(key); + +const testData = Uint8Array.from([1, 2, 3, 4, 5, 6, 7, 9, 10]); + +const testDataSig = Uint8Array.from([ + 224, 104, 245, 206, 140, 248, 27, 72, 68, 133, 111, 10, 164, 197, 242, 132, 107, 77, 224, 67, 99, 106, 76, 29, 144, + 121, 122, 169, 36, 173, 58, 80, 170, 102, 137, 253, 157, 247, 168, 87, 162, 223, 188, 214, 203, 220, 52, 246, 29, + 86, 77, 71, 224, 248, 16, 213, 254, 75, 78, 239, 243, 222, 241, 15, +]); + +// signature produced by KeyPair created from some random KeyPair + +describe('KeyPair tests', () => { + it('generate keypair from seed', async function () { + // arrange + const random = await KeyPair.randomEd25519(); + const privateKey = random.toEd25519PrivateKey(); + + // act + const keyPair = await KeyPair.fromEd25519SK(privateKey); + const privateKey2 = keyPair.toEd25519PrivateKey(); + + // assert + expect(privateKey).toStrictEqual(privateKey2); + }); + + it('create keypair from ed25519 private key', async function () { + // arrange + const rustSK = 'jDaxLJzYtzgwTMrELJCAqavtmx85ktQNfB2rLcK7MhH'; + const sk = decode(rustSK); + + // act + const keyPair = await KeyPair.fromEd25519SK(sk); + + // assert + const expectedPeerId = '12D3KooWH1W3VznVZ87JH4FwABK4mkntcspTVWJDta6c2xg9Pzbp'; + expect(keyPair.getPeerId()).toStrictEqual(expectedPeerId); + }); + + it('create keypair from a seed phrase', async function () { + // arrange + const seedArray = new Uint8Array(32).fill(1); + + // act + const keyPair = await KeyPair.fromEd25519SK(seedArray); + + // assert + const expectedPeerId = '12D3KooWK99VoVxNE7XzyBwXEzW7xhK7Gpv85r9F3V3fyKSUKPH5'; + expect(keyPair.getPeerId()).toStrictEqual(expectedPeerId); + }); + + it('sign', async function () { + // arrange + const keyPair = await KeyPair.fromEd25519SK(keyBytes); + + // act + const res = await keyPair.signBytes(testData); + + // assert + expect(res).toStrictEqual(testDataSig); + }); + + it('verify', async function () { + // arrange + const keyPair = await KeyPair.fromEd25519SK(keyBytes); + + // act + const res = await keyPair.verify(testData, testDataSig); + + // assert + expect(res).toBe(true); + }); + + it('sign-verify', async function () { + // arrange + const keyPair = await KeyPair.fromEd25519SK(keyBytes); + + // act + const data = new Uint8Array(32).fill(1); + const sig = await keyPair.signBytes(data); + const res = await keyPair.verify(data, sig); + + // assert + expect(res).toBe(true); + }); +}); diff --git a/packages/core/js-peer/src/keypair/index.ts b/packages/core/js-peer/src/keypair/index.ts new file mode 100644 index 000000000..c29a37e5b --- /dev/null +++ b/packages/core/js-peer/src/keypair/index.ts @@ -0,0 +1,95 @@ +/* + * Copyright 2020 Fluence Labs Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { PeerId } from '@libp2p/interface-peer-id'; +import { generateKeyPairFromSeed, generateKeyPair } from '@libp2p/crypto/keys'; +import { createFromPrivKey } from '@libp2p/peer-id-factory'; +import type { PrivateKey } from '@libp2p/interface-keys'; +import { toUint8Array } from 'js-base64'; +import * as bs58 from 'bs58'; +import { KeyPairOptions } from '@fluencelabs/interfaces'; + +// @ts-ignore +const { decode } = bs58.default; + +export class KeyPair { + /** + * Key pair in libp2p format. Used for backward compatibility with the current FluencePeer implementation + */ + getLibp2pPeerId() { + return this.libp2pPeerId; + } + + constructor(private key: PrivateKey, private libp2pPeerId: PeerId) {} + + /** + * Generates new KeyPair from ed25519 private key represented as a 32 byte array + * @param seed - Any sequence of 32 bytes + * @returns - Promise with the created KeyPair + */ + static async fromEd25519SK(seed: Uint8Array): Promise { + const key = await generateKeyPairFromSeed('Ed25519', seed, 256); + const lib2p2Pid = await createFromPrivKey(key); + return new KeyPair(key, lib2p2Pid); + } + + /** + * Generates new KeyPair with a random secret key + * @returns - Promise with the created KeyPair + */ + static async randomEd25519(): Promise { + const key = await generateKeyPair('Ed25519'); + const lib2p2Pid = await createFromPrivKey(key); + return new KeyPair(key, lib2p2Pid); + } + + getPeerId(): string { + return this.libp2pPeerId.toString(); + } + + /** + * @returns 32 byte private key + */ + toEd25519PrivateKey(): Uint8Array { + return this.key.marshal().subarray(0, 32); + } + + signBytes(data: Uint8Array): Promise { + return this.key.sign(data); + } + + verify(data: Uint8Array, signature: Uint8Array): Promise { + return this.key.public.verify(data, signature); + } +} + +export const fromBase64Sk = (sk: string): Promise => { + const skArr = toUint8Array(sk); + return KeyPair.fromEd25519SK(skArr); +}; + +export const fromBase58Sk = (sk: string): Promise => { + const skArr = decode(sk); + return KeyPair.fromEd25519SK(skArr); +}; + +export const fromOpts = (opts: KeyPairOptions): Promise => { + if (opts.source === 'random') { + return KeyPair.randomEd25519(); + } + + return KeyPair.fromEd25519SK(opts.source); +}; diff --git a/packages/core/js-peer/src/marine/deps-loader/common.ts b/packages/core/js-peer/src/marine/deps-loader/common.ts new file mode 100644 index 000000000..4fa40b180 --- /dev/null +++ b/packages/core/js-peer/src/marine/deps-loader/common.ts @@ -0,0 +1,23 @@ +import { BlobWorker } from 'threads'; +import { fromBase64, toUint8Array } from 'js-base64'; +import type { WorkerImplementation } from 'threads/dist/types/master'; +import { LazyLoader } from '../../interfaces/index.js'; +import { Buffer } from 'buffer'; + +export class InlinedWorkerLoader extends LazyLoader { + constructor(b64script: string) { + super(() => { + const script = fromBase64(b64script); + return BlobWorker.fromText(script); + }); + } +} + +export class InlinedWasmLoader extends LazyLoader { + constructor(b64wasm: string) { + super(() => { + const wasm = toUint8Array(b64wasm); + return Buffer.from(wasm); + }); + } +} diff --git a/packages/core/js-peer/src/marine/deps-loader/node.ts b/packages/core/js-peer/src/marine/deps-loader/node.ts new file mode 100644 index 000000000..b71e9057f --- /dev/null +++ b/packages/core/js-peer/src/marine/deps-loader/node.ts @@ -0,0 +1,68 @@ +import { createRequire } from 'module'; +import { LazyLoader } from '../../interfaces/index.js'; + +import type { WorkerImplementation } from 'threads/dist/types/master'; +import { Worker } from 'threads'; +import { Buffer } from 'buffer'; +import * as fs from 'fs'; +import * as path from 'path'; + +const require = createRequire(import.meta.url); + +const bufferToSharedArrayBuffer = (buffer: Buffer): SharedArrayBuffer => { + const sab = new SharedArrayBuffer(buffer.length); + const tmp = new Uint8Array(sab); + tmp.set(buffer, 0); + return sab; +}; + +/** + * Load wasm file from npm package. Only works in nodejs environment. + * The function returns SharedArrayBuffer compatible with FluenceAppService methods. + * @param source - object specifying the source of the file. Consist two fields: package name and file path. + * @returns SharedArrayBuffer with the wasm file + */ +export const loadWasmFromNpmPackage = async (source: { package: string; file: string }): Promise => { + const packagePath = require.resolve(source.package); + const filePath = path.join(path.dirname(packagePath), source.file); + return loadWasmFromFileSystem(filePath); +}; + +/** + * Load wasm file from the file system. Only works in nodejs environment. + * The functions returns SharedArrayBuffer compatible with FluenceAppService methods. + * @param filePath - path to the wasm file + * @returns SharedArrayBuffer with the wasm fileWorker + */ +export const loadWasmFromFileSystem = async (filePath: string): Promise => { + const buffer = await fs.promises.readFile(filePath); + return bufferToSharedArrayBuffer(buffer); +}; + +export class WasmLoaderFromFs extends LazyLoader { + constructor(filePath: string) { + super(() => loadWasmFromFileSystem(filePath)); + } +} + +export class WasmLoaderFromNpm extends LazyLoader { + constructor(pkg: string, file: string) { + super(() => loadWasmFromNpmPackage({ package: pkg, file: file })); + } +} + +export class WorkerLoaderFromFs extends LazyLoader { + constructor(scriptPath: string) { + super(() => new Worker(scriptPath)); + } +} + +export class WorkerLoaderFromNpm extends LazyLoader { + constructor(pkg: string, file: string) { + super(() => { + const packagePath = require.resolve(pkg); + const scriptPath = path.join(path.dirname(packagePath), file); + return new Worker(scriptPath); + }); + } +} diff --git a/packages/core/js-peer/src/marine/deps-loader/web.ts b/packages/core/js-peer/src/marine/deps-loader/web.ts new file mode 100644 index 000000000..6beb6162a --- /dev/null +++ b/packages/core/js-peer/src/marine/deps-loader/web.ts @@ -0,0 +1,40 @@ +import { Buffer } from 'buffer'; +import { LazyLoader } from '../../interfaces/index.js'; + +const bufferToSharedArrayBuffer = (buffer: Buffer): SharedArrayBuffer => { + const sab = new SharedArrayBuffer(buffer.length); + const tmp = new Uint8Array(sab); + tmp.set(buffer, 0); + return sab; +}; + +/** + * Load wasm file from the server. Only works in browsers. + * The function will try load file into SharedArrayBuffer if the site is cross-origin isolated. + * Otherwise the return value fallbacks to Buffer which is less performant but is still compatible with FluenceAppService methods. + * We strongly recommend to set-up cross-origin headers. For more details see: See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements + * Filename is relative to current origin. + * @param filePath - path to the wasm file relative to current origin + * @returns Either SharedArrayBuffer or Buffer with the wasm file + */ +export const loadWasmFromServer = async (filePath: string): Promise => { + const fullUrl = window.location.origin + '/' + filePath; + const res = await fetch(fullUrl); + const ab = await res.arrayBuffer(); + new Uint8Array(ab); + const buffer = Buffer.from(ab); + + // only convert to shared buffers if necessary CORS headers have been set: + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements + if (crossOriginIsolated) { + return bufferToSharedArrayBuffer(buffer); + } + + return buffer; +}; + +export class WebLoaderFromUrl extends LazyLoader { + constructor(filePath: string) { + super(() => loadWasmFromServer(filePath)); + } +} diff --git a/packages/core/js-peer/src/marine/worker-script/index.ts b/packages/core/js-peer/src/marine/worker-script/index.ts new file mode 100644 index 000000000..43226595d --- /dev/null +++ b/packages/core/js-peer/src/marine/worker-script/index.ts @@ -0,0 +1,83 @@ +/* + * Copyright 2022 Fluence Labs Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { MarineService } from '@fluencelabs/marine-js/dist/MarineService'; +import type { Env, MarineServiceConfig } from '@fluencelabs/marine-js/dist/config'; +import type { JSONArray, JSONObject, LogMessage } from '@fluencelabs/marine-js/dist/types'; +import { Observable, Subject } from 'threads/observable'; +import { expose } from 'threads/worker'; + +let marineServices = new Map(); +let controlModule: WebAssembly.Module | undefined; + +const onLogMessage = new Subject(); + +const asArray = (buf: SharedArrayBuffer | Buffer) => { + return new Uint8Array(buf); +}; + +const toExpose = { + init: async (controlModuleWasm: SharedArrayBuffer | Buffer): Promise => { + controlModule = await WebAssembly.compile(asArray(controlModuleWasm)); + }, + + createService: async ( + wasm: SharedArrayBuffer | Buffer, + serviceId: string, + marineConfig?: MarineServiceConfig, + envs?: Env, + ): Promise => { + if (!controlModule) { + throw new Error('MarineJS is not initialized. To initialize call `init` function'); + } + + const service = await WebAssembly.compile(asArray(wasm)); + const srv = new MarineService( + controlModule, + service, + serviceId, + onLogMessage.next.bind(onLogMessage), + marineConfig, + envs, + ); + await srv.init(); + marineServices.set(serviceId, srv); + }, + + terminate: () => { + marineServices.forEach((val, key) => { + val.terminate(); + }); + onLogMessage.complete(); + }, + + callService: (serviceId: string, functionName: string, args: JSONArray | JSONObject, callParams: any): unknown => { + const srv = marineServices.get(serviceId); + if (!srv) { + throw new Error(`service with id=${serviceId} not found`); + } + + return srv.call(functionName, args, callParams); + }, + + onLogMessage(): Observable { + return Observable.from(onLogMessage); + }, +}; + +export type MarineBackgroundInterface = typeof toExpose; + +expose(toExpose); diff --git a/packages/core/js-peer/src/marine/worker-script/workerLoader.ts b/packages/core/js-peer/src/marine/worker-script/workerLoader.ts new file mode 100644 index 000000000..7a400e397 --- /dev/null +++ b/packages/core/js-peer/src/marine/worker-script/workerLoader.ts @@ -0,0 +1,10 @@ +import { LazyLoader } from '../../interfaces/index.js'; + +import type { WorkerImplementation } from 'threads/dist/types/master'; +import { Worker } from 'threads'; + +export class WorkerLoader extends LazyLoader { + constructor() { + super(() => new Worker('./')); + } +} diff --git a/packages/core/js-peer/src/marine/worker/index.ts b/packages/core/js-peer/src/marine/worker/index.ts new file mode 100644 index 000000000..f36d4c98e --- /dev/null +++ b/packages/core/js-peer/src/marine/worker/index.ts @@ -0,0 +1,77 @@ +/* + * Copyright 2022 Fluence Labs Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { JSONArray, JSONObject, LogLevel } from '@fluencelabs/marine-js/dist/types'; +import { LogFunction, logLevelToEnv } from '@fluencelabs/marine-js/dist/types'; +import type { IMarine, IWorkerLoader, IWasmLoader } from '../../interfaces/index.js'; +import type { MarineBackgroundInterface } from '../worker-script/index.js'; +import { spawn, Thread } from 'threads'; +import type { ModuleThread } from 'threads'; + +export class MarineBackgroundRunner implements IMarine { + private workerThread?: ModuleThread; + + constructor( + private workerLoader: IWorkerLoader, + private controlModuleLoader: IWasmLoader, + private logFunction: LogFunction, + ) {} + + async start(): Promise { + if (this.workerThread) { + return; + } + + await this.workerLoader.start(); + await this.controlModuleLoader.start(); + const worker = this.workerLoader.getValue(); + const wasm = this.controlModuleLoader.getValue(); + this.workerThread = await spawn(worker, { timeout: 99999999 }); + this.workerThread.onLogMessage().subscribe(this.logFunction); + await this.workerThread.init(wasm); + } + + createService(serviceModule: SharedArrayBuffer | Buffer, serviceId: string, logLevel?: LogLevel): Promise { + if (!this.workerThread) { + throw 'Worker is not initialized'; + } + + const env = logLevel ? logLevelToEnv(logLevel) : {}; + return this.workerThread.createService(serviceModule, serviceId, undefined, env); + } + + callService( + serviceId: string, + functionName: string, + args: JSONArray | JSONObject, + callParams: any, + ): Promise { + if (!this.workerThread) { + throw 'Worker is not initialized'; + } + + return this.workerThread.callService(serviceId, functionName, args, callParams); + } + + async stop(): Promise { + if (!this.workerThread) { + return; + } + + await this.workerThread.terminate(); + await Thread.terminate(this.workerThread); + } +} diff --git a/packages/core/js-peer/tsconfig.json b/packages/core/js-peer/tsconfig.json new file mode 100644 index 000000000..eb76f9fe8 --- /dev/null +++ b/packages/core/js-peer/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist", + "moduleResolution": "node" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/fluence-connection/.prettierrc.js b/packages/fluence-connection/.prettierrc.js deleted file mode 100644 index 4e5ea887b..000000000 --- a/packages/fluence-connection/.prettierrc.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - semi: true, - trailingComma: "all", - singleQuote: true, - printWidth: 120, - tabWidth: 4, - useTabs: false -}; diff --git a/packages/fluence-connection/package.json b/packages/fluence-connection/package.json deleted file mode 100644 index 7d8e03674..000000000 --- a/packages/fluence-connection/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "@fluencelabs/connection", - "version": "0.2.0", - "description": "Fluence connection", - "main": "./dist/index.js", - "typings": "./dist/index.d.ts", - "engines": { - "node": ">=10", - "pnpm": ">=3" - }, - "scripts": { - "build": "tsc" - }, - "repository": "https://github.com/fluencelabs/fluence-js", - "author": "Fluence Labs", - "license": "Apache-2.0", - "dependencies": { - "@fluencelabs/interfaces": "workspace:0.1.0", - "peer-id": "0.16.0", - "it-length-prefixed": "5.0.3", - "it-pipe": "1.1.0", - "@chainsafe/libp2p-noise": "^4.1.1", - "libp2p": "0.36.2", - "libp2p-interfaces": "^4.0.6", - "libp2p-mplex": "0.10.7", - "libp2p-websockets": "0.16.2", - "loglevel": "1.8.1", - "multiaddr": "10.0.1", - "browser-or-node": "2.0.0", - "buffer": "^6.0.3" - }, - "devDependencies": { - "typescript": "^4.6.4" - } -} diff --git a/packages/fluence-connection/src/Buffer.ts b/packages/fluence-connection/src/Buffer.ts deleted file mode 100644 index 13528d814..000000000 --- a/packages/fluence-connection/src/Buffer.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2022 Fluence Labs Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { isBrowser } from 'browser-or-node'; -import { Buffer as BufferPolyfill } from 'buffer'; - -export default isBrowser ? BufferPolyfill : Buffer; diff --git a/packages/fluence-connection/tsconfig.json b/packages/fluence-connection/tsconfig.json deleted file mode 100644 index e0db254b6..000000000 --- a/packages/fluence-connection/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "compilerOptions": { - "outDir": "./dist/", - "lib": ["ES2015"], - "target": "ES5", - "module": "commonjs", - "skipLibCheck": true, - "sourceMap": true, - "declaration": true, - "esModuleInterop": true, - }, - "exclude": ["node_modules", "dist"], - "include": ["src/**/*"] -} diff --git a/packages/fluence-interfaces/.prettierrc.js b/packages/fluence-interfaces/.prettierrc.js deleted file mode 100644 index 4e5ea887b..000000000 --- a/packages/fluence-interfaces/.prettierrc.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - semi: true, - trailingComma: "all", - singleQuote: true, - printWidth: 120, - tabWidth: 4, - useTabs: false -}; diff --git a/packages/fluence-interfaces/src/index.ts b/packages/fluence-interfaces/src/index.ts deleted file mode 100644 index 846b75f23..000000000 --- a/packages/fluence-interfaces/src/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2020 Fluence Labs Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export type PeerIdB58 = string; - -export type ParticleHandler = (particle: string) => void; - -/** - * Base class for connectivity layer to Fluence Network - */ -export abstract class FluenceConnection { - abstract readonly relayPeerId: PeerIdB58 | null; - abstract connect(onIncomingParticle: ParticleHandler): Promise; - abstract disconnect(): Promise; - abstract sendParticle(nextPeerIds: PeerIdB58[], particle: string): Promise; -} diff --git a/packages/fluence-interfaces/tsconfig.json b/packages/fluence-interfaces/tsconfig.json deleted file mode 100644 index e0db254b6..000000000 --- a/packages/fluence-interfaces/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "compilerOptions": { - "outDir": "./dist/", - "lib": ["ES2015"], - "target": "ES5", - "module": "commonjs", - "skipLibCheck": true, - "sourceMap": true, - "declaration": true, - "esModuleInterop": true, - }, - "exclude": ["node_modules", "dist"], - "include": ["src/**/*"] -} diff --git a/packages/fluence-js/.npmignore b/packages/fluence-js/.npmignore deleted file mode 100644 index 1354879a2..000000000 --- a/packages/fluence-js/.npmignore +++ /dev/null @@ -1,12 +0,0 @@ -.idea -.gitignore -node_modules -types - -src/ - -tsconfig.json -webpack.config.js - -bundle -pkg \ No newline at end of file diff --git a/packages/fluence-js/.prettierrc.js b/packages/fluence-js/.prettierrc.js deleted file mode 100644 index 4e5ea887b..000000000 --- a/packages/fluence-js/.prettierrc.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - semi: true, - trailingComma: "all", - singleQuote: true, - printWidth: 120, - tabWidth: 4, - useTabs: false -}; diff --git a/packages/fluence-js/CONTRIBUTING.md b/packages/fluence-js/CONTRIBUTING.md deleted file mode 100644 index 0e3b264d3..000000000 --- a/packages/fluence-js/CONTRIBUTING.md +++ /dev/null @@ -1,13 +0,0 @@ -## Contribute Code - -You are welcome to contribute to Fluence. - -Things you need to know: - -1. You need to **agree to the Contributors License Agreement**. This is a common practice in all major Open Source projects. At the current moment we are unable to accept contributions made on behalf of a company. Only individual contributions will be accepted. -2. **Not all proposed contributions can be accepted**. Some features may e.g. just fit a third-party add-on better. The contribution must fit the overall direction of Fluence and really improve it. The more effort you invest, the better you should clarify in advance whether the contribution fits: the best way would be to just open an issue to discuss the contribution you plan to make. - -### Contributor License Agreement - -When you contribute, you have to be aware that your contribution is covered by **Apache License 2.0**, but might relicensed under few other software licenses mentioned in the **Contributor License Agreement**. -In particular you need to agree to the [Contributor License Agreement](https://gist.github.com/fluencelabs-org/3f4cbb3cc14c1c0fb9ad99d8f7316ed7). If you agree to its content, you simply have to click on the link posted by the CLA assistant as a comment to the pull request. Click it to check the CLA, then accept it on the following screen if you agree to it. CLA assistant will save this decision for upcoming contributions and will notify you if there is any change to the CLA in the meantime. diff --git a/packages/fluence-js/aqua/tests/marine-js-logging.aqua b/packages/fluence-js/aqua/tests/marine-js-logging.aqua deleted file mode 100644 index 9ca1ff928..000000000 --- a/packages/fluence-js/aqua/tests/marine-js-logging.aqua +++ /dev/null @@ -1,16 +0,0 @@ -data GreetingRecord: - str: string - num: i32 - -service GreetingRecord: - greeting_record() -> GreetingRecord - log_debug() - log_error() - log_info() - log_trace() - log_warn() - void_fn() - -func call_info(srvId: string): - GreetingRecord srvId - GreetingRecord.log_info() diff --git a/packages/fluence-js/package.json b/packages/fluence-js/package.json deleted file mode 100644 index 665de80e3..000000000 --- a/packages/fluence-js/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "@fluencelabs/fluence", - "version": "0.28.0", - "description": "TypeScript implementation of Fluence Peer", - "main": "./dist/index.js", - "typings": "./dist/index.d.ts", - "engines": { - "node": ">=10", - "pnpm": ">=3" - }, - "scripts": { - "compile-aqua": "npm run compile-aqua:src && npm run compile-aqua:test", - "compile-aqua:src": "aqua -i ./aqua/src/ -o ./src/internal/_aqua", - "compile-aqua:test": "aqua -i ./aqua/tests/ -o ./src/__test__/_aqua", - "test": "jest", - "test:unit": "jest --testPathPattern=src/__test__/unit", - "test:integration": "jest --testPathPattern=src/__test__/integration", - "build": "tsc", - "build:docs": "typedoc" - }, - "repository": "https://github.com/fluencelabs/fluence-js", - "author": "Fluence Labs", - "license": "Apache-2.0", - "bin": { - "copy-marine": "dist/tools/copyMarine.js" - }, - "dependencies": { - "@fluencelabs/avm": "0.35.3", - "@fluencelabs/connection": "workspace:0.2.0", - "@fluencelabs/interfaces": "workspace:0.1.0", - "@fluencelabs/keypair": "workspace:0.2.0", - "@fluencelabs/marine-js": "0.3.37", - "async": "3.2.4", - "base64-js": "^1.5.1", - "browser-or-node": "2.0.0", - "bs58": "5.0.0", - "buffer": "^6.0.3", - "cids": "1.1.9", - "loglevel": "1.8.1", - "multiformats": "9.9.0", - "peer-id": "0.16.0", - "platform": "^1.3.6", - "rxjs": "^7.5.5", - "ts-pattern": "3.3.3", - "uuid": "8.3.2" - }, - "devDependencies": { - "@fluencelabs/aqua": "0.7.7-362", - "@fluencelabs/aqua-lib": "0.6.0", - "@fluencelabs/fluence-network-environment": "^1.0.13", - "@types/bs58": "^4.0.1", - "@types/jest": "^27.5.1", - "@types/platform": "^1.3.4", - "@types/uuid": "^8.3.4", - "jest": "^28.1.0", - "jest-each": "^28.1.3", - "js-base64": "^3.7.2", - "multiaddr": "10.0.1", - "ts-jest": "^28.0.2", - "typedoc": "^0.22.15", - "typescript": "^4.6.4" - } -} diff --git a/packages/fluence-js/src/__test__/_aqua/marine-js-logging.ts b/packages/fluence-js/src/__test__/_aqua/marine-js-logging.ts deleted file mode 100644 index 96690aa2b..000000000 --- a/packages/fluence-js/src/__test__/_aqua/marine-js-logging.ts +++ /dev/null @@ -1,168 +0,0 @@ -/** - * - * This file is auto-generated. Do not edit manually: changes may be erased. - * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. - * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues - * Aqua version: 0.7.7-362 - * - */ -import { FluencePeer } from '../../index'; -import type { CallParams$$ } from '../../internal/compilerSupport/v4'; -import { callFunction$$, registerService$$ } from '../../internal/compilerSupport/v4'; - -// Services - -export interface GreetingRecordDef { - greeting_record: ( - callParams: CallParams$$, - ) => { num: number; str: string } | Promise<{ num: number; str: string }>; - log_debug: (callParams: CallParams$$) => void | Promise; - log_error: (callParams: CallParams$$) => void | Promise; - log_info: (callParams: CallParams$$) => void | Promise; - log_trace: (callParams: CallParams$$) => void | Promise; - log_warn: (callParams: CallParams$$) => void | Promise; - void_fn: (callParams: CallParams$$) => void | Promise; -} -export function registerGreetingRecord(serviceId: string, service: GreetingRecordDef): void; -export function registerGreetingRecord(peer: FluencePeer, serviceId: string, service: GreetingRecordDef): void; - -export function registerGreetingRecord(...args: any) { - registerService$$(args, { - functions: { - tag: 'labeledProduct', - fields: { - greeting_record: { - tag: 'arrow', - domain: { - tag: 'nil', - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'struct', - name: 'GreetingRecord', - fields: { - num: { - tag: 'scalar', - name: 'i32', - }, - str: { - tag: 'scalar', - name: 'string', - }, - }, - }, - ], - }, - }, - log_debug: { - tag: 'arrow', - domain: { - tag: 'nil', - }, - codomain: { - tag: 'nil', - }, - }, - log_error: { - tag: 'arrow', - domain: { - tag: 'nil', - }, - codomain: { - tag: 'nil', - }, - }, - log_info: { - tag: 'arrow', - domain: { - tag: 'nil', - }, - codomain: { - tag: 'nil', - }, - }, - log_trace: { - tag: 'arrow', - domain: { - tag: 'nil', - }, - codomain: { - tag: 'nil', - }, - }, - log_warn: { - tag: 'arrow', - domain: { - tag: 'nil', - }, - codomain: { - tag: 'nil', - }, - }, - void_fn: { - tag: 'arrow', - domain: { - tag: 'nil', - }, - codomain: { - tag: 'nil', - }, - }, - }, - }, - }); -} - -// Functions - -export function call_info(srvId: string, config?: { ttl?: number }): Promise; - -export function call_info(peer: FluencePeer, srvId: string, config?: { ttl?: number }): Promise; - -export function call_info(...args: any) { - let script = ` - (xor - (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("getDataSrv" "srvId") [] srvId) - ) - (call %init_peer_id% (srvId "log_info") []) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) - ) - `; - return callFunction$$( - args, - { - functionName: 'call_info', - arrow: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: { - srvId: { - tag: 'scalar', - name: 'string', - }, - }, - }, - codomain: { - tag: 'nil', - }, - }, - names: { - relay: '-relay-', - getDataSrv: 'getDataSrv', - callbackSrv: 'callbackSrv', - responseSrv: 'callbackSrv', - responseFnName: 'response', - errorHandlingSrv: 'errorHandlingSrv', - errorFnName: 'error', - }, - }, - script, - ); -} diff --git a/packages/fluence-js/src/__test__/_aqua/marine-js.ts b/packages/fluence-js/src/__test__/_aqua/marine-js.ts deleted file mode 100644 index 19afb8c2b..000000000 --- a/packages/fluence-js/src/__test__/_aqua/marine-js.ts +++ /dev/null @@ -1,151 +0,0 @@ -/** - * - * This file is auto-generated. Do not edit manually: changes may be erased. - * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. - * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues - * Aqua version: 0.7.7-362 - * - */ -import { FluencePeer } from '../../index'; -import type { CallParams$$ } from '../../internal/compilerSupport/v4'; -import { callFunction$$, registerService$$ } from '../../internal/compilerSupport/v4'; - -// Services - -export interface GreetingDef { - greeting: (name: string, callParams: CallParams$$<'name'>) => string | Promise; - greeting_record: ( - callParams: CallParams$$, - ) => { num: number; str: string } | Promise<{ num: number; str: string }>; -} -export function registerGreeting(service: GreetingDef): void; -export function registerGreeting(serviceId: string, service: GreetingDef): void; -export function registerGreeting(peer: FluencePeer, service: GreetingDef): void; -export function registerGreeting(peer: FluencePeer, serviceId: string, service: GreetingDef): void; - -export function registerGreeting(...args: any) { - registerService$$(args, { - defaultServiceId: 'greeting', - functions: { - tag: 'labeledProduct', - fields: { - greeting: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: { - name: { - tag: 'scalar', - name: 'string', - }, - }, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'scalar', - name: 'string', - }, - ], - }, - }, - greeting_record: { - tag: 'arrow', - domain: { - tag: 'nil', - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'struct', - name: 'GreetingRecord', - fields: { - num: { - tag: 'scalar', - name: 'i32', - }, - str: { - tag: 'scalar', - name: 'string', - }, - }, - }, - ], - }, - }, - }, - }, - }); -} - -// Functions - -export function call(arg: string, config?: { ttl?: number }): Promise; - -export function call(peer: FluencePeer, arg: string, config?: { ttl?: number }): Promise; - -export function call(...args: any) { - let script = ` - (xor - (seq - (seq - (seq - (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("getDataSrv" "arg") [] arg) - ) - (call %init_peer_id% ("greeting" "greeting") [arg] res1) - ) - (call %init_peer_id% ("greeting" "greeting") [res1] res2) - ) - (call %init_peer_id% ("greeting" "greeting") [res2] res3) - ) - (xor - (call %init_peer_id% ("callbackSrv" "response") [res3]) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) - ) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) - ) - `; - return callFunction$$( - args, - { - functionName: 'call', - arrow: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: { - arg: { - tag: 'scalar', - name: 'string', - }, - }, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'scalar', - name: 'string', - }, - ], - }, - }, - names: { - relay: '-relay-', - getDataSrv: 'getDataSrv', - callbackSrv: 'callbackSrv', - responseSrv: 'callbackSrv', - responseFnName: 'response', - errorHandlingSrv: 'errorHandlingSrv', - errorFnName: 'error', - }, - }, - script, - ); -} diff --git a/packages/fluence-js/src/__test__/_aqua/sig-tests.ts b/packages/fluence-js/src/__test__/_aqua/sig-tests.ts deleted file mode 100644 index 4beeb34a2..000000000 --- a/packages/fluence-js/src/__test__/_aqua/sig-tests.ts +++ /dev/null @@ -1,264 +0,0 @@ -/** - * - * This file is auto-generated. Do not edit manually: changes may be erased. - * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. - * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues - * Aqua version: 0.7.7-362 - * - */ -import { FluencePeer } from '../../index'; -import type { CallParams$$ } from '../../internal/compilerSupport/v4'; -import { callFunction$$, registerService$$ } from '../../internal/compilerSupport/v4'; - -// Services - -export interface DataProviderDef { - provide_data: (callParams: CallParams$$) => number[] | Promise; -} -export function registerDataProvider(service: DataProviderDef): void; -export function registerDataProvider(serviceId: string, service: DataProviderDef): void; -export function registerDataProvider(peer: FluencePeer, service: DataProviderDef): void; -export function registerDataProvider(peer: FluencePeer, serviceId: string, service: DataProviderDef): void; - -export function registerDataProvider(...args: any) { - registerService$$(args, { - defaultServiceId: 'data', - functions: { - tag: 'labeledProduct', - fields: { - provide_data: { - tag: 'arrow', - domain: { - tag: 'nil', - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'array', - type: { - tag: 'scalar', - name: 'u8', - }, - }, - ], - }, - }, - }, - }, - }); -} - -export interface SigDef { - get_peer_id: (callParams: CallParams$$) => string | Promise; - sign: ( - data: number[], - callParams: CallParams$$<'data'>, - ) => - | { error: string | null; signature: number[] | null; success: boolean } - | Promise<{ error: string | null; signature: number[] | null; success: boolean }>; - verify: ( - signature: number[], - data: number[], - callParams: CallParams$$<'signature' | 'data'>, - ) => boolean | Promise; -} -export function registerSig(service: SigDef): void; -export function registerSig(serviceId: string, service: SigDef): void; -export function registerSig(peer: FluencePeer, service: SigDef): void; -export function registerSig(peer: FluencePeer, serviceId: string, service: SigDef): void; - -export function registerSig(...args: any) { - registerService$$(args, { - defaultServiceId: 'sig', - functions: { - tag: 'labeledProduct', - fields: { - get_peer_id: { - tag: 'arrow', - domain: { - tag: 'nil', - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'scalar', - name: 'string', - }, - ], - }, - }, - sign: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: { - data: { - tag: 'array', - type: { - tag: 'scalar', - name: 'u8', - }, - }, - }, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'struct', - name: 'SignResult', - fields: { - error: { - tag: 'option', - type: { - tag: 'scalar', - name: 'string', - }, - }, - signature: { - tag: 'option', - type: { - tag: 'array', - type: { - tag: 'scalar', - name: 'u8', - }, - }, - }, - success: { - tag: 'scalar', - name: 'bool', - }, - }, - }, - ], - }, - }, - verify: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: { - signature: { - tag: 'array', - type: { - tag: 'scalar', - name: 'u8', - }, - }, - data: { - tag: 'array', - type: { - tag: 'scalar', - name: 'u8', - }, - }, - }, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'scalar', - name: 'bool', - }, - ], - }, - }, - }, - }, - }); -} - -// Functions - -export type CallSigResult = { error: string | null; signature: number[] | null; success: boolean }; -export function callSig(sigId: string, config?: { ttl?: number }): Promise; - -export function callSig(peer: FluencePeer, sigId: string, config?: { ttl?: number }): Promise; - -export function callSig(...args: any) { - let script = ` - (xor - (seq - (seq - (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("getDataSrv" "sigId") [] sigId) - ) - (call %init_peer_id% ("data" "provide_data") [] data) - ) - (call %init_peer_id% (sigId "sign") [data] signature) - ) - (xor - (call %init_peer_id% ("callbackSrv" "response") [signature]) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) - ) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) - ) - `; - return callFunction$$( - args, - { - functionName: 'callSig', - arrow: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: { - sigId: { - tag: 'scalar', - name: 'string', - }, - }, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'struct', - name: 'SignResult', - fields: { - error: { - tag: 'option', - type: { - tag: 'scalar', - name: 'string', - }, - }, - signature: { - tag: 'option', - type: { - tag: 'array', - type: { - tag: 'scalar', - name: 'u8', - }, - }, - }, - success: { - tag: 'scalar', - name: 'bool', - }, - }, - }, - ], - }, - }, - names: { - relay: '-relay-', - getDataSrv: 'getDataSrv', - callbackSrv: 'callbackSrv', - responseSrv: 'callbackSrv', - responseFnName: 'response', - errorHandlingSrv: 'errorHandlingSrv', - errorFnName: 'error', - }, - }, - script, - ); -} diff --git a/packages/fluence-js/src/__test__/_aqua/srv-tests.ts b/packages/fluence-js/src/__test__/_aqua/srv-tests.ts deleted file mode 100644 index e301b25ce..000000000 --- a/packages/fluence-js/src/__test__/_aqua/srv-tests.ts +++ /dev/null @@ -1,341 +0,0 @@ -/** - * - * This file is auto-generated. Do not edit manually: changes may be erased. - * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. - * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues - * Aqua version: 0.7.7-362 - * - */ -import { FluencePeer } from '../../index'; -import { callFunction$$ } from '../../internal/compilerSupport/v4'; - -// Services - -// Functions - -export function happy_path(file_path: string, config?: { ttl?: number }): Promise; - -export function happy_path(peer: FluencePeer, file_path: string, config?: { ttl?: number }): Promise; - -export function happy_path(...args: any) { - let script = ` - (xor - (seq - (seq - (seq - (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("getDataSrv" "file_path") [] file_path) - ) - (call %init_peer_id% ("node_utils" "read_file") [file_path] file) - ) - (call %init_peer_id% ("single_module_srv" "create") [file.$.content.[0]!] created_service) - ) - (call %init_peer_id% (created_service.$.service_id.[0]! "greeting") ["test"] greeting) - ) - (xor - (call %init_peer_id% ("callbackSrv" "response") [greeting]) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) - ) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) - ) - `; - return callFunction$$( - args, - { - functionName: 'happy_path', - arrow: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: { - file_path: { - tag: 'scalar', - name: 'string', - }, - }, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'scalar', - name: 'string', - }, - ], - }, - }, - names: { - relay: '-relay-', - getDataSrv: 'getDataSrv', - callbackSrv: 'callbackSrv', - responseSrv: 'callbackSrv', - responseFnName: 'response', - errorHandlingSrv: 'errorHandlingSrv', - errorFnName: 'error', - }, - }, - script, - ); -} - -export function removing_non_exiting(config?: { ttl?: number }): Promise; - -export function removing_non_exiting(peer: FluencePeer, config?: { ttl?: number }): Promise; - -export function removing_non_exiting(...args: any) { - let script = ` - (xor - (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("single_module_srv" "remove") ["random_id"] e) - ) - (xor - (call %init_peer_id% ("callbackSrv" "response") [e.$.error.[0]!]) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) - ) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) - ) - `; - return callFunction$$( - args, - { - functionName: 'removing_non_exiting', - arrow: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: {}, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'scalar', - name: 'string', - }, - ], - }, - }, - names: { - relay: '-relay-', - getDataSrv: 'getDataSrv', - callbackSrv: 'callbackSrv', - responseSrv: 'callbackSrv', - responseFnName: 'response', - errorHandlingSrv: 'errorHandlingSrv', - errorFnName: 'error', - }, - }, - script, - ); -} - -export function file_not_found(config?: { ttl?: number }): Promise; - -export function file_not_found(peer: FluencePeer, config?: { ttl?: number }): Promise; - -export function file_not_found(...args: any) { - let script = ` - (xor - (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("node_utils" "read_file") ["/random/incorrect/file"] e) - ) - (xor - (call %init_peer_id% ("callbackSrv" "response") [e.$.error.[0]!]) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) - ) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) - ) - `; - return callFunction$$( - args, - { - functionName: 'file_not_found', - arrow: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: {}, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'scalar', - name: 'string', - }, - ], - }, - }, - names: { - relay: '-relay-', - getDataSrv: 'getDataSrv', - callbackSrv: 'callbackSrv', - responseSrv: 'callbackSrv', - responseFnName: 'response', - errorHandlingSrv: 'errorHandlingSrv', - errorFnName: 'error', - }, - }, - script, - ); -} - -export function service_removed(file_path: string, config?: { ttl?: number }): Promise; - -export function service_removed(peer: FluencePeer, file_path: string, config?: { ttl?: number }): Promise; - -export function service_removed(...args: any) { - let script = ` - (xor - (seq - (seq - (seq - (seq - (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("getDataSrv" "file_path") [] file_path) - ) - (call %init_peer_id% ("node_utils" "read_file") [file_path] file) - ) - (call %init_peer_id% ("single_module_srv" "create") [file.$.content.[0]!] created_service) - ) - (call %init_peer_id% ("single_module_srv" "remove") [created_service.$.service_id.[0]!]) - ) - (xor - (call %init_peer_id% (created_service.$.service_id.[0]! "greeting") ["test"] dontcare) - (null) - ) - ) - (xor - (call %init_peer_id% ("callbackSrv" "response") [%last_error%.$.message!]) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) - ) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) - ) - `; - return callFunction$$( - args, - { - functionName: 'service_removed', - arrow: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: { - file_path: { - tag: 'scalar', - name: 'string', - }, - }, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'scalar', - name: 'string', - }, - ], - }, - }, - names: { - relay: '-relay-', - getDataSrv: 'getDataSrv', - callbackSrv: 'callbackSrv', - responseSrv: 'callbackSrv', - responseFnName: 'response', - errorHandlingSrv: 'errorHandlingSrv', - errorFnName: 'error', - }, - }, - script, - ); -} - -export function list_services(file_path: string, config?: { ttl?: number }): Promise; - -export function list_services(peer: FluencePeer, file_path: string, config?: { ttl?: number }): Promise; - -export function list_services(...args: any) { - let script = ` - (xor - (seq - (seq - (seq - (seq - (seq - (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("getDataSrv" "file_path") [] file_path) - ) - (call %init_peer_id% ("node_utils" "read_file") [file_path] file) - ) - (call %init_peer_id% ("single_module_srv" "create") [file.$.content.[0]!]) - ) - (call %init_peer_id% ("single_module_srv" "create") [file.$.content.[0]!]) - ) - (call %init_peer_id% ("single_module_srv" "create") [file.$.content.[0]!]) - ) - (call %init_peer_id% ("single_module_srv" "list") [] list) - ) - (xor - (call %init_peer_id% ("callbackSrv" "response") [list]) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) - ) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) - ) - `; - return callFunction$$( - args, - { - functionName: 'list_services', - arrow: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: { - file_path: { - tag: 'scalar', - name: 'string', - }, - }, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'array', - type: { - tag: 'scalar', - name: 'string', - }, - }, - ], - }, - }, - names: { - relay: '-relay-', - getDataSrv: 'getDataSrv', - callbackSrv: 'callbackSrv', - responseSrv: 'callbackSrv', - responseFnName: 'response', - errorHandlingSrv: 'errorHandlingSrv', - errorFnName: 'error', - }, - }, - script, - ); -} diff --git a/packages/fluence-js/src/__test__/integration/avm.spec.ts b/packages/fluence-js/src/__test__/integration/avm.spec.ts deleted file mode 100644 index 4947e1688..000000000 --- a/packages/fluence-js/src/__test__/integration/avm.spec.ts +++ /dev/null @@ -1,162 +0,0 @@ -import { FluencePeer } from '../../index'; -import { handleTimeout } from '../../internal/utils'; -import { registerHandlersHelper } from '../util'; - -let peer: FluencePeer; - -describe('Avm spec', () => { - beforeEach(async () => { - peer = new FluencePeer(); - await peer.start(); - }); - - afterEach(async () => { - await peer.stop(); - }); - - it('Simple call', async () => { - const res = await new Promise((resolve, reject) => { - const script = ` - (call %init_peer_id% ("print" "print") ["1"]) - `; - const particle = peer.internals.createNewParticle(script); - - if (particle instanceof Error) { - return reject(particle.message); - } - - registerHandlersHelper(peer, particle, { - print: { - print: (args: Array>) => { - const [res] = args; - resolve(res); - }, - }, - }); - - peer.internals.initiateParticle(particle, handleTimeout(reject)); - }); - - expect(res).toBe('1'); - }); - - it('Par call', async () => { - const res = await new Promise((resolve, reject) => { - const res: any[] = []; - const script = ` - (seq - (par - (call %init_peer_id% ("print" "print") ["1"]) - (null) - ) - (call %init_peer_id% ("print" "print") ["2"]) - ) - `; - const particle = peer.internals.createNewParticle(script); - - if (particle instanceof Error) { - return reject(particle.message); - } - - registerHandlersHelper(peer, particle, { - print: { - print: (args: any) => { - res.push(args[0]); - if (res.length == 2) { - resolve(res); - } - }, - }, - }); - - peer.internals.initiateParticle(particle, handleTimeout(reject)); - }); - - expect(res).toStrictEqual(['1', '2']); - }); - - it('Timeout in par call: race', async () => { - const res = await new Promise((resolve, reject) => { - const script = ` - (seq - (call %init_peer_id% ("op" "identity") ["slow_result"] arg) - (seq - (par - (call %init_peer_id% ("peer" "timeout") [1000 arg] $result) - (call %init_peer_id% ("op" "identity") ["fast_result"] $result) - ) - (seq - (canon %init_peer_id% $result #result) - (call %init_peer_id% ("return" "return") [#result.$[0]]) - ) - ) - ) - `; - const particle = peer.internals.createNewParticle(script); - - if (particle instanceof Error) { - return reject(particle.message); - } - - registerHandlersHelper(peer, particle, { - return: { - return: (args: any) => { - resolve(args[0]); - }, - }, - }); - - peer.internals.initiateParticle(particle, handleTimeout(reject)); - }); - - expect(res).toBe('fast_result'); - }); - - it('Timeout in par call: wait', async () => { - const res = await new Promise((resolve, reject) => { - const script = ` - (seq - (call %init_peer_id% ("op" "identity") ["timeout_msg"] arg) - (seq - (seq - (par - (call %init_peer_id% ("peer" "timeout") [1000 arg] $ok_or_err) - (call "invalid_peer" ("op" "identity") ["never"] $ok_or_err) - ) - (xor - (seq - (canon %init_peer_id% $ok_or_err #ok_or_err) - (match #ok_or_err.$[0] "timeout_msg" - (ap "failed_with_timeout" $result) - ) - ) - (ap "impossible happened" $result) - ) - ) - (seq - (canon %init_peer_id% $result #result) - (call %init_peer_id% ("return" "return") [#result.$[0]]) - ) - ) - ) - `; - const particle = peer.internals.createNewParticle(script); - - if (particle instanceof Error) { - return reject(particle.message); - } - - registerHandlersHelper(peer, particle, { - return: { - return: (args: any) => { - resolve(args[0]); - }, - }, - }); - - peer.internals.initiateParticle(particle, handleTimeout(reject)); - }); - - expect(res).toBe('failed_with_timeout'); - }); -}); diff --git a/packages/fluence-js/src/__test__/integration/marine-js.spec.ts b/packages/fluence-js/src/__test__/integration/marine-js.spec.ts deleted file mode 100644 index 9024ae1e1..000000000 --- a/packages/fluence-js/src/__test__/integration/marine-js.spec.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Fluence, FluencePeer } from '../../index'; -import fs from 'fs'; -import { call } from '../_aqua/marine-js'; -import { call_info } from '../_aqua/marine-js-logging'; - -describe('Marine js tests', () => { - beforeEach(async () => { - await Fluence.start(); - }); - - afterEach(async () => { - await Fluence.stop(); - }); - - it('should call marine service correctly', async () => { - // arrange - const wasm = await fs.promises.readFile(__dirname + '/greeting.wasm'); - await Fluence.registerMarineService(wasm, 'greeting'); - - // act - const res = await call('test'); - - // assert - expect(res).toBe('Hi, Hi, Hi, test'); - }); - - // TODO: console printouts are happening inside web-worker\worker threads. - // Find a way to mock functions in background thread - it.skip('logging should work', async () => { - // arrange - const peer = new FluencePeer(); - try { - jest.spyOn(global.console, 'info').mockImplementation(() => {}); - - await peer.start({ - debug: { - marineLogLevel: 'debug', - }, - }); - const wasm = await fs.promises.readFile(__dirname + '/greeting-record.wasm'); - await peer.registerMarineService(wasm, 'greeting'); - - // act - await call_info(peer, 'greeting'); - - // assert - expect(console.info).toBeCalledTimes(1); - expect(console.info).toHaveBeenNthCalledWith(1, '[marine service "greeting"]: info'); - } finally { - await peer.stop(); - } - }); -}); diff --git a/packages/fluence-js/src/__test__/integration/peer.spec.ts b/packages/fluence-js/src/__test__/integration/peer.spec.ts deleted file mode 100644 index d1f45dc2c..000000000 --- a/packages/fluence-js/src/__test__/integration/peer.spec.ts +++ /dev/null @@ -1,419 +0,0 @@ -import { Multiaddr } from 'multiaddr'; - -import { nodes } from '../connection'; -import { FluencePeer } from '../../index'; -import { checkConnection, doNothing, handleTimeout } from '../../internal/utils'; -import { registerHandlersHelper } from '../util'; - -let peer: FluencePeer; - -describe('Typescript usage suite', () => { - afterEach(async () => { - if (peer) { - await peer.stop(); - } - }); - - beforeEach(() => { - peer = new FluencePeer(); - }); - - it('should perform test for FluencePeer class correctly', () => { - // arrange - const number = 1; - const object = { str: 'Hello!' }; - const undefinedVal = undefined; - - // act - const isPeerPeer = FluencePeer.isInstance(peer); - const isNumberPeer = FluencePeer.isInstance(number); - const isObjectPeer = FluencePeer.isInstance(object); - const isUndefinedPeer = FluencePeer.isInstance(undefinedVal); - - // act - expect(isPeerPeer).toBe(true); - expect(isNumberPeer).toBe(false); - expect(isObjectPeer).toBe(false); - expect(isUndefinedPeer).toBe(false); - }); - - describe('Should expose correct peer status', () => { - it('Should expose correct status for uninitialized peer', () => { - const status = peer.getStatus(); - - expect(status.isConnected).toBe(false); - expect(status.isInitialized).toBe(false); - expect(status.peerId).toBe(null); - expect(status.relayPeerId).toBe(null); - }); - - it('Should expose correct status for initialized but not connected peer', async () => { - // arrange - await peer.start(); - - // act - const status = peer.getStatus(); - - // assert - expect(status.isConnected).toBe(false); - expect(status.isInitialized).toBe(true); - expect(status.peerId).not.toBe(null); - expect(status.relayPeerId).toBe(null); - }); - - it('Should expose correct status for connected peer', async () => { - // arrange - await peer.start({ connectTo: nodes[0] }); - - // act - const status = peer.getStatus(); - - // assert - expect(status.isConnected).toBe(true); - expect(status.isInitialized).toBe(true); - expect(status.peerId).not.toBe(null); - expect(status.relayPeerId).not.toBe(null); - }); - }); - - it('should make a call through network', async () => { - // arrange - await peer.start({ connectTo: nodes[0] }); - - const result = await new Promise((resolve, reject) => { - const script = ` - (xor - (seq - (call %init_peer_id% ("load" "relay") [] init_relay) - (seq - (call init_relay ("op" "identity") ["hello world!"] result) - (call %init_peer_id% ("callback" "callback") [result]) - ) - ) - (seq - (call init_relay ("op" "identity") []) - (call %init_peer_id% ("callback" "error") [%last_error%]) - ) - )`; - const particle = peer.internals.createNewParticle(script); - - if (particle instanceof Error) { - return reject(particle.message); - } - - registerHandlersHelper(peer, particle, { - load: { - relay: () => { - return peer.getStatus().relayPeerId; - }, - }, - callback: { - callback: (args: any) => { - const [val] = args; - resolve(val); - }, - error: (args: any) => { - const [error] = args; - reject(error); - }, - }, - }); - - peer.internals.initiateParticle(particle, handleTimeout(reject)); - }); - - expect(result).toBe('hello world!'); - }); - - it('check connection should work', async function () { - await peer.start({ connectTo: nodes[0] }); - - const isConnected = await checkConnection(peer); - - expect(isConnected).toEqual(true); - }); - - it('check connection should work with ttl', async function () { - await peer.start({ connectTo: nodes[0] }); - - const isConnected = await checkConnection(peer, 10000); - - expect(isConnected).toEqual(true); - }); - - it('two clients should work inside the same time browser', async () => { - const peer1 = new FluencePeer(); - await peer1.start({ connectTo: nodes[0] }); - const peer2 = new FluencePeer(); - await peer2.start({ connectTo: nodes[0] }); - - const res = new Promise((resolve) => { - peer2.internals.regHandler.common('test', 'test', (req) => { - resolve(req.args[0]); - return { - result: {}, - retCode: 0, - }; - }); - }); - - const script = ` - (seq - (call "${peer1.getStatus().relayPeerId}" ("op" "identity") []) - (call "${peer2.getStatus().peerId}" ("test" "test") ["test"]) - ) - `; - const particle = peer1.internals.createNewParticle(script); - - if (particle instanceof Error) { - throw particle; - } - - peer1.internals.initiateParticle(particle, doNothing); - - expect(await res).toEqual('test'); - - await peer1.stop(); - await peer2.stop(); - }); - - describe('should make connection to network', () => { - it('address as string', async () => { - await peer.start({ connectTo: nodes[0].multiaddr }); - const isConnected = await checkConnection(peer); - - expect(isConnected).toBeTruthy(); - }); - - it('address as multiaddr', async () => { - await peer.start({ connectTo: new Multiaddr(nodes[0].multiaddr) }); - const isConnected = await checkConnection(peer); - - expect(isConnected).toBeTruthy(); - }); - - it('address as node', async () => { - await peer.start({ connectTo: nodes[0] }); - const isConnected = await checkConnection(peer); - - expect(isConnected).toBeTruthy(); - }); - - it('With connection options: dialTimeout', async () => { - await peer.start({ connectTo: nodes[0], dialTimeoutMs: 100000 }); - const isConnected = await checkConnection(peer); - - expect(isConnected).toBeTruthy(); - }); - - it('With connection options: skipCheckConnection', async () => { - await peer.start({ connectTo: nodes[0], skipCheckConnection: true }); - const isConnected = await checkConnection(peer); - - expect(isConnected).toBeTruthy(); - }); - - it('With connection options: checkConnectionTTL', async () => { - await peer.start({ connectTo: nodes[0], checkConnectionTimeoutMs: 1000 }); - const isConnected = await checkConnection(peer); - - expect(isConnected).toBeTruthy(); - }); - - it('With connection options: defaultTTL', async () => { - await peer.start({ connectTo: nodes[0], defaultTtlMs: 1 }); - const isConnected = await checkConnection(peer); - - expect(isConnected).toBeFalsy(); - }); - }); - - it('Should successfully call identity on local peer', async function () { - await peer.start(); - - const res = await new Promise((resolve, reject) => { - const script = ` - (seq - (call %init_peer_id% ("op" "identity") ["test"] res) - (call %init_peer_id% ("callback" "callback") [res]) - ) - `; - const particle = peer.internals.createNewParticle(script); - - if (particle instanceof Error) { - return reject(particle.message); - } - - registerHandlersHelper(peer, particle, { - callback: { - callback: async (args: any) => { - const [res] = args; - resolve(res); - }, - }, - }); - - peer.internals.initiateParticle(particle, handleTimeout(reject)); - }); - - expect(res).toBe('test'); - }); - - it('Should throw correct message when calling non existing local service', async function () { - await peer.start({ connectTo: nodes[0] }); - - const res = callIncorrectService(peer); - - await expect(res).rejects.toMatchObject({ - message: expect.stringContaining( - `No handler has been registered for serviceId='incorrect' fnName='incorrect' args='[]'\"'`, - ), - // instruction: 'call %init_peer_id% ("incorrect" "incorrect") [] res', - }); - }); - - it('Should not crash if undefined is passed as a variable', async () => { - await peer.start(); - - const res = await new Promise((resolve, reject) => { - const script = ` - (seq - (call %init_peer_id% ("load" "arg") [] arg) - (seq - (call %init_peer_id% ("op" "identity") [arg] res) - (call %init_peer_id% ("callback" "callback") [res]) - ) - )`; - const particle = peer.internals.createNewParticle(script); - - if (particle instanceof Error) { - return reject(particle.message); - } - - registerHandlersHelper(peer, particle, { - load: { - arg: () => undefined, - }, - callback: { - callback: (args: any) => { - const [val] = args; - resolve(val); - }, - error: (args: any) => { - const [error] = args; - reject(error); - }, - }, - }); - - peer.internals.initiateParticle(particle, handleTimeout(reject)); - }); - - expect(res).toBe(null); - }); - - it('Should not crash if an error ocurred in user-defined handler', async () => { - await peer.start(); - - const promise = new Promise((_resolve, reject) => { - const script = ` - (xor - (call %init_peer_id% ("load" "arg") [] arg) - (call %init_peer_id% ("callback" "error") [%last_error%]) - )`; - const particle = peer.internals.createNewParticle(script); - - if (particle instanceof Error) { - return reject(particle.message); - } - - registerHandlersHelper(peer, particle, { - load: { - arg: () => { - throw new Error('my super custom error message'); - }, - }, - callback: { - error: (args: any) => { - const [error] = args; - reject(error); - }, - }, - }); - - peer.internals.initiateParticle(particle, handleTimeout(reject)); - }); - - await expect(promise).rejects.toMatchObject({ - message: expect.stringContaining('my super custom error message'), - }); - }); - - it('Should return error if particle is created on a stopped peer', async () => { - await peer.stop(); - const particle = peer.internals.createNewParticle(`(null)`); - - expect(particle instanceof Error).toBe(true); - }); - - it.skip('Should throw correct error when the client tries to send a particle not to the relay', async () => { - await peer.start({ connectTo: nodes[0] }); - - const promise = new Promise((resolve, reject) => { - const script = ` - (xor - (call "incorrect_peer_id" ("any" "service") []) - (call %init_peer_id% ("callback" "error") [%last_error%]) - )`; - const particle = peer.internals.createNewParticle(script); - - if (particle instanceof Error) { - return reject(particle.message); - } - - registerHandlersHelper(peer, particle, { - callback: { - error: (args: any) => { - const [error] = args; - reject(error); - }, - }, - }); - - peer.internals.initiateParticle(particle, doNothing); - }); - - await expect(promise).rejects.toMatch( - 'Particle is expected to be sent to only the single peer (relay which client is connected to)', - ); - }); -}); - -async function callIncorrectService(peer: FluencePeer): Promise { - return new Promise((resolve, reject) => { - const script = ` - (xor - (call %init_peer_id% ("incorrect" "incorrect") [] res) - (call %init_peer_id% ("callback" "error") [%last_error%]) - )`; - const particle = peer.internals.createNewParticle(script); - - if (particle instanceof Error) { - return reject(particle.message); - } - - registerHandlersHelper(peer, particle, { - callback: { - callback: (args: any) => { - resolve(args); - }, - error: (args: any) => { - const [error] = args; - reject(error); - }, - }, - }); - - peer.internals.initiateParticle(particle, handleTimeout(reject)); - }); -} diff --git a/packages/fluence-js/src/__test__/integration/sigService.spec.ts b/packages/fluence-js/src/__test__/integration/sigService.spec.ts deleted file mode 100644 index 3fa6c9cc6..000000000 --- a/packages/fluence-js/src/__test__/integration/sigService.spec.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { allowServiceFn } from '../../internal/builtins/securityGuard'; -import { FluencePeer, KeyPair } from '../../index'; -import { Sig } from '../../services'; -import { registerSig, registerDataProvider, callSig } from '../_aqua/sig-tests'; - -let peer: FluencePeer; - -describe('Sig service test suite', () => { - afterEach(async () => { - if (peer) { - await peer.stop(); - } - }); - - beforeEach(async () => { - peer = new FluencePeer(); - await peer.start(); - }); - - it('Use custom sig service, success path', async () => { - const customKeyPair = await KeyPair.randomEd25519(); - const customSig = new Sig(customKeyPair); - const data = [1, 2, 3, 4, 5]; - - registerSig(peer, 'CustomSig', customSig); - - registerDataProvider(peer, { - provide_data: () => { - return data; - }, - }); - - customSig.securityGuard = allowServiceFn('data', 'provide_data'); - - const result = await callSig(peer, 'CustomSig'); - - expect(result.success).toBe(true); - const isSigCorrect = await customSig.verify(result.signature as number[], data); - expect(isSigCorrect).toBe(true); - }); - - it('Use custom sig service, fail path', async () => { - const customKeyPair = await KeyPair.randomEd25519(); - const customSig = new Sig(customKeyPair); - const data = [1, 2, 3, 4, 5]; - - registerSig(peer, 'CustomSig', customSig); - - registerDataProvider(peer, { - provide_data: () => { - return data; - }, - }); - - customSig.securityGuard = allowServiceFn('wrong', 'wrong'); - - const result = await callSig(peer, 'CustomSig'); - }); - - it('Default sig service should be resolvable by peer id', async () => { - const sig = peer.getServices().sig; - - const data = [1, 2, 3, 4, 5]; - registerDataProvider(peer, { - provide_data: () => { - return data; - }, - }); - - const callAsSigRes = await callSig(peer, 'sig'); - const callAsPeerIdRes = await callSig(peer, peer.getStatus().peerId as string); - - expect(callAsSigRes.success).toBe(false); - expect(callAsPeerIdRes.success).toBe(false); - - sig.securityGuard = () => true; - - const callAsSigResAfterGuardChange = await callSig(peer, 'sig'); - const callAsPeerIdResAfterGuardChange = await callSig(peer, peer.getStatus().peerId as string); - - expect(callAsSigResAfterGuardChange.success).toBe(true); - expect(callAsPeerIdResAfterGuardChange.success).toBe(true); - - const isValid = await sig.verify(callAsSigResAfterGuardChange.signature as number[], data); - - expect(isValid).toBe(true); - }); -}); diff --git a/packages/fluence-js/src/__test__/integration/srv.spec.ts b/packages/fluence-js/src/__test__/integration/srv.spec.ts deleted file mode 100644 index 03500513e..000000000 --- a/packages/fluence-js/src/__test__/integration/srv.spec.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { Fluence, FluencePeer, KeyPair, setLogLevel } from '../../index'; - -import fs from 'fs/promises'; -import path from 'path'; -import { happy_path, service_removed, file_not_found, list_services, removing_non_exiting } from '../_aqua/srv-tests'; - -let peer: FluencePeer; - -describe('Srv service test suite', () => { - afterEach(async () => { - if (peer) { - await peer.stop(); - } - }); - - beforeEach(async () => { - peer = new FluencePeer(); - await peer.start(); - }); - - it('Use custom srv service, success path', async () => { - // arrange - const wasm = path.join(__dirname, './greeting.wasm'); - - // act - const res = await happy_path(peer, wasm); - - // assert - expect(res).toBe('Hi, test'); - }); - - it('List deployed services', async () => { - // arrange - const wasm = path.join(__dirname, './greeting.wasm'); - - // act - const res = await list_services(peer, wasm); - - // assert - expect(res).toHaveLength(3); - }); - - it('Correct error for removed services', async () => { - // arrange - const wasm = path.join(__dirname, './greeting.wasm'); - - // act - const res = await service_removed(peer, wasm); - - // assert - expect(res).toMatch('No handler has been registered for serviceId'); - }); - - it('Correct error for file not found', async () => { - // arrange - - // act - const res = await file_not_found(peer); - - // assert - expect(res).toMatch("ENOENT: no such file or directory, open '/random/incorrect/file'"); - }); - - it('4', async () => { - // arrange - - // act - const res = await removing_non_exiting(peer); - - // assert - expect(res).toMatch('Service with id random_id not found'); - }); -}); diff --git a/packages/fluence-js/src/__test__/unit/KeyPair.spec.ts b/packages/fluence-js/src/__test__/unit/KeyPair.spec.ts deleted file mode 100644 index 978f92ce0..000000000 --- a/packages/fluence-js/src/__test__/unit/KeyPair.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import * as bs58 from 'bs58'; -import * as base64 from 'base64-js'; -import { KeyPair } from '@fluencelabs/keypair'; - -describe('KeyPair tests', () => { - it('generate keypair from seed', async function () { - // arrange - const random = await KeyPair.randomEd25519(); - const privateKey = random.toEd25519PrivateKey(); - - // act - const keyPair = await KeyPair.fromEd25519SK(privateKey); - const privateKey2 = keyPair.toEd25519PrivateKey(); - - // assert - expect(privateKey).toStrictEqual(privateKey2); - }); - - it('create keypair from ed25519 private key', async function () { - // arrange - const rustSK = 'jDaxLJzYtzgwTMrELJCAqavtmx85ktQNfB2rLcK7MhH'; - const sk = bs58.decode(rustSK); - - // act - const keyPair = await KeyPair.fromEd25519SK(sk); - - // assert - const expectedPeerId = '12D3KooWH1W3VznVZ87JH4FwABK4mkntcspTVWJDta6c2xg9Pzbp'; - expect(keyPair.Libp2pPeerId.toB58String()).toStrictEqual(expectedPeerId); - }); - - it('create keypair from a seed phrase', async function () { - // arrange - const seedArray = new Uint8Array(32).fill(1); - - // act - const keyPair = await KeyPair.fromEd25519SK(seedArray); - - // assert - const expectedPeerId = '12D3KooWK99VoVxNE7XzyBwXEzW7xhK7Gpv85r9F3V3fyKSUKPH5'; - expect(keyPair.Libp2pPeerId.toB58String()).toStrictEqual(expectedPeerId); - }); -}); diff --git a/packages/fluence-js/src/__test__/unit/builtInHandler.spec.ts b/packages/fluence-js/src/__test__/unit/builtInHandler.spec.ts deleted file mode 100644 index d6722b3bb..000000000 --- a/packages/fluence-js/src/__test__/unit/builtInHandler.spec.ts +++ /dev/null @@ -1,335 +0,0 @@ -import { CallParams, CallServiceData } from '../../internal/commonTypes'; -import each from 'jest-each'; -import { builtInServices } from '../../internal/builtins/common'; -import { KeyPair } from '@fluencelabs/keypair'; -import { Sig, defaultSigGuard } from '../../internal/builtins/Sig'; -import { toUint8Array } from 'js-base64'; -import { allowServiceFn } from '../../internal/builtins/securityGuard'; - -const a10b20 = `{ - "a": 10, - "b": 20 -}`; - -const oneTwoThreeFour = `[ - 1, - 2, - 3, - 4 -]`; - -describe('Tests for default handler', () => { - // prettier-ignore - each` - serviceId | fnName | args | retCode | result - ${'op'} | ${'identity'} | ${[]} | ${0} | ${{}} - ${'op'} | ${'identity'} | ${[1]} | ${0} | ${1} - ${'op'} | ${'identity'} | ${[1, 2]} | ${1} | ${'identity accepts up to 1 arguments, received 2 arguments'} - - ${'op'} | ${'noop'} | ${[1, 2]} | ${0} | ${{}} - - ${'op'} | ${'array'} | ${[1, 2, 3]} | ${0} | ${[1, 2, 3]} - - ${'op'} | ${'array_length'} | ${[[1, 2, 3]]} | ${0} | ${3} - ${'op'} | ${'array_length'} | ${[]} | ${1} | ${'array_length accepts exactly one argument, found: 0'} - - ${'op'} | ${'concat'} | ${[[1, 2], [3, 4], [5, 6]]} | ${0} | ${[1, 2, 3, 4, 5, 6]} - ${'op'} | ${'concat'} | ${[[1, 2]]} | ${0} | ${[1, 2]} - ${'op'} | ${'concat'} | ${[]} | ${0} | ${[]} - ${'op'} | ${'concat'} | ${[1, [1, 2], 1]} | ${1} | ${"All arguments of 'concat' must be arrays: arguments 0, 2 are not"} - - ${'op'} | ${'string_to_b58'} | ${["test"]} | ${0} | ${"3yZe7d"} - ${'op'} | ${'string_to_b58'} | ${["test", 1]} | ${1} | ${"string_to_b58 accepts only one string argument"} - - ${'op'} | ${'string_from_b58'} | ${["3yZe7d"]} | ${0} | ${"test"} - ${'op'} | ${'string_from_b58'} | ${["3yZe7d", 1]} | ${1} | ${"string_from_b58 accepts only one string argument"} - - ${'op'} | ${'bytes_to_b58'} | ${[[116, 101, 115, 116]]} | ${0} | ${"3yZe7d"} - ${'op'} | ${'bytes_to_b58'} | ${[[116, 101, 115, 116], 1]} | ${1} | ${"bytes_to_b58 accepts only single argument: array of numbers"} - - ${'op'} | ${'bytes_from_b58'} | ${["3yZe7d"]} | ${0} | ${[116, 101, 115, 116]} - ${'op'} | ${'bytes_from_b58'} | ${["3yZe7d", 1]} | ${1} | ${"bytes_from_b58 accepts only one string argument"} - - ${'op'} | ${'sha256_string'} | ${["hello, world!"]} | ${0} | ${"QmVQ8pg6L1tpoWYeq6dpoWqnzZoSLCh7E96fCFXKvfKD3u"} - ${'op'} | ${'sha256_string'} | ${["hello, world!", true]} | ${0} | ${"84V7ZxLW7qKsx1Qvbd63BdGaHxUc3TfT2MBPqAXM7Wyu"} - ${'op'} | ${'sha256_string'} | ${[]} | ${1} | ${"sha256_string accepts 1-3 arguments, found: 0"} - - ${'op'} | ${'concat_strings'} | ${[]} | ${0} | ${""} - ${'op'} | ${'concat_strings'} | ${["a", "b", "c"]} | ${0} | ${"abc"} - - ${'peer'} | ${'timeout'} | ${[200, []]} | ${0} | ${[]}} - ${'peer'} | ${'timeout'} | ${[200, ['test']]} | ${0} | ${['test']}} - ${'peer'} | ${'timeout'} | ${[]} | ${1} | ${'timeout accepts exactly two arguments: timeout duration in ms and a message string'}} - ${'peer'} | ${'timeout'} | ${[200, 'test', 1]} | ${1} | ${'timeout accepts exactly two arguments: timeout duration in ms and a message string'}} - - ${'debug'} | ${'stringify'} | ${[]} | ${0} | ${'""'}} - ${'debug'} | ${'stringify'} | ${[{a: 10, b: 20}]} | ${0} | ${a10b20}} - ${'debug'} | ${'stringify'} | ${[1, 2, 3, 4]} | ${0} | ${oneTwoThreeFour}} - - ${'math'} | ${'add'}" | ${[2, 2]} | ${0} | ${4} - ${'math'} | ${'add'}" | ${[2]} | ${1} | ${"Expected 2 argument(s). Got 1"} - - ${'math'} | ${'sub'}" | ${[2, 2]} | ${0} | ${0} - ${'math'} | ${'sub'}" | ${[2, 3]} | ${0} | ${-1} - - ${'math'} | ${'mul'}" | ${[2, 2]} | ${0} | ${4} - ${'math'} | ${'mul'}" | ${[2, 0]} | ${0} | ${0} - ${'math'} | ${'mul'}" | ${[2, -1]} | ${0} | ${-2} - - ${'math'} | ${'fmul'}" | ${[10, 0.66]} | ${0} | ${6} - ${'math'} | ${'fmul'}" | ${[0.5, 0.5]} | ${0} | ${0} - ${'math'} | ${'fmul'}" | ${[100.5, 0.5]} | ${0} | ${50} - - ${'math'} | ${'div'}" | ${[2, 2]} | ${0} | ${1} - ${'math'} | ${'div'}" | ${[2, 3]} | ${0} | ${0} - ${'math'} | ${'div'}" | ${[10, 5]} | ${0} | ${2} - - ${'math'} | ${'rem'}" | ${[10, 3]} | ${0} | ${1} - - ${'math'} | ${'pow'}" | ${[2, 2]} | ${0} | ${4} - ${'math'} | ${'pow'}" | ${[2, 0]} | ${0} | ${1} - - ${'math'} | ${'log'}" | ${[2, 2]} | ${0} | ${1} - ${'math'} | ${'log'}" | ${[2, 4]} | ${0} | ${2} - - ${'cmp'} | ${'gt'}" | ${[2, 4]} | ${0} | ${false} - ${'cmp'} | ${'gte'}" | ${[2, 4]} | ${0} | ${false} - ${'cmp'} | ${'gte'}" | ${[4, 2]} | ${0} | ${true} - ${'cmp'} | ${'gte'}" | ${[2, 2]} | ${0} | ${true} - - ${'cmp'} | ${'lt'}" | ${[2, 4]} | ${0} | ${true} - ${'cmp'} | ${'lte'}" | ${[2, 4]} | ${0} | ${true} - ${'cmp'} | ${'lte'}" | ${[4, 2]} | ${0} | ${false} - ${'cmp'} | ${'lte'}" | ${[2, 2]} | ${0} | ${true} - - ${'cmp'} | ${'cmp'}" | ${[2, 4]} | ${0} | ${-1} - ${'cmp'} | ${'cmp'}" | ${[2, -4]} | ${0} | ${1} - ${'cmp'} | ${'cmp'}" | ${[2, 2]} | ${0} | ${0} - - ${'array'} | ${'sum'}" | ${[[1, 2, 3]]} | ${0} | ${6} - ${'array'} | ${'dedup'}" | ${[["a", "a", "b", "c", "a", "b", "c"]]} | ${0} | ${["a", "b", "c"]} - ${'array'} | ${'intersect'}" | ${[["a", "b", "c"], ["c", "b", "d"]]} | ${0} | ${["b", "c"]} - ${'array'} | ${'diff'}" | ${[["a", "b", "c"], ["c", "b", "d"]]} | ${0} | ${["a"]} - ${'array'} | ${'sdiff'}" | ${[["a", "b", "c"], ["c", "b", "d"]]} | ${0} | ${["a", "d"]} - - ${'json'} | ${'obj'}" | ${["a", 10, "b", "string", "c", null]} | ${0} | ${{a: 10, b: "string", c: null}} - ${'json'} | ${'obj'}" | ${["a", 10, "b", "string", "c"]} | ${1} | ${"Expected even number of argument(s). Got 5"} - ${'json'} | ${'obj'}" | ${[]} | ${0} | ${{}} - - ${'json'} | ${'put'}" | ${[{}, "a", 10]} | ${0} | ${{a: 10}} - ${'json'} | ${'put'}" | ${[{b: 11}, "a", 10]} | ${0} | ${{a: 10, b: 11}} - ${'json'} | ${'put'}" | ${["a", "a", 11]} | ${1} | ${"Argument 0 expected to be of type object, Got string"} - ${'json'} | ${'put'}" | ${[{}, "a", 10, "b", 20]} | ${1} | ${"Expected 3 argument(s). Got 5"} - ${'json'} | ${'put'}" | ${[{}]} | ${1} | ${"Expected 3 argument(s). Got 1"} - - ${'json'} | ${'puts'}" | ${[{}, "a", 10]} | ${0} | ${{a: 10}} - ${'json'} | ${'puts'}" | ${[{b: 11}, "a", 10]} | ${0} | ${{a: 10, b: 11}} - ${'json'} | ${'puts'}" | ${[{}, "a", 10, "b", "string", "c", null]} | ${0} | ${{a: 10, b: "string", c: null}} - ${'json'} | ${'puts'}" | ${[{x: "text"}, "a", 10, "b", "string"]} | ${0} | ${{a: 10, b: "string", x: "text"}} - ${'json'} | ${'puts'}" | ${[{}]} | ${1} | ${"Expected more than 3 argument(s). Got 1"} - ${'json'} | ${'puts'}" | ${["a", "a", 11]} | ${1} | ${"Argument 0 expected to be of type object, Got string"} - - ${'json'} | ${'stringify'}" | ${[{a: 10, b: "string", c: null}]} | ${0} | ${"{\"a\":10,\"b\":\"string\",\"c\":null}"} - ${'json'} | ${'stringify'}" | ${[1]} | ${1} | ${"Argument 0 expected to be of type object, Got number"} - ${'json'} | ${'parse'}" | ${["{\"a\":10,\"b\":\"string\",\"c\":null}"]} | ${0} | ${{a: 10, b: "string", c: null}} - ${'json'} | ${'parse'}" | ${["incorrect"]} | ${1} | ${"Unexpected token i in JSON at position 0"} - ${'json'} | ${'parse'}" | ${[10]} | ${1} | ${"Argument 0 expected to be of type string, Got number"} - - `.test( - // - '$fnName with $args expected retcode: $retCode and result: $result', - async ({ serviceId, fnName, args, retCode, result }) => { - // arrange - const req: CallServiceData = { - serviceId: serviceId, - fnName: fnName, - args: args, - tetraplets: [], - particleContext: { - particleId: 'some', - initPeerId: 'init peer id', - timestamp: 595951200, - ttl: 595961200, - signature: 'sig', - }, - }; - - // act - const fn = builtInServices[req.serviceId][req.fnName]; - const res = await fn(req); - - // assert - expect(res).toMatchObject({ - retCode: retCode, - result: result, - }); - }, - ); - - it('should return correct error message for identiy service', async () => { - // arrange - const req: CallServiceData = { - serviceId: 'peer', - fnName: 'identify', - args: [], - tetraplets: [], - particleContext: { - particleId: 'some', - initPeerId: 'init peer id', - timestamp: 595951200, - ttl: 595961200, - signature: 'sig', - }, - }; - - // act - const fn = builtInServices[req.serviceId][req.fnName]; - const res = await fn(req); - - // assert - expect(res).toMatchObject({ - retCode: 0, - result: { - external_addresses: [], - node_version: expect.stringContaining('js'), - air_version: expect.stringContaining('js'), - }, - }); - }); -}); - -const key = '+cmeYlZKj+MfSa9dpHV+BmLPm6wq4inGlsPlQ1GvtPk='; - -const context = (async () => { - const keyBytes = toUint8Array(key); - const kp = await KeyPair.fromEd25519SK(keyBytes); - const res = { - peerKeyPair: kp, - peerId: kp.Libp2pPeerId.toB58String(), - }; - return res; -})(); - -const testData = [1, 2, 3, 4, 5, 6, 7, 9, 10]; - -// signature produced by KeyPair created from key above (`key` variable) -const testDataSig = [ - 224, 104, 245, 206, 140, 248, 27, 72, 68, 133, 111, 10, 164, 197, 242, 132, 107, 77, 224, 67, 99, 106, 76, 29, 144, - 121, 122, 169, 36, 173, 58, 80, 170, 102, 137, 253, 157, 247, 168, 87, 162, 223, 188, 214, 203, 220, 52, 246, 29, - 86, 77, 71, 224, 248, 16, 213, 254, 75, 78, 239, 243, 222, 241, 15, -]; - -// signature produced by KeyPair created from some random KeyPair -const testDataWrongSig = [ - 116, 247, 189, 118, 236, 53, 147, 123, 219, 75, 176, 105, 101, 108, 233, 137, 97, 14, 146, 132, 252, 70, 51, 153, - 237, 167, 156, 150, 36, 90, 229, 108, 166, 231, 255, 137, 8, 246, 125, 0, 213, 150, 83, 196, 237, 221, 131, 159, - 157, 159, 25, 109, 95, 160, 181, 65, 254, 238, 47, 156, 240, 151, 58, 14, -]; - -const makeTetraplet = (initPeerId: string, serviceId?: string, fnName?: string): CallParams<'data'> => { - return { - initPeerId: initPeerId, - tetraplets: { - data: [ - { - function_name: fnName, - service_id: serviceId, - }, - ], - }, - } as any; -}; - -describe('Sig service tests', () => { - it('sig.sign should create the correct signature', async () => { - const ctx = await context; - const sig = new Sig(ctx.peerKeyPair); - - const res = await sig.sign(testData, makeTetraplet(ctx.peerId)); - - expect(res.success).toBe(true); - expect(res.signature).toStrictEqual(testDataSig); - }); - - it('sig.verify should return true for the correct signature', async () => { - const ctx = await context; - const sig = new Sig(ctx.peerKeyPair); - - const res = await sig.verify(testDataSig, testData); - - expect(res).toBe(true); - }); - - it('sig.verify should return false for the incorrect signature', async () => { - const ctx = await context; - const sig = new Sig(ctx.peerKeyPair); - - const res = await sig.verify(testDataWrongSig, testData); - - expect(res).toBe(false); - }); - - it('sign-verify call chain should work', async () => { - const ctx = await context; - const sig = new Sig(ctx.peerKeyPair); - - const signature = await sig.sign(testData, makeTetraplet(ctx.peerId)); - const res = await sig.verify(signature.signature as number[], testData); - - expect(res).toBe(true); - }); - - it('sig.sign with defaultSigGuard should work for correct callParams', async () => { - const ctx = await context; - const sig = new Sig(ctx.peerKeyPair); - sig.securityGuard = defaultSigGuard(ctx.peerId); - - const signature = await sig.sign(testData, makeTetraplet(ctx.peerId, 'registry', 'get_route_bytes')); - - await expect(signature).toBeDefined(); - }); - - it('sig.sign with defaultSigGuard should not allow particles initiated from incorrect service', async () => { - const ctx = await context; - const sig = new Sig(ctx.peerKeyPair); - sig.securityGuard = defaultSigGuard(ctx.peerId); - - const res = await sig.sign(testData, makeTetraplet(ctx.peerId, 'other_service', 'other_fn')); - - await expect(res.success).toBe(false); - await expect(res.error).toBe('Security guard validation failed'); - }); - - it('sig.sign with defaultSigGuard should not allow particles initiated from other peers', async () => { - const ctx = await context; - const sig = new Sig(ctx.peerKeyPair); - sig.securityGuard = defaultSigGuard(ctx.peerId); - - const res = await sig.sign( - testData, - makeTetraplet((await KeyPair.randomEd25519()).getPeerId(), 'registry', 'get_key_bytes'), - ); - - await expect(res.success).toBe(false); - await expect(res.error).toBe('Security guard validation failed'); - }); - - it('changing securityGuard should work', async () => { - const ctx = await context; - const sig = new Sig(ctx.peerKeyPair); - sig.securityGuard = allowServiceFn('test', 'test'); - - const successful1 = await sig.sign(testData, makeTetraplet(ctx.peerId, 'test', 'test')); - const unSuccessful1 = await sig.sign(testData, makeTetraplet(ctx.peerId, 'wrong', 'wrong')); - - sig.securityGuard = allowServiceFn('wrong', 'wrong'); - - const successful2 = await sig.sign(testData, makeTetraplet(ctx.peerId, 'wrong', 'wrong')); - const unSuccessful2 = await sig.sign(testData, makeTetraplet(ctx.peerId, 'test', 'test')); - - expect(successful1.success).toBe(true); - expect(successful2.success).toBe(true); - expect(unSuccessful1.success).toBe(false); - expect(unSuccessful2.success).toBe(false); - }); -}); diff --git a/packages/fluence-js/src/__test__/unit/compiler/v2.spec.ts b/packages/fluence-js/src/__test__/unit/compiler/v2.spec.ts deleted file mode 100644 index 8fed09562..000000000 --- a/packages/fluence-js/src/__test__/unit/compiler/v2.spec.ts +++ /dev/null @@ -1,37 +0,0 @@ -import each from 'jest-each'; - -import { Fluence, FluencePeer } from '../../..'; -import { forTests } from '../../../internal/compilerSupport/v2'; - -const peer = new FluencePeer(); -const cfg = { ttl: 1000 }; - -describe('Compiler support tests', () => { - each` - rawArgs | numArgs | expectedArgs | expectedConfig | isExpectedPeerDefault - ${[]} | ${0} | ${[]} | ${undefined} | ${true} - ${[cfg]} | ${0} | ${[]} | ${cfg} | ${true} - ${[peer]} | ${0} | ${[]} | ${undefined} | ${false} - ${[peer, cfg]} | ${0} | ${[]} | ${cfg} | ${false} - ${['a']} | ${1} | ${['a']} | ${undefined} | ${true} - ${['a', cfg]} | ${1} | ${['a']} | ${cfg} | ${true} - ${[peer, 'a']} | ${1} | ${['a']} | ${undefined} | ${false} - ${[peer, 'a', cfg]} | ${1} | ${['a']} | ${cfg} | ${false} -`.test( - // - 'raw rawArgs: $rawArgs, numArgs: $numArgs. expected args: $expectedArgs, config: $expectedConfig, default peer?: $isExpectedPeerDefault', - ({ rawArgs, numArgs, expectedArgs, expectedConfig, isExpectedPeerDefault }) => { - // arrange - const testFn = forTests.extractFunctionArgs; - - // act - const { peer, config, args } = testFn(rawArgs, numArgs); - const isActualPeerDefault = Fluence.getPeer() === peer; - - // assert - expect(config).toStrictEqual(expectedConfig); - expect(args).toStrictEqual(expectedArgs); - expect(isActualPeerDefault).toStrictEqual(isExpectedPeerDefault); - }, - ); -}); diff --git a/packages/fluence-js/src/__test__/util.ts b/packages/fluence-js/src/__test__/util.ts deleted file mode 100644 index 1c22e6b96..000000000 --- a/packages/fluence-js/src/__test__/util.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { FluencePeer } from '../index'; -import { Particle } from '../internal/Particle'; -import { MakeServiceCall } from '../internal/utils'; - -export const registerHandlersHelper = ( - peer: FluencePeer, - particle: Particle, - handlers: Record>, -) => { - Object.entries(handlers).forEach(([serviceId, service]) => { - Object.entries(service).forEach(([fnName, fn]) => { - peer.internals.regHandler.forParticle(particle.id, serviceId, fnName, MakeServiceCall(fn)); - }); - }); -}; diff --git a/packages/fluence-js/src/index.ts b/packages/fluence-js/src/index.ts deleted file mode 100644 index ee68fe8e4..000000000 --- a/packages/fluence-js/src/index.ts +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2020 Fluence Labs Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import log, { LogLevelDesc } from 'loglevel'; -export { KeyPair } from '@fluencelabs/keypair'; - -import { FluencePeer, PeerConfig } from './internal/FluencePeer'; - -export { PeerStatus } from './internal/FluencePeer'; -export { FluencePeer, PeerConfig } from './internal/FluencePeer'; -export { MarineLoglevel as AvmLoglevel } from './internal/utils'; -export { PeerIdB58, CallParams } from './internal/commonTypes'; -export { loadWasmFromFileSystem, loadWasmFromNpmPackage, loadWasmFromServer } from '@fluencelabs/marine-js'; - -export const setLogLevel = (level: LogLevelDesc) => { - log.setLevel(level); -}; - -log.setDefaultLevel('WARN'); - -const defaultPeer = new FluencePeer(); - -/** - * Public interface to Fluence JS - */ -export const Fluence = { - /** - * Initializes the default peer: starts the Aqua VM, initializes the default call service handlers - * and (optionally) connect to the Fluence network - * @param config - object specifying peer configuration - */ - start: (config?: PeerConfig): Promise => { - return defaultPeer.start(config); - }, - - /** - * Un-initializes the default peer: stops all the underlying workflows, stops the Aqua VM - * and disconnects from the Fluence network - */ - stop: (): Promise => { - return defaultPeer.stop(); - }, - - /** - * Get the default peer's status - * @returns Default peer's status - */ - getStatus: () => { - return defaultPeer.getStatus(); - }, - - /** - * Get the default peer instance - * @returns the default peer instance - */ - getPeer: (): FluencePeer => { - return defaultPeer; - }, - - /** - * Registers marine service within the default Fluence peer from wasm file. - * Following helper functions can be used to load wasm files: - * * loadWasmFromFileSystem - * * loadWasmFromNpmPackage - * * loadWasmFromServer - * @param wasm - buffer with the wasm file for service - * @param serviceId - the service id by which the service can be accessed in aqua - */ - registerMarineService: (wasm: SharedArrayBuffer | Buffer, serviceId: string): Promise => { - return defaultPeer.registerMarineService(wasm, serviceId); - }, - - /** - * Removes the specified marine service from the default Fluence peer - * @param serviceId - the service id to remove - */ - removeMarineService: (serviceId: string): void => { - defaultPeer.removeMarineService(serviceId); - }, -}; diff --git a/packages/fluence-js/src/internal/Buffer.ts b/packages/fluence-js/src/internal/Buffer.ts deleted file mode 100644 index 13528d814..000000000 --- a/packages/fluence-js/src/internal/Buffer.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2022 Fluence Labs Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { isBrowser } from 'browser-or-node'; -import { Buffer as BufferPolyfill } from 'buffer'; - -export default isBrowser ? BufferPolyfill : Buffer; diff --git a/packages/fluence-js/src/internal/_aqua/node-utils.ts b/packages/fluence-js/src/internal/_aqua/node-utils.ts deleted file mode 100644 index 0723e2831..000000000 --- a/packages/fluence-js/src/internal/_aqua/node-utils.ts +++ /dev/null @@ -1,80 +0,0 @@ -/** - * - * This file is auto-generated. Do not edit manually: changes may be erased. - * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. - * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues - * Aqua version: 0.7.7-362 - * - */ -import { FluencePeer } from '../..'; -import type { CallParams$$ } from '../../internal/compilerSupport/v4'; -import { registerService$$ } from '../../internal/compilerSupport/v4'; - -// Services - -export interface NodeUtilsDef { - read_file: ( - path: string, - callParams: CallParams$$<'path'>, - ) => - | { content: string | null; error: string | null; success: boolean } - | Promise<{ content: string | null; error: string | null; success: boolean }>; -} -export function registerNodeUtils(service: NodeUtilsDef): void; -export function registerNodeUtils(serviceId: string, service: NodeUtilsDef): void; -export function registerNodeUtils(peer: FluencePeer, service: NodeUtilsDef): void; -export function registerNodeUtils(peer: FluencePeer, serviceId: string, service: NodeUtilsDef): void; - -export function registerNodeUtils(...args: any) { - registerService$$(args, { - defaultServiceId: 'node_utils', - functions: { - tag: 'labeledProduct', - fields: { - read_file: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: { - path: { - tag: 'scalar', - name: 'string', - }, - }, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'struct', - name: 'ReadFileResult', - fields: { - content: { - tag: 'option', - type: { - tag: 'scalar', - name: 'string', - }, - }, - error: { - tag: 'option', - type: { - tag: 'scalar', - name: 'string', - }, - }, - success: { - tag: 'scalar', - name: 'bool', - }, - }, - }, - ], - }, - }, - }, - }, - }); -} - -// Functions diff --git a/packages/fluence-js/src/internal/_aqua/services.ts b/packages/fluence-js/src/internal/_aqua/services.ts deleted file mode 100644 index 89309c4f2..000000000 --- a/packages/fluence-js/src/internal/_aqua/services.ts +++ /dev/null @@ -1,138 +0,0 @@ -/** - * - * This file is auto-generated. Do not edit manually: changes may be erased. - * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. - * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues - * Aqua version: 0.7.7-362 - * - */ -import { FluencePeer } from '../..'; -import type { CallParams$$ } from '../../internal/compilerSupport/v4'; -import { registerService$$ } from '../../internal/compilerSupport/v4'; - -// Services - -export interface SigDef { - get_peer_id: (callParams: CallParams$$) => string | Promise; - sign: ( - data: number[], - callParams: CallParams$$<'data'>, - ) => - | { error: string | null; signature: number[] | null; success: boolean } - | Promise<{ error: string | null; signature: number[] | null; success: boolean }>; - verify: ( - signature: number[], - data: number[], - callParams: CallParams$$<'signature' | 'data'>, - ) => boolean | Promise; -} -export function registerSig(service: SigDef): void; -export function registerSig(serviceId: string, service: SigDef): void; -export function registerSig(peer: FluencePeer, service: SigDef): void; -export function registerSig(peer: FluencePeer, serviceId: string, service: SigDef): void; - -export function registerSig(...args: any) { - registerService$$(args, { - defaultServiceId: 'sig', - functions: { - tag: 'labeledProduct', - fields: { - get_peer_id: { - tag: 'arrow', - domain: { - tag: 'nil', - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'scalar', - name: 'string', - }, - ], - }, - }, - sign: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: { - data: { - tag: 'array', - type: { - tag: 'scalar', - name: 'u8', - }, - }, - }, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'struct', - name: 'SignResult', - fields: { - error: { - tag: 'option', - type: { - tag: 'scalar', - name: 'string', - }, - }, - signature: { - tag: 'option', - type: { - tag: 'array', - type: { - tag: 'scalar', - name: 'u8', - }, - }, - }, - success: { - tag: 'scalar', - name: 'bool', - }, - }, - }, - ], - }, - }, - verify: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: { - signature: { - tag: 'array', - type: { - tag: 'scalar', - name: 'u8', - }, - }, - data: { - tag: 'array', - type: { - tag: 'scalar', - name: 'u8', - }, - }, - }, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'scalar', - name: 'bool', - }, - ], - }, - }, - }, - }, - }); -} - -// Functions diff --git a/packages/fluence-js/src/internal/_aqua/single-module-srv.ts b/packages/fluence-js/src/internal/_aqua/single-module-srv.ts deleted file mode 100644 index 9788fc75e..000000000 --- a/packages/fluence-js/src/internal/_aqua/single-module-srv.ts +++ /dev/null @@ -1,137 +0,0 @@ -/** - * - * This file is auto-generated. Do not edit manually: changes may be erased. - * Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. - * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues - * Aqua version: 0.7.7-362 - * - */ -import { FluencePeer } from '../..'; -import type { CallParams$$ } from '../../internal/compilerSupport/v4'; -import { registerService$$ } from '../../internal/compilerSupport/v4'; - -// Services - -export interface SrvDef { - create: ( - wasm_b64_content: string, - callParams: CallParams$$<'wasm_b64_content'>, - ) => - | { error: string | null; service_id: string | null; success: boolean } - | Promise<{ error: string | null; service_id: string | null; success: boolean }>; - list: (callParams: CallParams$$) => string[] | Promise; - remove: ( - service_id: string, - callParams: CallParams$$<'service_id'>, - ) => { error: string | null; success: boolean } | Promise<{ error: string | null; success: boolean }>; -} -export function registerSrv(service: SrvDef): void; -export function registerSrv(serviceId: string, service: SrvDef): void; -export function registerSrv(peer: FluencePeer, service: SrvDef): void; -export function registerSrv(peer: FluencePeer, serviceId: string, service: SrvDef): void; - -export function registerSrv(...args: any) { - registerService$$(args, { - defaultServiceId: 'single_module_srv', - functions: { - tag: 'labeledProduct', - fields: { - create: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: { - wasm_b64_content: { - tag: 'scalar', - name: 'string', - }, - }, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'struct', - name: 'ServiceCreationResult', - fields: { - error: { - tag: 'option', - type: { - tag: 'scalar', - name: 'string', - }, - }, - service_id: { - tag: 'option', - type: { - tag: 'scalar', - name: 'string', - }, - }, - success: { - tag: 'scalar', - name: 'bool', - }, - }, - }, - ], - }, - }, - list: { - tag: 'arrow', - domain: { - tag: 'nil', - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'array', - type: { - tag: 'scalar', - name: 'string', - }, - }, - ], - }, - }, - remove: { - tag: 'arrow', - domain: { - tag: 'labeledProduct', - fields: { - service_id: { - tag: 'scalar', - name: 'string', - }, - }, - }, - codomain: { - tag: 'unlabeledProduct', - items: [ - { - tag: 'struct', - name: 'RemoveResult', - fields: { - error: { - tag: 'option', - type: { - tag: 'scalar', - name: 'string', - }, - }, - success: { - tag: 'scalar', - name: 'bool', - }, - }, - }, - ], - }, - }, - }, - }, - }); -} - -// Functions diff --git a/packages/fluence-js/src/internal/compilerSupport/v2.ts b/packages/fluence-js/src/internal/compilerSupport/v2.ts deleted file mode 100644 index 26a8b27e3..000000000 --- a/packages/fluence-js/src/internal/compilerSupport/v2.ts +++ /dev/null @@ -1,553 +0,0 @@ -/* - * Copyright 2021 Fluence Labs Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { SecurityTetraplet } from '@fluencelabs/avm'; -import { match } from 'ts-pattern'; -import { CallParams, Fluence, FluencePeer } from '../../index'; -import { CallServiceData, GenericCallServiceHandler, CallServiceResult, ResultCodes } from '../commonTypes'; -import { Particle } from '../Particle'; - -export { FluencePeer } from '../FluencePeer'; -export { CallParams } from '../commonTypes'; - -/** - * Represents the Aqua Option type - */ -type OptionalType = { - /** - * Type descriptor. Used for pattern-matching - */ - tag: 'optional'; -}; - -/** - * Represents the void type for functions and callbacks with no return value - */ -type VoidType = { - /** - * Type descriptor. Used for pattern-matching - */ - tag: 'void'; -}; - -/** - * Represents all types other than Optional, Void, Callback and MultiReturn - */ -type PrimitiveType = { - /** - * Type descriptor. Used for pattern-matching - */ - tag: 'primitive'; -}; - -/** - * Represents callbacks used in Aqua function arguments (`func` instruction) - */ -type CallbackType = { - /** - * Type descriptor. Used for pattern-matching - */ - tag: 'callback'; - - /** - * Callback definition - */ - callback: CallbackDef; -}; - -/** - * Represents the return type for functions which return multiple values - */ -type MultiReturnType = { - /** - * Type descriptor. Used for pattern-matching - */ - tag: 'multiReturn'; - - /** - * The description of types of the return values: Array of either primitive or optional types - */ - returnItems: Array; -}; - -interface ArgDef { - /** - * The name of the argument in Aqua language - */ - name: string; - - /** - * The type of the argument - */ - argType: ArgType; -} - -interface CallbackDef { - /** - * Callback argument definitions: the list of ArgDefs - */ - argDefs: Array>; - - /** - * Definition of the return type of callback - */ - returnType: ReturnType; -} - -interface FunctionBodyDef - extends CallbackDef< - // force new line - OptionalType | PrimitiveType, - VoidType | OptionalType | PrimitiveType - > { - /** - * The name of the function in Aqua language - */ - functionName: string; -} - -/** - * Definition of function (`func` instruction) generated by the Aqua compiler - */ -interface FunctionCallDef - extends CallbackDef< - OptionalType | PrimitiveType | CallbackType, - VoidType | OptionalType | PrimitiveType | MultiReturnType - > { - /** - * The name of the function in Aqua language - */ - functionName: string; - - /** - * Names of the different entities used in generated air script - */ - names: { - /** - * The name of the relay variable - */ - relay: string; - - /** - * The name of the serviceId used load variables at the beginning of the script - */ - getDataSrv: string; - - /** - * The name of serviceId is used to execute callbacks for the current particle - */ - callbackSrv: string; - - /** - * The name of the serviceId which is called to propagate return value to the generated function caller - */ - responseSrv: string; - - /** - * The name of the functionName which is called to propagate return value to the generated function caller - */ - responseFnName: string; - - /** - * The name of the serviceId which is called to report errors to the generated function caller - */ - errorHandlingSrv: string; - - /** - * The name of the functionName which is called to report errors to the generated function caller - */ - errorFnName: string; - }; -} - -/** - * Definition of service registration function (`service` instruction) generated by the Aqua compiler - */ -interface ServiceDef { - /** - * Default service id. If the service has no default id the value should be undefined - */ - defaultServiceId?: string; - - /** - * List of functions which the service consists of - */ - functions: Array; -} - -/** - * Options to configure Aqua function execution - */ -export interface FnConfig { - /** - * Sets the TTL (time to live) for particle responsible for the function execution - * If the option is not set the default TTL from FluencePeer config is used - */ - ttl?: number; -} - -/** - * Convenience function to support Aqua `func` generation backend - * The compiler only need to generate a call the function and provide the corresponding definitions and the air script - * - * @param rawFnArgs - raw arguments passed by user to the generated function - * @param def - function definition generated by the Aqua compiler - * @param script - air script with function execution logic generated by the Aqua compiler - */ -export function callFunction(rawFnArgs: Array, def: FunctionCallDef, script: string) { - const { args, peer, config } = extractFunctionArgs(rawFnArgs, def.argDefs.length); - - if (args.length !== def.argDefs.length) { - throw new Error('Incorrect number of arguments. Expecting ${def.argDefs.length}'); - } - - const promise = new Promise((resolve, reject) => { - const particle = peer.internals.createNewParticle(script, config?.ttl); - - if (particle instanceof Error) { - return reject(particle.message); - } - - for (let i = 0; i < def.argDefs.length; i++) { - const argDef = def.argDefs[i]; - const arg = args[i]; - - const [serviceId, fnName, cb] = match(argDef.argType) - // for callback arguments we are registering particle-specific callback which executes the passed function - .with({ tag: 'callback' }, (callbackDef) => { - const fn = async (req: CallServiceData): Promise => { - const args = convertArgsFromReqToUserCall(req, callbackDef.callback.argDefs); - // arg is function at this point - const result = await arg.apply(null, args); - let res; - switch (callbackDef.callback.returnType.tag) { - case 'void': - res = {}; - break; - case 'primitive': - res = result; - break; - case 'optional': - res = tsToAquaOpt(result); - break; - } - return { - retCode: ResultCodes.success, - result: res, - }; - }; - return [def.names.callbackSrv, argDef.name, fn] as const; - }) - // for optional types we are converting value to array representation in air - .with({ tag: 'optional' }, () => { - const fn = (req: CallServiceData): CallServiceResult => { - // arg is optional at this point - const res = tsToAquaOpt(arg); - return { - retCode: ResultCodes.success, - result: res, - }; - }; - return [def.names.getDataSrv, argDef.name, fn] as const; - }) - // for primitive types wre are simply passing the value - .with({ tag: 'primitive' }, () => { - // arg is primitive at this point - const fn = (req: CallServiceData): CallServiceResult => ({ - retCode: ResultCodes.success, - result: arg, - }); - return [def.names.getDataSrv, argDef.name, fn] as const; - }) - .exhaustive(); - - // registering handlers for every argument of the function - peer.internals.regHandler.forParticle(particle.id, serviceId, fnName, cb); - } - - // registering handler for function response - peer.internals.regHandler.forParticle(particle.id, def.names.responseSrv, def.names.responseFnName, (req) => { - const userFunctionReturn = match(def.returnType) - .with({ tag: 'primitive' }, () => req.args[0]) - .with({ tag: 'optional' }, () => aquaOptToTs(req.args[0])) - .with({ tag: 'void' }, () => undefined) - .with({ tag: 'multiReturn' }, (mr) => { - return mr.returnItems.map((x, index) => { - return match(x) - .with({ tag: 'optional' }, () => aquaOptToTs(req.args[index])) - .with({ tag: 'primitive' }, () => req.args[index]) - .exhaustive(); - }); - }) - .exhaustive(); - - setTimeout(() => { - resolve(userFunctionReturn); - }, 0); - - return { - retCode: ResultCodes.success, - result: {}, - }; - }); - - // registering handler for injecting relay variable - peer.internals.regHandler.forParticle(particle.id, def.names.getDataSrv, def.names.relay, (req) => { - return { - retCode: ResultCodes.success, - result: peer.getStatus().relayPeerId, - }; - }); - - // registering handler for error reporting - peer.internals.regHandler.forParticle(particle.id, def.names.errorHandlingSrv, def.names.errorFnName, (req) => { - const [err, _] = req.args; - setTimeout(() => { - reject(err); - }, 0); - return { - retCode: ResultCodes.success, - result: {}, - }; - }); - - peer.internals.initiateParticle(particle, (stage) => { - // If function is void, then it's completed when one of the two conditions is met: - // 1. The particle is sent to the network (state 'sent') - // 2. All CallRequests are executed, e.g., all variable loading and local function calls are completed (state 'localWorkDone') - if (def.returnType.tag === 'void' && (stage.stage === 'sent' || stage.stage === 'localWorkDone')) { - resolve(undefined); - } - - if (stage.stage === 'sendingError') { - reject(`Could not send particle for ${def.functionName}: not connected (particle id: ${particle.id})`); - } - - if (stage.stage === 'expired') { - reject(`Request timed out after ${particle.ttl} for ${def.functionName} (particle id: ${particle.id})`); - } - - if (stage.stage === 'interpreterError') { - reject( - `Script interpretation failed for ${def.functionName}: ${stage.errorMessage} (particle id: ${particle.id})`, - ); - } - }); - }); - - return promise; -} - -/** - * Convenience function to support Aqua `service` generation backend - * The compiler only need to generate a call the function and provide the corresponding definitions and the air script - * - * @param args - raw arguments passed by user to the generated function - * @param def - service definition generated by the Aqua compiler - */ -export function registerService(args: any[], def: ServiceDef) { - const { peer, service, serviceId } = extractRegisterServiceArgs(args, def.defaultServiceId); - - if (!peer.getStatus().isInitialized) { - throw new Error( - 'Could not register the service because the peer is not initialized. Are you passing the wrong peer to the register function?', - ); - } - - // Checking for missing keys - const requiredKeys = def.functions.map((x) => x.functionName); - const incorrectServiceDefinitions = requiredKeys.filter((f) => !(f in service)); - if (!!incorrectServiceDefinitions.length) { - throw new Error( - `Error registering service ${serviceId}: missing functions: ` + - incorrectServiceDefinitions.map((d) => "'" + d + "'").join(', '), - ); - } - - for (let singleFunction of def.functions) { - // The function has type of (arg1, arg2, arg3, ... , callParams) => CallServiceResultType | void - // Account for the fact that user service might be defined as a class - .bind(...) - const userDefinedHandler = service[singleFunction.functionName].bind(service); - - peer.internals.regHandler.common(serviceId, singleFunction.functionName, async (req) => { - const args = convertArgsFromReqToUserCall(req, singleFunction.argDefs); - const rawResult = await userDefinedHandler.apply(null, args); - const result = match(singleFunction.returnType) - .with({ tag: 'primitive' }, () => rawResult) - .with({ tag: 'optional' }, () => tsToAquaOpt(rawResult)) - .with({ tag: 'void' }, () => ({})) - .exhaustive(); - - return { - retCode: ResultCodes.success, - result: result, - }; - }); - } -} - -/** - * Converts argument from ts representation (value | null) to air representation ([value] | []) - */ -const tsToAquaOpt = (arg: unknown | null): any => { - return arg === null || arg === undefined ? [] : [arg]; -}; - -/** - * Converts argument from air representation ([value] | []) to ts representation (value | null) - */ -const aquaOptToTs = (opt: Array) => { - return opt.length === 0 ? null : opt[0]; -}; - -/** - * Converts raw arguments which may contain optional types from air representation to ts representation - */ -const convertArgsFromReqToUserCall = (req: CallServiceData, argDefs: Array>) => { - if (req.args.length !== argDefs.length) { - throwForReq(req, `incorrect number of arguments, expected ${argDefs.length}`); - } - - const argsAccountedForOptional = req.args.map((x, index) => { - return match(argDefs[index].argType) - .with({ tag: 'optional' }, () => aquaOptToTs(x)) - .with({ tag: 'primitive' }, () => x) - .exhaustive(); - }); - - return [...argsAccountedForOptional, extractCallParams(req, argDefs)]; -}; - -/** - * Extracts Call Params from CallServiceData and forms tetraplets according to generated function definition - */ -const extractCallParams = ( - req: CallServiceData, - argDefs: Array>, -): CallParams => { - let tetraplets: { [key in string]: SecurityTetraplet[] } = {}; - for (let i = 0; i < req.args.length; i++) { - if (argDefs[i]) { - tetraplets[argDefs[i].name] = req.tetraplets[i]; - } - } - - const callParams = { - ...req.particleContext, - tetraplets, - }; - - return callParams; -}; - -/** - * Arguments could be passed in one these configurations: - * [...actualArgs] - * [peer, ...actualArgs] - * [...actualArgs, config] - * [peer, ...actualArgs, config] - * - * This function select the appropriate configuration and returns - * arguments in a structured way of: { peer, config, args } - */ -const extractFunctionArgs = ( - args: any[], - numberOfExpectedArgs: number, -): { - peer: FluencePeer; - config?: FnConfig; - args: any[]; -} => { - let peer: FluencePeer; - let structuredArgs: any[]; - let config: any; - if (FluencePeer.isInstance(args[0])) { - peer = args[0]; - structuredArgs = args.slice(1, numberOfExpectedArgs + 1); - config = args[numberOfExpectedArgs + 1]; - } else { - peer = Fluence.getPeer(); - structuredArgs = args.slice(0, numberOfExpectedArgs); - config = args[numberOfExpectedArgs]; - } - - return { - peer: peer, - config: config, - args: structuredArgs, - }; -}; - -/** - * Arguments could be passed in one these configurations: - * [serviceObject] - * [peer, serviceObject] - * [defaultId, serviceObject] - * [peer, defaultId, serviceObject] - * - * Where serviceObject is the raw object with function definitions passed by user - * - * This function select the appropriate configuration and returns - * arguments in a structured way of: { peer, serviceId, service } - */ -const extractRegisterServiceArgs = ( - args: any[], - defaultServiceId?: string, -): { peer: FluencePeer; serviceId: string; service: any } => { - let peer: FluencePeer; - let serviceId: any; - let service: any; - if (FluencePeer.isInstance(args[0])) { - peer = args[0]; - } else { - peer = Fluence.getPeer(); - } - - if (typeof args[0] === 'string') { - serviceId = args[0]; - } else if (typeof args[1] === 'string') { - serviceId = args[1]; - } else { - serviceId = defaultServiceId; - } - - // Figuring out which overload is the service. - // If the first argument is not Fluence Peer and it is an object, then it can only be the service def - // If the first argument is peer, we are checking further. The second argument might either be - // an object, that it must be the service object - // or a string, which is the service id. In that case the service is the third argument - if (!FluencePeer.isInstance(args[0]) && typeof args[0] === 'object') { - service = args[0]; - } else if (typeof args[1] === 'object') { - service = args[1]; - } else { - service = args[2]; - } - - return { - peer: peer, - serviceId: serviceId, - service: service, - }; -}; - -function throwForReq(req: CallServiceData, message: string) { - throw new Error(`${message}, serviceId='${req.serviceId}' fnName='${req.fnName}' args='${req.args}'`); -} - -export const forTests = { - extractFunctionArgs, -}; diff --git a/packages/fluence-js/src/internal/compilerSupport/v3.ts b/packages/fluence-js/src/internal/compilerSupport/v3.ts deleted file mode 100644 index e743584fe..000000000 --- a/packages/fluence-js/src/internal/compilerSupport/v3.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2022 Fluence Labs Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { FluencePeer } from '../FluencePeer'; -export { CallParams } from '../commonTypes'; -export * from './v3impl/interface'; -export * from './v3impl/callFunction'; -export * from './v3impl/registerService'; diff --git a/packages/fluence-js/src/internal/compilerSupport/v3impl/registerService.ts b/packages/fluence-js/src/internal/compilerSupport/v3impl/registerService.ts deleted file mode 100644 index 39deb88f7..000000000 --- a/packages/fluence-js/src/internal/compilerSupport/v3impl/registerService.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { FluencePeer } from '../../FluencePeer'; -import { Fluence } from '../../../index'; -import { ServiceDef } from './interface'; -import { registerGlobalService, userHandlerService } from './services'; - -/** - * Convenience function to support Aqua `service` generation backend - * The compiler only need to generate a call the function and provide the corresponding definitions and the air script - * - * @param args - raw arguments passed by user to the generated function - * @param def - service definition generated by the Aqua compiler - */ -export function registerService(args: any[], def: ServiceDef) { - const { peer, service, serviceId } = extractArgs(args, def.defaultServiceId); - - if (!peer.getStatus().isInitialized) { - throw new Error( - 'Could not register the service because the peer is not initialized. Are you passing the wrong peer to the register function?', - ); - } - - // Checking for missing keys - const requiredKeys = def.functions.tag === 'nil' ? [] : Object.keys(def.functions.fields); - const incorrectServiceDefinitions = requiredKeys.filter((f) => !(f in service)); - if (!!incorrectServiceDefinitions.length) { - throw new Error( - `Error registering service ${serviceId}: missing functions: ` + - incorrectServiceDefinitions.map((d) => "'" + d + "'").join(', '), - ); - } - - const singleFunctions = def.functions.tag === 'nil' ? [] : Object.entries(def.functions.fields); - for (let singleFunction of singleFunctions) { - let [name, type] = singleFunction; - // The function has type of (arg1, arg2, arg3, ... , callParams) => CallServiceResultType | void - // Account for the fact that user service might be defined as a class - .bind(...) - const userDefinedHandler = service[name].bind(service); - - const serviceDescription = userHandlerService(serviceId, singleFunction, userDefinedHandler); - registerGlobalService(peer, serviceDescription); - } -} - -/** - * Arguments could be passed in one these configurations: - * [serviceObject] - * [peer, serviceObject] - * [defaultId, serviceObject] - * [peer, defaultId, serviceObject] - * - * Where serviceObject is the raw object with function definitions passed by user - * - * This function select the appropriate configuration and returns - * arguments in a structured way of: { peer, serviceId, service } - */ -const extractArgs = ( - args: any[], - defaultServiceId?: string, -): { peer: FluencePeer; serviceId: string; service: any } => { - let peer: FluencePeer; - let serviceId: any; - let service: any; - if (FluencePeer.isInstance(args[0])) { - peer = args[0]; - } else { - peer = Fluence.getPeer(); - } - - if (typeof args[0] === 'string') { - serviceId = args[0]; - } else if (typeof args[1] === 'string') { - serviceId = args[1]; - } else { - serviceId = defaultServiceId; - } - - // Figuring out which overload is the service. - // If the first argument is not Fluence Peer and it is an object, then it can only be the service def - // If the first argument is peer, we are checking further. The second argument might either be - // an object, that it must be the service object - // or a string, which is the service id. In that case the service is the third argument - if (!FluencePeer.isInstance(args[0]) && typeof args[0] === 'object') { - service = args[0]; - } else if (typeof args[1] === 'object') { - service = args[1]; - } else { - service = args[2]; - } - - return { - peer: peer, - serviceId: serviceId, - service: service, - }; -}; diff --git a/packages/fluence-js/src/services.ts b/packages/fluence-js/src/services.ts deleted file mode 100644 index 74101cd0f..000000000 --- a/packages/fluence-js/src/services.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './internal/builtins/Sig'; -export { registerSig } from './internal/_aqua/services'; diff --git a/packages/fluence-js/tsconfig.json b/packages/fluence-js/tsconfig.json deleted file mode 100644 index 0d2020f2c..000000000 --- a/packages/fluence-js/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "outDir": "./dist/", - "baseUrl": ".", - "downlevelIteration": true, - "sourceMap": true, - "inlineSources": true, - "allowSyntheticDefaultImports": true, - "resolveJsonModule": true, - "target": "ES5", - "module": "commonjs", - "moduleResolution": "node", - "declaration": true, - "esModuleInterop": true, - "declarationMap": true, - "strict": true, - "skipLibCheck": true - }, - "exclude": ["node_modules", "dist", "bundle"], - "include": ["src/**/*"] -} diff --git a/packages/fluence-keypair/.npmignore b/packages/fluence-keypair/.npmignore deleted file mode 100644 index 1354879a2..000000000 --- a/packages/fluence-keypair/.npmignore +++ /dev/null @@ -1,12 +0,0 @@ -.idea -.gitignore -node_modules -types - -src/ - -tsconfig.json -webpack.config.js - -bundle -pkg \ No newline at end of file diff --git a/packages/fluence-keypair/.prettierrc.js b/packages/fluence-keypair/.prettierrc.js deleted file mode 100644 index 4e5ea887b..000000000 --- a/packages/fluence-keypair/.prettierrc.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - semi: true, - trailingComma: "all", - singleQuote: true, - printWidth: 120, - tabWidth: 4, - useTabs: false -}; diff --git a/packages/fluence-keypair/CONTRIBUTING.md b/packages/fluence-keypair/CONTRIBUTING.md deleted file mode 100644 index 0e3b264d3..000000000 --- a/packages/fluence-keypair/CONTRIBUTING.md +++ /dev/null @@ -1,13 +0,0 @@ -## Contribute Code - -You are welcome to contribute to Fluence. - -Things you need to know: - -1. You need to **agree to the Contributors License Agreement**. This is a common practice in all major Open Source projects. At the current moment we are unable to accept contributions made on behalf of a company. Only individual contributions will be accepted. -2. **Not all proposed contributions can be accepted**. Some features may e.g. just fit a third-party add-on better. The contribution must fit the overall direction of Fluence and really improve it. The more effort you invest, the better you should clarify in advance whether the contribution fits: the best way would be to just open an issue to discuss the contribution you plan to make. - -### Contributor License Agreement - -When you contribute, you have to be aware that your contribution is covered by **Apache License 2.0**, but might relicensed under few other software licenses mentioned in the **Contributor License Agreement**. -In particular you need to agree to the [Contributor License Agreement](https://gist.github.com/fluencelabs-org/3f4cbb3cc14c1c0fb9ad99d8f7316ed7). If you agree to its content, you simply have to click on the link posted by the CLA assistant as a comment to the pull request. Click it to check the CLA, then accept it on the following screen if you agree to it. CLA assistant will save this decision for upcoming contributions and will notify you if there is any change to the CLA in the meantime. diff --git a/packages/fluence-keypair/src/index.ts b/packages/fluence-keypair/src/index.ts deleted file mode 100644 index 0be07d51a..000000000 --- a/packages/fluence-keypair/src/index.ts +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2020 Fluence Labs Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as PeerId from 'peer-id'; -import { keys } from 'libp2p-crypto'; -import { toUint8Array } from 'js-base64'; - -export class KeyPair { - /** - * Key pair in libp2p format. Used for backward compatibility with the current FluencePeer implementation - */ - public Libp2pPeerId: PeerId; - - constructor(libp2pPeerId: PeerId) { - this.Libp2pPeerId = libp2pPeerId; - } - - /** - * Generates new KeyPair from ed25519 private key represented as a 32 byte array - * @param key - Any sequence of 32 bytes - * @returns - Promise with the created KeyPair - */ - static async fromEd25519SK(arr: Uint8Array): Promise { - // generateKeyPairFromSeed takes seed and copies it to private key as is - const privateKey = await keys.generateKeyPairFromSeed('Ed25519', arr, 256); - const lib2p2Pid = await PeerId.createFromPrivKey(privateKey.bytes); - return new KeyPair(lib2p2Pid); - } - - /** - * Generates new KeyPair with a random secret key - * @returns - Promise with the created KeyPair - */ - static async randomEd25519(): Promise { - const lib2p2Pid = await PeerId.create({ keyType: 'Ed25519' }); - return new KeyPair(lib2p2Pid); - } - - getPeerId(): string { - return this.Libp2pPeerId.toB58String(); - } - - /** - * @returns 32 byte private key - */ - toEd25519PrivateKey(): Uint8Array { - return this.Libp2pPeerId.privKey.marshal().subarray(0, 32); - } - - signBytes(data: Uint8Array): Promise { - return this.Libp2pPeerId.privKey.sign(data); - } - - verify(data: Uint8Array, signature: Uint8Array): Promise { - return this.Libp2pPeerId.privKey.public.verify(data, signature); - } -} - -export const keyPairFromBase64Sk = (sk: string): Promise => { - const arr = toUint8Array(sk); - return KeyPair.fromEd25519SK(arr); -}; diff --git a/packages/fluence-keypair/tsconfig.json b/packages/fluence-keypair/tsconfig.json deleted file mode 100644 index e260f5000..000000000 --- a/packages/fluence-keypair/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "outDir": "./dist/", - "lib": ["ES2015"], - "target": "ES5", - "sourceMap": true, - "declaration": true, - "module": "commonjs", - }, - "exclude": ["node_modules", "dist"], - "include": ["src/**/*"] -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8a96f96e7..f4c8dd8b5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,152 +2,302 @@ lockfileVersion: 5.4 importers: - packages/@tests/smoke: + .: specifiers: - '@fluencelabs/fluence': workspace:* - '@types/node': ^18.7.13 - ts-node: ^10.9.1 - typescript: ^4.6.4 - dependencies: - '@fluencelabs/fluence': link:../../fluence-js - ts-node: 10.9.1_leegklmkepybzc4ng4qys4ftou + '@fluencelabs/aqua': 0.9.1-374 + '@fluencelabs/aqua-lib': 0.6.0 + '@types/node': 16.11.59 + http-server: 14.1.1 + ts-node: 10.9.1 + typescript: '4.7' devDependencies: - '@types/node': 18.7.14 + '@fluencelabs/aqua': 0.9.1-374_jaxubti5gf66xc76fsqhxmuwn4 + '@fluencelabs/aqua-lib': 0.6.0 + '@types/node': 16.11.59 + http-server: 14.1.1 + ts-node: 10.9.1_hjximzan7wcxvjcbhhc47yzr2e typescript: 4.7.4 - packages/fluence-connection: + packages/@tests/aqua: specifiers: - '@chainsafe/libp2p-noise': ^4.1.1 - '@fluencelabs/interfaces': workspace:0.1.0 - browser-or-node: 2.0.0 - buffer: ^6.0.3 - it-length-prefixed: 5.0.3 - it-pipe: 1.1.0 - libp2p: 0.36.2 - libp2p-interfaces: ^4.0.6 - libp2p-mplex: 0.10.7 - libp2p-websockets: 0.16.2 - loglevel: 1.8.1 - multiaddr: 10.0.1 - peer-id: 0.16.0 - typescript: ^4.6.4 + '@fluencelabs/aqua': 0.9.4 + '@fluencelabs/fluence': workspace:0.60.0 + '@fluencelabs/fluence-network-environment': 1.0.13 + '@fluencelabs/registry': 0.7.0 + base64-js: 1.5.1 dependencies: - '@chainsafe/libp2p-noise': 4.1.2 - '@fluencelabs/interfaces': link:../fluence-interfaces - browser-or-node: 2.0.0 + '@fluencelabs/fluence': link:../../client/api + '@fluencelabs/fluence-network-environment': 1.0.13 + base64-js: 1.5.1 + devDependencies: + '@fluencelabs/aqua': 0.9.4_sxyfz5frysr7cnkewysdljfvwu + '@fluencelabs/registry': 0.7.0 + + packages/@tests/frameworks/cra-ts: + specifiers: + '@fluencelabs/fluence': workspace:0.60.0 + '@test/aqua_for_test': workspace:* + '@testing-library/jest-dom': 5.16.5 + '@testing-library/react': 13.4.0 + '@testing-library/user-event': 13.5.0 + '@types/jest': 27.5.2 + '@types/node': 16.18.12 + '@types/react': 18.0.27 + '@types/react-dom': 18.0.10 + react: ^18.2.0 + react-dom: ^18.2.0 + react-scripts: 5.0.1 + typescript: 4.9.5 + web-vitals: 2.1.4 + dependencies: + '@fluencelabs/fluence': link:../../../client/api + '@test/aqua_for_test': link:../../aqua + '@testing-library/jest-dom': 5.16.5 + '@testing-library/react': 13.4.0_biqbaboplfbrettd7655fr4n2y + '@testing-library/user-event': 13.5.0_yxlyej73nftwmh2fiao7paxmlm + '@types/jest': 27.5.2 + '@types/node': 16.18.12 + '@types/react': 18.0.27 + '@types/react-dom': 18.0.10 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-scripts: 5.0.1_72im5qx3m2npzev2b5222y6sne + typescript: 4.9.5 + web-vitals: 2.1.4 + + packages/@tests/smoke_node: + specifiers: + '@fluencelabs/fluence': workspace:0.60.0 + '@fluencelabs/js-client.node': 0.1.0 + '@test/aqua_for_test': workspace:* + dependencies: + '@fluencelabs/fluence': link:../../client/api + '@fluencelabs/js-client.node': link:../../client/js-client.node + '@test/aqua_for_test': link:../aqua + + packages/@tests/smoke_web: + specifiers: + '@fluencelabs/js-client.web.standalone': workspace:* + http-server: 14.1.1 + devDependencies: + '@fluencelabs/js-client.web.standalone': link:../../client/js-client.web.standalone + http-server: 14.1.1 + + packages/client/api: + specifiers: + '@fluencelabs/interfaces': 0.5.0 + dependencies: + '@fluencelabs/interfaces': link:../../core/interfaces + + packages/client/js-client.node: + specifiers: + '@fluencelabs/avm': 0.35.3 + '@fluencelabs/js-peer': 0.5.0 + '@fluencelabs/marine-js': 0.3.42 + '@types/platform': 1.3.4 + platform: 1.3.6 + dependencies: + '@fluencelabs/avm': 0.35.3 + '@fluencelabs/js-peer': link:../../core/js-peer + '@fluencelabs/marine-js': 0.3.42 + platform: 1.3.6 + devDependencies: + '@types/platform': 1.3.4 + + packages/client/js-client.web.standalone: + specifiers: + '@fluencelabs/avm': 0.35.3 + '@fluencelabs/js-peer': 0.5.0 + '@fluencelabs/marine-js': 0.3.42 + '@rollup/plugin-inject': 5.0.3 + '@types/jest': 28.1.0 + '@types/node': 16.11.59 buffer: 6.0.3 - it-length-prefixed: 5.0.3 - it-pipe: 1.1.0 - libp2p: 0.36.2 - libp2p-interfaces: 4.0.6 - libp2p-mplex: 0.10.7 - libp2p-websockets: 0.16.2 - loglevel: 1.8.1 - multiaddr: 10.0.1 - peer-id: 0.16.0 + jest: 28.1.0 + js-base64: 3.7.2 + process: 0.11.10 + ts-jest: 28.0.2 + vite: 4.0.4 + vite-plugin-replace: 0.1.1 + vite-tsconfig-paths: 4.0.3 + dependencies: + '@fluencelabs/js-peer': link:../../core/js-peer + buffer: 6.0.3 + process: 0.11.10 devDependencies: - typescript: 4.7.4 + '@fluencelabs/avm': 0.35.3 + '@fluencelabs/marine-js': 0.3.42 + '@rollup/plugin-inject': 5.0.3 + '@types/jest': 28.1.0 + '@types/node': 16.11.59 + jest: 28.1.0_@types+node@16.11.59 + js-base64: 3.7.2 + ts-jest: 28.0.2_m4pn7vsromlf5ffrouypoapnnq + vite: 4.0.4_@types+node@16.11.59 + vite-plugin-replace: 0.1.1_vite@4.0.4 + vite-tsconfig-paths: 4.0.3_egung5nfepmolqa7uavvqho3gq - packages/fluence-interfaces: + packages/client/tools: specifiers: - typescript: ^4.6.4 + '@types/node': 16.11.59 devDependencies: - typescript: 4.7.4 + '@types/node': 16.11.59 + + packages/core/interfaces: + specifiers: + '@fluencelabs/avm': 0.35.3 + '@fluencelabs/marine-js': 0.3.44 + '@multiformats/multiaddr': 11.3.0 + devDependencies: + '@fluencelabs/avm': 0.35.3 + '@fluencelabs/marine-js': 0.3.44 + '@multiformats/multiaddr': 11.3.0 - packages/fluence-js: + packages/core/js-peer: specifiers: + '@chainsafe/libp2p-noise': 11.0.0 '@fluencelabs/aqua': 0.7.7-362 + '@fluencelabs/aqua-api': 0.9.1-373 '@fluencelabs/aqua-lib': 0.6.0 - '@fluencelabs/avm': 0.35.3 - '@fluencelabs/connection': workspace:0.2.0 - '@fluencelabs/fluence-network-environment': ^1.0.13 - '@fluencelabs/interfaces': workspace:0.1.0 - '@fluencelabs/keypair': workspace:0.2.0 - '@fluencelabs/marine-js': 0.3.37 - '@types/bs58': ^4.0.1 - '@types/jest': ^27.5.1 - '@types/platform': ^1.3.4 - '@types/uuid': ^8.3.4 + '@fluencelabs/avm': 0.31.10 + '@fluencelabs/fluence-network-environment': 1.0.13 + '@fluencelabs/interfaces': 0.5.0 + '@fluencelabs/marine-js': 0.3.44 + '@libp2p/crypto': 1.0.8 + '@libp2p/interface-connection': 3.0.8 + '@libp2p/interface-keys': 1.0.7 + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interfaces': 3.3.1 + '@libp2p/mplex': 7.1.1 + '@libp2p/peer-id': 2.0.1 + '@libp2p/peer-id-factory': 2.0.1 + '@libp2p/websockets': 5.0.3 + '@multiformats/multiaddr': 11.3.0 + '@types/bs58': 4.0.1 + '@types/jest': 29.4.0 + '@types/uuid': 8.3.2 async: 3.2.4 - base64-js: ^1.5.1 - browser-or-node: 2.0.0 bs58: 5.0.0 - buffer: ^6.0.3 - cids: 1.1.9 - jest: ^28.1.0 - jest-each: ^28.1.3 - js-base64: ^3.7.2 + buffer: 6.0.3 + it-length-prefixed: 8.0.4 + it-map: 2.0.0 + it-pipe: 2.0.5 + jest: 29.4.1 + js-base64: 3.7.2 + libp2p: 0.42.2 loglevel: 1.8.1 - multiaddr: 10.0.1 - multiformats: 9.9.0 - peer-id: 0.16.0 - platform: ^1.3.6 - rxjs: ^7.5.5 - ts-jest: ^28.0.2 + multiformats: 11.0.1 + rxjs: 7.5.5 + threads: 1.7.0 + ts-jest: 29.0.5 ts-pattern: 3.3.3 - typedoc: ^0.22.15 - typescript: ^4.6.4 + uint8arrays: 4.0.3 uuid: 8.3.2 dependencies: - '@fluencelabs/avm': 0.35.3 - '@fluencelabs/connection': link:../fluence-connection - '@fluencelabs/interfaces': link:../fluence-interfaces - '@fluencelabs/keypair': link:../fluence-keypair - '@fluencelabs/marine-js': 0.3.37_rl5xm3oiydas7snsul2pa47p2m + '@chainsafe/libp2p-noise': 11.0.0 + '@fluencelabs/avm': 0.31.10 + '@fluencelabs/interfaces': link:../interfaces + '@fluencelabs/marine-js': 0.3.44 + '@libp2p/crypto': 1.0.8_uint8arraylist@2.4.3 + '@libp2p/interface-connection': 3.0.8 + '@libp2p/interface-keys': 1.0.7 + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interfaces': 3.3.1 + '@libp2p/mplex': 7.1.1 + '@libp2p/peer-id': 2.0.1 + '@libp2p/peer-id-factory': 2.0.1 + '@libp2p/websockets': 5.0.3 + '@multiformats/multiaddr': 11.3.0 async: 3.2.4 - base64-js: 1.5.1 - browser-or-node: 2.0.0 bs58: 5.0.0 buffer: 6.0.3 - cids: 1.1.9 + it-length-prefixed: 8.0.4 + it-map: 2.0.0 + it-pipe: 2.0.5 + js-base64: 3.7.2 + libp2p: 0.42.2 loglevel: 1.8.1 - multiformats: 9.9.0 - peer-id: 0.16.0 - platform: 1.3.6 - rxjs: 7.5.6 + multiformats: 11.0.1 + rxjs: 7.5.5 + threads: 1.7.0 ts-pattern: 3.3.3 + uint8arrays: 4.0.3 uuid: 8.3.2 devDependencies: - '@fluencelabs/aqua': 0.7.7-362_rl5xm3oiydas7snsul2pa47p2m + '@fluencelabs/aqua': 0.7.7-362_4ybkoodcah37urerzfcwvnjsoe + '@fluencelabs/aqua-api': 0.9.1-373 '@fluencelabs/aqua-lib': 0.6.0 '@fluencelabs/fluence-network-environment': 1.0.13 '@types/bs58': 4.0.1 - '@types/jest': 27.5.2 - '@types/platform': 1.3.4 - '@types/uuid': 8.3.4 - jest: 28.1.3 - jest-each: 28.1.3 - js-base64: 3.7.2 - multiaddr: 10.0.1 - ts-jest: 28.0.8_wnrrwh7x4gcdskobbfqnvknnyi - typedoc: 0.22.18_typescript@4.7.4 - typescript: 4.7.4 + '@types/jest': 29.4.0 + '@types/uuid': 8.3.2 + jest: 29.4.1 + ts-jest: 29.0.5_ecv55cdbauq6znr7ci2lzguwra - packages/fluence-keypair: - specifiers: - js-base64: ^3.7.2 - libp2p-crypto: 0.21.2 - peer-id: 0.16.0 - typescript: ^4.6.4 +packages: + + /@achingbrain/ip-address/8.1.0: + resolution: {integrity: sha512-Zus4vMKVRDm+R1o0QJNhD0PD/8qRGO3Zx8YPsFG5lANt5utVtGg3iHVGBSAF80TfQmhi8rP+Kg/OigdxY0BXHw==} + engines: {node: '>= 12'} dependencies: - js-base64: 3.7.2 - libp2p-crypto: 0.21.2 - peer-id: 0.16.0 - devDependencies: - typescript: 4.7.4 + jsbn: 1.1.0 + sprintf-js: 1.1.2 + dev: false -packages: + /@achingbrain/nat-port-mapper/1.0.7: + resolution: {integrity: sha512-P8Z8iMZBQCsN7q3XoVoJAX3CGPUTbGTh1XBU8JytCW3hBmSk594l8YvdrtY5NVexVHSwLeiXnDsP4d10NJHaeg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@achingbrain/ssdp': 4.0.1 + '@libp2p/logger': 2.0.5 + default-gateway: 6.0.3 + err-code: 3.0.1 + it-first: 1.0.7 + p-defer: 4.0.0 + p-timeout: 5.1.0 + xml2js: 0.4.23 + transitivePeerDependencies: + - supports-color + dev: false /@achingbrain/node-fetch/2.6.7: resolution: {integrity: sha512-iTASGs+HTFK5E4ZqcMsHmeJ4zodyq8L38lZV33jwqcBJYoUt3HjN4+ot+O9/0b+ke8ddE7UgOtVuZN/OkV19/g==} engines: {node: 4.x || >=6.0.0} + dev: true + + /@achingbrain/ssdp/4.0.1: + resolution: {integrity: sha512-z/CkfFI0Ksrpo8E+lu2rKahlE1KJHUn8X8ihQj2Jg6CEL+oHYGCNfttOES0+VnV7htuog70c8bYNHYhlmmqxBQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + event-iterator: 2.0.0 + freeport-promise: 2.0.0 + merge-options: 3.0.4 + uuid: 8.3.2 + xml2js: 0.4.23 + dev: false + + /@adobe/css-tools/4.1.0: + resolution: {integrity: sha512-mMVJ/j/GbZ/De4ZHWbQAQO1J6iVnjtZLc9WEdkUQb8S/Bu2cAF2bETXUgMAdvMG3/ngtKmcNBe+Zms9bg6jnQQ==} + dev: false /@ampproject/remapping/2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.15 + '@jridgewell/trace-mapping': 0.3.17 + + /@apideck/better-ajv-errors/0.3.6_ajv@8.12.0: + resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} + engines: {node: '>=10'} + peerDependencies: + ajv: '>=8' + dependencies: + ajv: 8.12.0 + json-schema: 0.4.0 + jsonpointer: 5.0.1 + leven: 3.1.0 + dev: false /@babel/code-frame/7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} @@ -155,125 +305,270 @@ packages: dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data/7.18.13: - resolution: {integrity: sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==} + /@babel/compat-data/7.20.14: + resolution: {integrity: sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==} engines: {node: '>=6.9.0'} - /@babel/core/7.18.13: - resolution: {integrity: sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A==} + /@babel/core/7.20.12: + resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.13 - '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.13 - '@babel/helper-module-transforms': 7.18.9 - '@babel/helpers': 7.18.9 - '@babel/parser': 7.18.13 - '@babel/template': 7.18.10 - '@babel/traverse': 7.18.13 - '@babel/types': 7.18.13 - convert-source-map: 1.8.0 + '@babel/generator': 7.20.14 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-module-transforms': 7.20.11 + '@babel/helpers': 7.20.13 + '@babel/parser': 7.20.15 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 + convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 - json5: 2.2.1 + json5: 2.2.3 semver: 6.3.0 transitivePeerDependencies: - supports-color - /@babel/generator/7.18.13: - resolution: {integrity: sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==} + /@babel/eslint-parser/7.19.1_ydmbqfus77qykiqxhcwsorsqbq: + resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': '>=7.11.0' + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.20.12 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.34.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.0 + dev: false + + /@babel/generator/7.20.14: + resolution: {integrity: sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.13 + '@babel/types': 7.20.7 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 - /@babel/helper-compilation-targets/7.18.9_@babel+core@7.18.13: - resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==} + /@babel/helper-annotate-as-pure/7.18.6: + resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + dev: false + + /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: + resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-explode-assignable-expression': 7.18.6 + '@babel/types': 7.20.7 + dev: false + + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.18.13 - '@babel/core': 7.18.13 + '@babel/compat-data': 7.20.14 + '@babel/core': 7.20.12 '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.3 + browserslist: 4.21.5 + lru-cache: 5.1.1 + semver: 6.3.0 + + /@babel/helper-create-class-features-plugin/7.20.12_@babel+core@7.20.12: + resolution: {integrity: sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-member-expression-to-functions': 7.20.7 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-create-regexp-features-plugin/7.20.5_@babel+core@7.20.12: + resolution: {integrity: sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-annotate-as-pure': 7.18.6 + regexpu-core: 5.3.0 + dev: false + + /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.12: + resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.1 semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false /@babel/helper-environment-visitor/7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} - /@babel/helper-function-name/7.18.9: - resolution: {integrity: sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==} + /@babel/helper-explode-assignable-expression/7.18.6: + resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.18.13 + '@babel/types': 7.20.7 + dev: false + + /@babel/helper-function-name/7.19.0: + resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.20.7 /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.13 + '@babel/types': 7.20.7 + + /@babel/helper-member-expression-to-functions/7.20.7: + resolution: {integrity: sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + dev: false /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.13 + '@babel/types': 7.20.7 - /@babel/helper-module-transforms/7.18.9: - resolution: {integrity: sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==} + /@babel/helper-module-transforms/7.20.11: + resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.18.6 + '@babel/helper-simple-access': 7.20.2 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.18.6 - '@babel/template': 7.18.10 - '@babel/traverse': 7.18.13 - '@babel/types': 7.18.13 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 + transitivePeerDependencies: + - supports-color + + /@babel/helper-optimise-call-expression/7.18.6: + resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + dev: false + + /@babel/helper-plugin-utils/7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.12: + resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-wrap-function': 7.20.5 + '@babel/types': 7.20.7 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-replace-supers/7.20.7: + resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-member-expression-to-functions': 7.20.7 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color + dev: false - /@babel/helper-plugin-utils/7.18.9: - resolution: {integrity: sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==} + /@babel/helper-simple-access/7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 - /@babel/helper-simple-access/7.18.6: - resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} + /@babel/helper-skip-transparent-expression-wrappers/7.20.0: + resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.13 + '@babel/types': 7.20.7 + dev: false /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.13 + '@babel/types': 7.20.7 - /@babel/helper-string-parser/7.18.10: - resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} + /@babel/helper-string-parser/7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.18.6: - resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} + /@babel/helper-validator-identifier/7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} /@babel/helper-validator-option/7.18.6: resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} engines: {node: '>=6.9.0'} - /@babel/helpers/7.18.9: - resolution: {integrity: sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==} + /@babel/helper-wrap-function/7.20.5: + resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.10 - '@babel/traverse': 7.18.13 - '@babel/types': 7.18.13 + '@babel/helper-function-name': 7.19.0 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helpers/7.20.13: + resolution: {integrity: sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color @@ -281,4118 +576,14794 @@ packages: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.18.13: - resolution: {integrity: sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==} + /@babel/parser/7.20.15: + resolution: {integrity: sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==} engines: {node: '>=6.0.0'} + hasBin: true dependencies: - '@babel/types': 7.18.13 + '@babel/types': 7.20.7 - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.18.13: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.18.13 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.18.13: - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} + engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.18.13 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12 + dev: false - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.18.13: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.13 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.20.12 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.18.13: - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.13 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.20.12 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.18.13: - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + /@babel/plugin-proposal-class-static-block/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==} + engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.18.13 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.20.12 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.18.13: - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + /@babel/plugin-proposal-decorators/7.20.13_@babel+core@7.20.12: + resolution: {integrity: sha512-7T6BKHa9Cpd7lCueHBBzP0nkXNina+h5giOZw+a8ZpMfPFY19VjJAjIxyFHuWkhCWgL6QMqRiY/wB1fLXzm6Mw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.13 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.20.12 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/plugin-syntax-decorators': 7.19.0_@babel+core@7.20.12 + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.18.13: - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.13 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 + dev: false - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.18.13: - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.12: + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.13 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 + dev: false - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.18.13: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.13 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 + dev: false - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.18.13: - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.13 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 + dev: false - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.18.13: - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.13 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 + dev: false - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.18.13: - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.13 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 + dev: false - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.18.13: - resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} + /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.13 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/compat-data': 7.20.14 + '@babel/core': 7.20.12 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 + dev: false - /@babel/template/7.18.10: - resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.18.13 - '@babel/types': 7.18.13 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 + dev: false - /@babel/traverse/7.18.13: - resolution: {integrity: sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==} + /@babel/plugin-proposal-optional-chaining/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.13 - '@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.13 - '@babel/types': 7.18.13 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 + dev: false - /@babel/types/7.18.13: - resolution: {integrity: sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==} + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-string-parser': 7.18.10 - '@babel/helper-validator-identifier': 7.18.6 - to-fast-properties: 2.0.0 - - /@bcoe/v8-coverage/0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@babel/core': 7.20.12 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: false - /@chainsafe/libp2p-noise/4.1.2: - resolution: {integrity: sha512-UvZLWvIS7bAz6M8XfsnC/NhT1c/lg8NNsME1hTvo21kRwyxNFpB8gEhId03Cb5B23oIaHhMySAHBcpuMiSxQ2w==} + /@babel/plugin-proposal-private-property-in-object/7.20.5_@babel+core@7.20.12: + resolution: {integrity: sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@stablelib/chacha20poly1305': 1.0.1 - '@stablelib/hkdf': 1.0.1 - '@stablelib/sha256': 1.0.1 - '@stablelib/x25519': 1.0.3 - debug: 4.3.4 - it-buffer: 0.1.3 - it-length-prefixed: 5.0.3 - it-pair: 1.0.0 - it-pb-rpc: 0.1.13 - it-pipe: 1.1.0 - libp2p-crypto: 0.19.7 - peer-id: 0.15.4 - protobufjs: 6.11.3 - uint8arrays: 3.1.0 + '@babel/core': 7.20.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 transitivePeerDependencies: - supports-color + dev: false - /@cspotcode/source-map-support/0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@jridgewell/trace-mapping': 0.3.9 + '@babel/core': 7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 dev: false - /@fluencelabs/aqua-ipfs/0.5.5: - resolution: {integrity: sha512-TBSClVs2r3FhgxVFSDPXzJNP0/EqHbIaVSY9U6LTzBDUdZDItu8Yt+Rsjj4LX5X4kOwo94ADkYG0UG8nKC1L5A==} + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.12: + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@fluencelabs/aqua-lib': 0.5.2 - dev: true + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@fluencelabs/aqua-lib/0.5.2: - resolution: {integrity: sha512-fmoFFE8myhLH9d+YR0+0ZPL2YIQyR6M1woAGu5d1xXI02Sjzn4id6dE4PpxHb8cSBPRie8AwsKobHCNqGxI8oA==} - dev: true + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@fluencelabs/aqua-lib/0.6.0: - resolution: {integrity: sha512-ifjtCM93KO3LhzPkMxqmXhwLmrg/scjOiyTihEVg7ns5N+BVzaK1eWzdOdqGdl9ZVoah43pdlQUepEo7VdRmsw==} - dev: true + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.12: + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@fluencelabs/aqua/0.7.7-362_rl5xm3oiydas7snsul2pa47p2m: - resolution: {integrity: sha512-CwvBc3wKQdvnDM4Zxj6yFE5MR2oeh+EZ++m2hLvENt7OWl3cnZVR4cJQkRxMMLVT0MxRwLiy97UIBwGsPqlSCA==} + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.12: + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@fluencelabs/aqua-ipfs': 0.5.5 - '@fluencelabs/aqua-lib': 0.5.2 - '@fluencelabs/fluence': 0.26.3-snapshot-4_rl5xm3oiydas7snsul2pa47p2m - '@fluencelabs/fluence-network-environment': 1.0.13 - ipfs-http-client: 50.1.2 - transitivePeerDependencies: - - '@babel/core' - - '@types/jest' - - babel-jest - - bufferutil - - esbuild - - jest - - supports-color - - typescript - - utf-8-validate - dev: true + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@fluencelabs/avm/0.31.4: - resolution: {integrity: sha512-rApXdqk0NUX+Fyq9BJ1jQ7X//EfVrAg9wrjdd4K/tvo54Lgij0tY/IT+imwr/Eb4qgHgi1QMW4zT0AOlgKIKmw==} - dev: true + /@babel/plugin-syntax-decorators/7.19.0_@babel+core@7.20.12: + resolution: {integrity: sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@fluencelabs/avm/0.35.3: - resolution: {integrity: sha512-Y5mPPCmAUUKc5CDO12IL8mGEreWa7maVdX0MWCAH4+GvfLPFN1FxOMSKRYEtvkyVEL88pc9pd8cm5IRCBkFthg==} + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 dev: false - /@fluencelabs/connection/0.2.0: - resolution: {integrity: sha512-0jTRI1h/j/fR2VaLIlcIm6VoP3j2jL2lI6/OaYaOnwGXmI6CbZWHNeq9eaKWycT9B1vpN9wHu0Vi7vH3pFplhg==} - engines: {node: '>=10', pnpm: '>=3'} + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@chainsafe/libp2p-noise': 4.1.2 - '@fluencelabs/interfaces': 0.1.0 - browser-or-node: 2.0.0 - buffer: 6.0.3 - it-length-prefixed: 5.0.3 - it-pipe: 1.1.0 - libp2p: 0.36.2 - libp2p-interfaces: 4.0.6 - libp2p-mplex: 0.10.7 - libp2p-websockets: 0.16.2 - loglevel: 1.8.0 - multiaddr: 10.0.1 - peer-id: 0.16.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@fluencelabs/fluence-network-environment/1.0.13: - resolution: {integrity: sha512-2pci3T0sUHE08jwEs1r/vHKVT4XUh/A3j/QJ0eIhddsxyIjEksjdn05X7DF6STD14CF8GgBVOJEPgav8qaUMpA==} - dev: true + /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@fluencelabs/fluence/0.26.3-snapshot-4_rl5xm3oiydas7snsul2pa47p2m: - resolution: {integrity: sha512-M/iQhnViXfMaATj3gFPQXrZe9zSVcyN9F9A9hfJBUn0VLamhmbfeIoSZeheK8VGBxYbRGcrtoqLPTy1vJQVgVw==} - engines: {node: '>=10', pnpm: '>=3'} + /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.12: + resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@fluencelabs/avm': 0.31.4 - '@fluencelabs/connection': 0.2.0 - '@fluencelabs/interfaces': 0.1.0 - '@fluencelabs/keypair': 0.2.0 - '@fluencelabs/marine-js': 0.3.18_rl5xm3oiydas7snsul2pa47p2m - async: 3.2.3 - base64-js: 1.5.1 - browser-or-node: 2.0.0 - bs58: 5.0.0 - buffer: 6.0.3 - cids: 1.1.9 - loglevel: 1.8.0 - multiformats: 9.6.5 - peer-id: 0.16.0 - platform: 1.3.6 - rxjs: 7.5.6 - ts-pattern: 3.3.3 - uuid: 8.3.2 - transitivePeerDependencies: - - '@babel/core' - - '@types/jest' - - babel-jest - - bufferutil - - esbuild - - jest - - supports-color - - typescript - - utf-8-validate - dev: true + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@fluencelabs/interfaces/0.1.0: - resolution: {integrity: sha512-1nBgrTXa0vwloMMw3iJgbkqK23O6y1hM9YAEOwkUcmvvHQG/OPSYtzAenW7djGhNlA4Lk8QIV4bKNn54WIzjdA==} - engines: {node: '>=10', pnpm: '>=3'} - dev: true + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.12: + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@fluencelabs/keypair/0.2.0: - resolution: {integrity: sha512-sNFvoeefSa0Xa/xzzLwWBXPMB4y/vHEFh3BaA6FCGNPwbtN0pje9rd8AOgSP9fjlTPpxy3TuBI+eAIzBk5b+SQ==} - engines: {node: '>=10', pnpm: '>=3'} + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - js-base64: 3.7.2 - libp2p-crypto: 0.21.2 - peer-id: 0.16.0 - dev: true + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@fluencelabs/marine-js/0.3.18_rl5xm3oiydas7snsul2pa47p2m: - resolution: {integrity: sha512-aNuGtyY910kJvtRwfqmZKjVs+1l3LVWShv5xvkY04faHm65nX3sZLe8UHwughdja/4ixV1IFKlaTUgw2u3Sf5A==} + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@wasmer/wasi': 0.12.0 - '@wasmer/wasmfs': 0.12.0 - browser-or-node: 2.0.0 - buffer: 6.0.3 - threads: 1.7.0 - ts-jest: 27.1.5_rl5xm3oiydas7snsul2pa47p2m - transitivePeerDependencies: - - '@babel/core' - - '@types/jest' - - babel-jest - - esbuild - - jest - - supports-color - - typescript - dev: true + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@fluencelabs/marine-js/0.3.37_rl5xm3oiydas7snsul2pa47p2m: - resolution: {integrity: sha512-/Kpu3S+aDOfrOpKBAK1VeWSHKCoD36/dxtHEWHbj3Lsro0GB9zkoaZPHlFFL7rorCB+hyjAJqLDuBGI8f3l/qg==} + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.12: + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@wasmer/wasi': 0.12.0 - '@wasmer/wasmfs': 0.12.0 - browser-or-node: 2.0.0 - buffer: 6.0.3 - threads: 1.7.0 - ts-jest: 27.1.5_rl5xm3oiydas7snsul2pa47p2m - transitivePeerDependencies: - - '@babel/core' - - '@types/jest' - - babel-jest - - esbuild - - jest - - supports-color - - typescript - dev: false + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@istanbuljs/load-nyc-config/1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@istanbuljs/schema/0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.12: + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@jest/console/28.1.3: - resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@jest/types': 28.1.3 - '@types/node': 18.7.11 - chalk: 4.1.2 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - slash: 3.0.0 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@jest/core/28.1.3: - resolution: {integrity: sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + '@babel/core': ^7.0.0-0 dependencies: - '@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': 18.7.14 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.3.2 - exit: 0.1.2 - graceful-fs: 4.2.10 - jest-changed-files: 28.1.3 - jest-config: 28.1.3_@types+node@18.7.14 - 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.5 - pretty-format: 28.1.3 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@jest/environment/28.1.3: - resolution: {integrity: sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.12: + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@jest/fake-timers': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 18.7.14 - jest-mock: 28.1.3 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@jest/expect-utils/28.1.3: - resolution: {integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.12: + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - jest-get-type: 28.0.2 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@jest/expect/28.1.3: - resolution: {integrity: sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.12: + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - expect: 28.1.3 - jest-snapshot: 28.1.3 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@jest/fake-timers/28.1.3: - resolution: {integrity: sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.12: + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@jest/types': 28.1.3 - '@sinonjs/fake-timers': 9.1.2 - '@types/node': 18.7.14 - jest-message-util: 28.1.3 - jest-mock: 28.1.3 - jest-util: 28.1.3 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 - /@jest/globals/28.1.3: - resolution: {integrity: sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@jest/environment': 28.1.3 - '@jest/expect': 28.1.3 - '@jest/types': 28.1.3 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@jest/reporters/28.1.3: - resolution: {integrity: sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} + engines: {node: '>=6.9.0'} peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + '@babel/core': ^7.0.0-0 dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@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.15 - '@types/node': 18.7.14 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.0 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - jest-message-util: 28.1.3 - jest-util: 28.1.3 - jest-worker: 28.1.3 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - terminal-link: 2.1.1 - v8-to-istanbul: 9.0.1 + '@babel/core': 7.20.12 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.12 transitivePeerDependencies: - supports-color + dev: false - /@jest/schemas/28.1.3: - resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@sinclair/typebox': 0.24.28 - - /@jest/source-map/28.1.2: - resolution: {integrity: sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jridgewell/trace-mapping': 0.3.15 - callsites: 3.1.0 - graceful-fs: 4.2.10 - - /@jest/test-result/28.1.3: - resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@jest/console': 28.1.3 - '@jest/types': 28.1.3 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@jest/test-sequencer/28.1.3: - resolution: {integrity: sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@babel/plugin-transform-block-scoping/7.20.15_@babel+core@7.20.12: + resolution: {integrity: sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@jest/test-result': 28.1.3 - graceful-fs: 4.2.10 - jest-haste-map: 28.1.3 - slash: 3.0.0 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@jest/transform/28.1.3: - resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@babel/plugin-transform-classes/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.18.13 - '@jest/types': 28.1.3 - '@jridgewell/trace-mapping': 0.3.15 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.8.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.10 - jest-haste-map: 28.1.3 - jest-regex-util: 28.0.2 - jest-util: 28.1.3 - micromatch: 4.0.5 - pirates: 4.0.5 - slash: 3.0.0 - write-file-atomic: 4.0.2 + '@babel/core': 7.20.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: false - /@jest/types/27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.7.14 - '@types/yargs': 16.0.4 - chalk: 4.1.2 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/template': 7.20.7 + dev: false - /@jest/types/28.1.3: - resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@jest/schemas': 28.1.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.7.11 - '@types/yargs': 17.0.11 - chalk: 4.1.2 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 + '@babel/core': 7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@jridgewell/gen-mapping/0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.20.12: + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.15 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@jridgewell/resolve-uri/3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@jridgewell/set-array/1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} + /@babel/plugin-transform-flow-strip-types/7.19.0_@babel+core@7.20.12: + resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.20.12 + dev: false - /@jridgewell/sourcemap-codec/1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.12: + resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@jridgewell/trace-mapping/0.3.15: - resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.12: + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@babel/core': 7.20.12 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@jridgewell/trace-mapping/0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.12: + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 dev: false - /@multiformats/base-x/4.0.1: - resolution: {integrity: sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==} + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@noble/ed25519/1.6.1: - resolution: {integrity: sha512-Gptpue6qPmg7p1E5LBO5GDtXw5WMc2DVtUmu4EQequOcoCvum1dT9sY6s9M8aSJWq9YopCN4jmTOAvqMdw3q7w==} + /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.20.12: + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-module-transforms': 7.20.11 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: false - /@noble/secp256k1/1.6.3: - resolution: {integrity: sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==} + /@babel/plugin-transform-modules-commonjs/7.20.11_@babel+core@7.20.12: + resolution: {integrity: sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-module-transforms': 7.20.11 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: false - /@protobufjs/aspromise/1.1.2: - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - /@protobufjs/base64/1.1.2: - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - /@protobufjs/codegen/2.0.4: - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - - /@protobufjs/eventemitter/1.1.0: - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - - /@protobufjs/fetch/1.1.0: - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.20.12: + resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 - - /@protobufjs/float/1.0.2: - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - /@protobufjs/inquire/1.1.0: - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - - /@protobufjs/path/1.1.2: - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - - /@protobufjs/pool/1.1.0: - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - - /@protobufjs/utf8/1.1.0: - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - - /@sinclair/typebox/0.24.28: - resolution: {integrity: sha512-dgJd3HLOkLmz4Bw50eZx/zJwtBq65nms3N9VBYu5LTjJ883oBFkTyXRlCB/ZGGwqYpJJHA5zW2Ibhl5ngITfow==} + '@babel/core': 7.20.12 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-module-transforms': 7.20.11 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-identifier': 7.19.1 + transitivePeerDependencies: + - supports-color + dev: false - /@sinonjs/commons/1.8.3: - resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - type-detect: 4.0.8 + '@babel/core': 7.20.12 + '@babel/helper-module-transforms': 7.20.11 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: false - /@sinonjs/fake-timers/9.1.2: - resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} + /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.20.12: + resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@sinonjs/commons': 1.8.3 - - /@sovpro/delimited-stream/1.1.0: - resolution: {integrity: sha512-kQpk267uxB19X3X2T1mvNMjyvIEonpNSHrMlK5ZaBU6aZxw7wPbpgKJOjHN3+/GPVpXgAV9soVT2oyHpLkLtyw==} - engines: {node: '>= 8'} - dev: true - - /@stablelib/aead/1.0.1: - resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} + '@babel/core': 7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@stablelib/binary/1.0.1: - resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@stablelib/int': 1.0.1 - - /@stablelib/bytes/1.0.1: - resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@stablelib/chacha/1.0.1: - resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/wipe': 1.0.1 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + transitivePeerDependencies: + - supports-color + dev: false - /@stablelib/chacha20poly1305/1.0.1: - resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@stablelib/aead': 1.0.1 - '@stablelib/binary': 1.0.1 - '@stablelib/chacha': 1.0.1 - '@stablelib/constant-time': 1.0.1 - '@stablelib/poly1305': 1.0.1 - '@stablelib/wipe': 1.0.1 - - /@stablelib/constant-time/1.0.1: - resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} - - /@stablelib/hash/1.0.1: - resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@stablelib/hkdf/1.0.1: - resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@stablelib/hash': 1.0.1 - '@stablelib/hmac': 1.0.1 - '@stablelib/wipe': 1.0.1 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@stablelib/hmac/1.0.1: - resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + /@babel/plugin-transform-react-constant-elements/7.20.2_@babel+core@7.20.12: + resolution: {integrity: sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@stablelib/constant-time': 1.0.1 - '@stablelib/hash': 1.0.1 - '@stablelib/wipe': 1.0.1 - - /@stablelib/int/1.0.1: - resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@stablelib/keyagreement/1.0.1: - resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@stablelib/bytes': 1.0.1 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@stablelib/poly1305/1.0.1: - resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@stablelib/constant-time': 1.0.1 - '@stablelib/wipe': 1.0.1 + '@babel/core': 7.20.12 + '@babel/plugin-transform-react-jsx': 7.20.13_@babel+core@7.20.12 + dev: false - /@stablelib/random/1.0.2: - resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + /@babel/plugin-transform-react-jsx/7.20.13_@babel+core@7.20.12: + resolution: {integrity: sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/wipe': 1.0.1 + '@babel/core': 7.20.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/types': 7.20.7 + dev: false - /@stablelib/sha256/1.0.1: - resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} + /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@stablelib/binary': 1.0.1 - '@stablelib/hash': 1.0.1 - '@stablelib/wipe': 1.0.1 - - /@stablelib/wipe/1.0.1: - resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + '@babel/core': 7.20.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@stablelib/x25519/1.0.3: - resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.20.12: + resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@stablelib/keyagreement': 1.0.1 - '@stablelib/random': 1.0.2 - '@stablelib/wipe': 1.0.1 - - /@tsconfig/node10/1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + regenerator-transform: 0.15.1 dev: false - /@tsconfig/node12/1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 dev: false - /@tsconfig/node14/1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + /@babel/plugin-transform-runtime/7.19.6_@babel+core@7.20.12: + resolution: {integrity: sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.12 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.12 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.12 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color dev: false - /@tsconfig/node16/1.0.3: - resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 dev: false - /@types/babel__core/7.1.19: - resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} + /@babel/plugin-transform-spread/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/parser': 7.18.13 - '@babel/types': 7.18.13 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.18.0 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + dev: false - /@types/babel__generator/7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/types': 7.18.13 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@types/babel__template/7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.12: + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/parser': 7.18.13 - '@babel/types': 7.18.13 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@types/babel__traverse/7.18.0: - resolution: {integrity: sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw==} + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.20.12: + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/types': 7.18.13 + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@types/bs58/4.0.1: - resolution: {integrity: sha512-yfAgiWgVLjFCmRv8zAcOIHywYATEwiTVccTLnRp6UxTNavT55M9d/uhK3T03St/+8/z/wW+CRjGKUNmEqoHHCA==} + /@babel/plugin-transform-typescript/7.20.13_@babel+core@7.20.12: + resolution: {integrity: sha512-O7I/THxarGcDZxkgWKMUrk7NK1/WbHAg3Xx86gqS6x9MTrNL6AwIluuZ96ms4xeDe6AVx6rjHbWHP7x26EPQBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - base-x: 3.0.9 - dev: true + '@babel/core': 7.20.12 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 + transitivePeerDependencies: + - supports-color + dev: false - /@types/graceful-fs/4.1.5: - resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.20.12: + resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@types/node': 18.7.14 - - /@types/istanbul-lib-coverage/2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@types/istanbul-lib-report/3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@types/istanbul-lib-coverage': 2.0.4 + '@babel/core': 7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@types/istanbul-reports/3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + /@babel/preset-env/7.20.2_@babel+core@7.20.12: + resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@types/istanbul-lib-report': 3.0.0 + '@babel/compat-data': 7.20.14 + '@babel/core': 7.20.12 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-class-static-block': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-private-property-in-object': 7.20.5_@babel+core@7.20.12 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.20.12 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-block-scoping': 7.20.15_@babel+core@7.20.12 + '@babel/plugin-transform-classes': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.12 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.20.12 + '@babel/plugin-transform-modules-commonjs': 7.20.11_@babel+core@7.20.12 + '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.20.12 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.20.12 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.20.12 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.20.12 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.12 + '@babel/preset-modules': 0.1.5_@babel+core@7.20.12 + '@babel/types': 7.20.7 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.12 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.12 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.12 + core-js-compat: 3.27.2 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false - /@types/jest/27.5.2: - resolution: {integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==} + /@babel/preset-modules/0.1.5_@babel+core@7.20.12: + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - jest-matcher-utils: 27.5.1 - pretty-format: 27.5.1 - - /@types/long/4.0.2: - resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 + '@babel/types': 7.20.7 + esutils: 2.0.3 + dev: false - /@types/minimatch/3.0.5: - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - - /@types/node/18.7.11: - resolution: {integrity: sha512-KZhFpSLlmK/sdocfSAjqPETTMd0ug6HIMIAwkwUpU79olnZdQtMxpQP+G1wDzCH7na+FltSIhbaZuKdwZ8RDrw==} - - /@types/node/18.7.14: - resolution: {integrity: sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==} - - /@types/platform/1.3.4: - resolution: {integrity: sha512-U0o4K+GNiK0PNxoDwd8xRnvLVe4kzei6opn3/FCjAriqaP+rfrDdSl1kP/hLL6Y3/Y3hhGnBwD4dCkkAqs1W/Q==} - dev: true - - /@types/prettier/2.7.0: - resolution: {integrity: sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==} + /@babel/preset-react/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx': 7.20.13_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.20.12 + dev: false - /@types/retry/0.12.0: - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + /@babel/preset-typescript/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-transform-typescript': 7.20.13_@babel+core@7.20.12 + transitivePeerDependencies: + - supports-color + dev: false - /@types/stack-utils/2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + /@babel/regjsgen/0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: false - /@types/uuid/8.3.4: - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - dev: true + /@babel/runtime/7.20.13: + resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + dev: false - /@types/yargs-parser/21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + /@babel/template/7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.20.15 + '@babel/types': 7.20.7 - /@types/yargs/16.0.4: - resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} + /@babel/traverse/7.20.13: + resolution: {integrity: sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==} + engines: {node: '>=6.9.0'} dependencies: - '@types/yargs-parser': 21.0.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.20.14 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.20.15 + '@babel/types': 7.20.7 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color - /@types/yargs/17.0.11: - resolution: {integrity: sha512-aB4y9UDUXTSMxmM4MH+YnuR0g5Cph3FLQBoWoMB21DSvFVAxRVEHEMx3TLh+zUZYMCQtKiqazz0Q4Rre31f/OA==} + /@babel/types/7.20.7: + resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} + engines: {node: '>=6.9.0'} dependencies: - '@types/yargs-parser': 21.0.0 + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 - /@vascosantos/moving-average/1.1.0: - resolution: {integrity: sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w==} + /@bcoe/v8-coverage/0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - /@wasmer/wasi/0.12.0: - resolution: {integrity: sha512-FJhLZKAfLWm/yjQI7eCRHNbA8ezmb7LSpUYFkHruZXs2mXk2+DaQtSElEtOoNrVQ4vApTyVaAd5/b7uEu8w6wQ==} - dependencies: - browser-process-hrtime: 1.0.0 - buffer-es6: 4.9.3 - path-browserify: 1.0.1 - randomfill: 1.0.4 + /@chainsafe/is-ip/2.0.1: + resolution: {integrity: sha512-nqSJ8u2a1Rv9FYbyI8qpDhTYujaKEyLknNrTejLYoSWmdeg+2WB7R6BZqPZYfrJzDxVi3rl6ZQuoaEvpKRZWgQ==} - /@wasmer/wasmfs/0.12.0: - resolution: {integrity: sha512-m1ftchyQ1DfSenm5XbbdGIpb6KJHH5z0gODo3IZr6lATkj4WXfX/UeBTZ0aG9YVShBp+kHLdUHvOkqjy6p/GWw==} + /@chainsafe/libp2p-noise/11.0.0: + resolution: {integrity: sha512-NEl5aIv6muz9OL+dsa3INEU89JX0NViBxOy7NwwG8eNRPUDHo5E3ZTMSHXQpVx1K/ofoNS4ANO9xwezY6ss5GA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - memfs: 3.0.4 - pako: 1.0.11 - tar-stream: 2.2.0 + '@libp2p/crypto': 1.0.8_uint8arraylist@2.4.3 + '@libp2p/interface-connection-encrypter': 3.0.6 + '@libp2p/interface-keys': 1.0.7 + '@libp2p/interface-metrics': 4.0.5 + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/logger': 2.0.5 + '@libp2p/peer-id': 2.0.1 + '@stablelib/chacha20poly1305': 1.0.1 + '@stablelib/hkdf': 1.0.1 + '@stablelib/sha256': 1.0.1 + '@stablelib/x25519': 1.0.3 + it-length-prefixed: 8.0.4 + it-pair: 2.0.3 + it-pb-stream: 2.0.3 + it-pipe: 2.0.5 + it-stream-types: 1.0.5 + protons-runtime: 4.0.2_uint8arraylist@2.4.3 + uint8arraylist: 2.4.3 + uint8arrays: 4.0.3 + transitivePeerDependencies: + - supports-color + dev: false - /abort-controller/3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + /@chainsafe/libp2p-noise/4.1.2: + resolution: {integrity: sha512-UvZLWvIS7bAz6M8XfsnC/NhT1c/lg8NNsME1hTvo21kRwyxNFpB8gEhId03Cb5B23oIaHhMySAHBcpuMiSxQ2w==} dependencies: - event-target-shim: 5.0.1 + '@stablelib/chacha20poly1305': 1.0.1 + '@stablelib/hkdf': 1.0.1 + '@stablelib/sha256': 1.0.1 + '@stablelib/x25519': 1.0.3 + debug: 4.3.4 + it-buffer: 0.1.3 + it-length-prefixed: 5.0.3 + it-pair: 1.0.0 + it-pb-rpc: 0.1.13 + it-pipe: 1.1.0 + libp2p-crypto: 0.19.7 + peer-id: 0.15.4 + protobufjs: 6.11.3 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - supports-color dev: true - /abortable-iterator/3.0.2: - resolution: {integrity: sha512-qVP8HFfTpUQI2F+f1tpTriKDIZ4XrmwCrBCrQeRKO7DKWF3kgoT6NXiNDv2krrGcHxPwmI63eGQiec81sEaWIw==} + /@cspotcode/source-map-support/0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} dependencies: - get-iterator: 1.0.2 - - /acorn-walk/8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - dev: false + '@jridgewell/trace-mapping': 0.3.9 + dev: true - /acorn/8.8.0: - resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} - engines: {node: '>=0.4.0'} + /@csstools/normalize.css/12.0.0: + resolution: {integrity: sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==} dev: false - /aggregate-error/3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} + /@csstools/postcss-cascade-layers/1.1.1_postcss@8.4.21: + resolution: {integrity: sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 + '@csstools/selector-specificity': 2.1.1_wajs5nedgkikc5pcuwett7legi + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false - /ajv/6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + /@csstools/postcss-color-function/1.1.1_postcss@8.4.21: + resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false - /ansi-escapes/4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} + /@csstools/postcss-font-format-keywords/1.0.1_postcss@8.4.21: + resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - type-fest: 0.21.3 - - /ansi-regex/5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false - /ansi-styles/3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + /@csstools/postcss-hwb-function/1.0.2_postcss@8.4.21: + resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - color-convert: 1.9.3 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + /@csstools/postcss-ic-unit/1.0.1_postcss@8.4.21: + resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - color-convert: 2.0.1 - - /ansi-styles/5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false - /any-signal/2.1.2: - resolution: {integrity: sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ==} + /@csstools/postcss-is-pseudo-class/2.0.7_postcss@8.4.21: + resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - abort-controller: 3.0.0 - native-abort-controller: 1.0.4 - dev: true - - /any-signal/3.0.1: - resolution: {integrity: sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==} + '@csstools/selector-specificity': 2.1.1_wajs5nedgkikc5pcuwett7legi + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false - /anymatch/3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} - engines: {node: '>= 8'} + /@csstools/postcss-nested-calc/1.0.0_postcss@8.4.21: + resolution: {integrity: sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - /arg/4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + postcss: 8.4.21 + postcss-value-parser: 4.2.0 dev: false - /argparse/1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + /@csstools/postcss-normalize-display-values/1.0.1_postcss@8.4.21: + resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - sprintf-js: 1.0.3 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false - /asn1.js/5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + /@csstools/postcss-oklab-function/1.1.1_postcss@8.4.21: + resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - bn.js: 4.12.0 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false - /asn1/0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + /@csstools/postcss-progressive-custom-properties/1.3.0_postcss@8.4.21: + resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 dependencies: - safer-buffer: 2.1.2 - - /assert-plus/1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - - /async/3.2.3: - resolution: {integrity: sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==} - dev: true - - /async/3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - - /asynckit/0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - /aws-sign2/0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - - /aws4/1.11.0: - resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false - /babel-jest/28.1.3_@babel+core@7.18.13: - resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@csstools/postcss-stepped-value-functions/1.0.1_postcss@8.4.21: + resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==} + engines: {node: ^12 || ^14 || >=16} peerDependencies: - '@babel/core': ^7.8.0 + postcss: ^8.2 dependencies: - '@babel/core': 7.18.13 - '@jest/transform': 28.1.3 - '@types/babel__core': 7.1.19 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 28.1.3_@babel+core@7.18.13 - chalk: 4.1.2 - graceful-fs: 4.2.10 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false - /babel-plugin-istanbul/6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} + /@csstools/postcss-text-decoration-shorthand/1.0.0_postcss@8.4.21: + resolution: {integrity: sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - '@babel/helper-plugin-utils': 7.18.9 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.0 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false - /babel-plugin-jest-hoist/28.1.3: - resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@csstools/postcss-trigonometric-functions/1.0.2_postcss@8.4.21: + resolution: {integrity: sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==} + engines: {node: ^14 || >=16} + peerDependencies: + postcss: ^8.2 dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.18.13 - '@types/babel__core': 7.1.19 - '@types/babel__traverse': 7.18.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.18.13: - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + /@csstools/postcss-unset-value/1.0.2_postcss@8.4.21: + resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==} + engines: {node: ^12 || ^14 || >=16} peerDependencies: - '@babel/core': ^7.0.0 + postcss: ^8.2 dependencies: - '@babel/core': 7.18.13 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.13 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.18.13 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.18.13 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.18.13 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.13 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.13 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.13 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.13 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.13 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.13 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.13 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.18.13 - - /babel-preset-jest/28.1.3_@babel+core@7.18.13: - resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + postcss: 8.4.21 + dev: false + + /@csstools/selector-specificity/2.1.1_wajs5nedgkikc5pcuwett7legi: + resolution: {integrity: sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==} + engines: {node: ^14 || ^16 || >=18} peerDependencies: - '@babel/core': ^7.0.0 + postcss: ^8.4 + postcss-selector-parser: ^6.0.10 dependencies: - '@babel/core': 7.18.13 - babel-plugin-jest-hoist: 28.1.3 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.13 + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false - /balanced-match/1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /@esbuild/android-arm/0.16.17: + resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true - /base-x/3.0.9: - resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} - dependencies: - safe-buffer: 5.2.1 + /@esbuild/android-arm64/0.16.17: + resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true dev: true + optional: true - /base-x/4.0.0: - resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + /@esbuild/android-x64/0.16.17: + resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true - /base64-js/1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - /bcrypt-pbkdf/1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - dependencies: - tweetnacl: 0.14.5 + /@esbuild/darwin-arm64/0.16.17: + resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true - /bignumber.js/9.1.0: - resolution: {integrity: sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==} + /@esbuild/darwin-x64/0.16.17: + resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true - /bindings/1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - dependencies: - file-uri-to-path: 1.0.0 + /@esbuild/freebsd-arm64/0.16.17: + resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true - /bl/4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.0 + /@esbuild/freebsd-x64/0.16.17: + resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true - /bl/5.0.0: - resolution: {integrity: sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==} - dependencies: - buffer: 6.0.3 - inherits: 2.0.4 - readable-stream: 3.6.0 + /@esbuild/linux-arm/0.16.17: + resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true - /blakejs/1.2.1: - resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + /@esbuild/linux-arm64/0.16.17: + resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /blob-to-it/1.0.4: - resolution: {integrity: sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA==} - dependencies: - browser-readablestream-to-it: 1.0.3 + /@esbuild/linux-ia32/0.16.17: + resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true dev: true + optional: true - /bn.js/4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + /@esbuild/linux-loong64/0.16.17: + resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true - /borc/3.0.0: - resolution: {integrity: sha512-ec4JmVC46kE0+layfnwM3l15O70MlFiEbmQHY/vpqIKiUtPVntv4BY4NVnz3N4vb21edV3mY97XVckFvYHWF9g==} - engines: {node: '>=4'} - dependencies: - bignumber.js: 9.1.0 - buffer: 6.0.3 - commander: 2.20.3 - ieee754: 1.2.1 - iso-url: 1.2.1 - json-text-sequence: 0.3.0 - readable-stream: 3.6.0 + /@esbuild/linux-mips64el/0.16.17: + resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true dev: true + optional: true - /brace-expansion/1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 + /@esbuild/linux-ppc64/0.16.17: + resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true - /brace-expansion/2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 + /@esbuild/linux-riscv64/0.16.17: + resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true dev: true + optional: true - /braces/3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 + /@esbuild/linux-s390x/0.16.17: + resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true - /brorand/1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + /@esbuild/linux-x64/0.16.17: + resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true - /browser-or-node/2.0.0: - resolution: {integrity: sha512-3Lrks/Okgof+/cRguUNG+qRXSeq79SO3hY4QrXJayJofwJwHiGC0qi99uDjsfTwULUFSr1OGVsBkdIkygKjTUA==} + /@esbuild/netbsd-x64/0.16.17: + resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true - /browser-process-hrtime/1.0.0: - resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + /@esbuild/openbsd-x64/0.16.17: + resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true - /browser-readablestream-to-it/1.0.3: - resolution: {integrity: sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==} + /@esbuild/sunos-x64/0.16.17: + resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true dev: true + optional: true - /browserslist/4.21.3: - resolution: {integrity: sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - dependencies: - caniuse-lite: 1.0.30001382 - electron-to-chromium: 1.4.227 - node-releases: 2.0.6 - update-browserslist-db: 1.0.5_browserslist@4.21.3 + /@esbuild/win32-arm64/0.16.17: + resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true - /bs-logger/0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - dependencies: - fast-json-stable-stringify: 2.1.0 + /@esbuild/win32-ia32/0.16.17: + resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true - /bs58/5.0.0: - resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} - dependencies: - base-x: 4.0.0 + /@esbuild/win32-x64/0.16.17: + resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true - /bser/2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + /@eslint/eslintrc/1.4.1: + resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - node-int64: 0.4.0 - - /buffer-es6/4.9.3: - resolution: {integrity: sha512-Ibt+oXxhmeYJSsCkODPqNpPmyegefiD8rfutH1NYGhMZQhSp95Rz7haemgnJ6dxa6LT+JLLbtgOMORRluwKktw==} + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.4.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: false - /buffer-from/1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /@fluencelabs/aqua-api/0.9.1-373: + resolution: {integrity: sha512-q0A2z/FXOlc9UKCQ/Kf00ig0VpgdJ9woITYSj1tnVo9X3kR71gSv4loCQmukJoqlVZXzfQ8r+spalwBerin89A==} + dev: true - /buffer/5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + /@fluencelabs/aqua-ipfs/0.5.5: + resolution: {integrity: sha512-TBSClVs2r3FhgxVFSDPXzJNP0/EqHbIaVSY9U6LTzBDUdZDItu8Yt+Rsjj4LX5X4kOwo94ADkYG0UG8nKC1L5A==} dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 + '@fluencelabs/aqua-lib': 0.5.2 + dev: true - /buffer/6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + /@fluencelabs/aqua-ipfs/0.5.8: + resolution: {integrity: sha512-jKlyGBm8oJAIQ3Ags58oJ8QVTlCYSvZQVTnX2SnugGXWVwt4+9qtqtvNT5MvWKK3M9lCFDbJJy/qVTjzPJlaiw==} dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - /callsites/3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - /camelcase/5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} + '@fluencelabs/aqua-lib': 0.5.2 + dev: true - /camelcase/6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} + /@fluencelabs/aqua-lib/0.5.2: + resolution: {integrity: sha512-fmoFFE8myhLH9d+YR0+0ZPL2YIQyR6M1woAGu5d1xXI02Sjzn4id6dE4PpxHb8cSBPRie8AwsKobHCNqGxI8oA==} + dev: true - /caniuse-lite/1.0.30001382: - resolution: {integrity: sha512-2rtJwDmSZ716Pxm1wCtbPvHtbDWAreTPxXbkc5RkKglow3Ig/4GNGazDI9/BVnXbG/wnv6r3B5FEbkfg9OcTGg==} + /@fluencelabs/aqua-lib/0.6.0: + resolution: {integrity: sha512-ifjtCM93KO3LhzPkMxqmXhwLmrg/scjOiyTihEVg7ns5N+BVzaK1eWzdOdqGdl9ZVoah43pdlQUepEo7VdRmsw==} + dev: true - /caseless/0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + /@fluencelabs/aqua/0.7.7-362_4ybkoodcah37urerzfcwvnjsoe: + resolution: {integrity: sha512-CwvBc3wKQdvnDM4Zxj6yFE5MR2oeh+EZ++m2hLvENt7OWl3cnZVR4cJQkRxMMLVT0MxRwLiy97UIBwGsPqlSCA==} + hasBin: true + dependencies: + '@fluencelabs/aqua-ipfs': 0.5.5 + '@fluencelabs/aqua-lib': 0.5.2 + '@fluencelabs/fluence': 0.26.3-snapshot-4_4ybkoodcah37urerzfcwvnjsoe + '@fluencelabs/fluence-network-environment': 1.0.13 + ipfs-http-client: 50.1.2_node-fetch@3.3.0 + transitivePeerDependencies: + - '@babel/core' + - '@types/jest' + - babel-jest + - bufferutil + - encoding + - esbuild + - jest + - node-fetch + - supports-color + - typescript + - utf-8-validate + dev: true - /chalk/2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + /@fluencelabs/aqua/0.9.1-374_jaxubti5gf66xc76fsqhxmuwn4: + resolution: {integrity: sha512-jF6oVE4h7bP/dQArKEfsy4UxbQbzACfVIBY/TFUL5D3np4ssjxrh15Y3gl1PwSWjlaPcDeFvAuStmcqfYQmLqQ==} + hasBin: true dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 + '@fluencelabs/aqua-ipfs': 0.5.8 + '@fluencelabs/aqua-lib': 0.6.0 + '@fluencelabs/fluence': 0.27.5_jaxubti5gf66xc76fsqhxmuwn4 + '@fluencelabs/fluence-network-environment': 1.0.13 + ipfs-http-client: 50.1.2_node-fetch@3.3.0 + transitivePeerDependencies: + - '@babel/core' + - '@types/jest' + - babel-jest + - bufferutil + - encoding + - esbuild + - jest + - node-fetch + - supports-color + - typescript + - utf-8-validate + dev: true - /chalk/4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + /@fluencelabs/aqua/0.9.4_sxyfz5frysr7cnkewysdljfvwu: + resolution: {integrity: sha512-DAy2XT4E4oR4Imgsc9ns8jd14StwxktHcZe3MTaZT1PDo3KdbrXda5MBGWFiuqhZcB/Xr4EruCvH/LscrsKlQg==} + hasBin: true dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 + '@fluencelabs/aqua-ipfs': 0.5.8 + '@fluencelabs/aqua-lib': 0.6.0 + '@fluencelabs/fluence': 0.28.0_sxyfz5frysr7cnkewysdljfvwu + '@fluencelabs/fluence-network-environment': 1.0.13 + ipfs-http-client: 50.1.2_node-fetch@3.3.0 + transitivePeerDependencies: + - '@babel/core' + - '@types/jest' + - babel-jest + - bufferutil + - encoding + - esbuild + - jest + - node-fetch + - supports-color + - typescript + - utf-8-validate + dev: true - /char-regex/1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} + /@fluencelabs/avm/0.31.10: + resolution: {integrity: sha512-tkpjdHyRmsTwAEZCJt15//jXEgC2Nw2qFiD1NenvK127SlgKeuzQU9IMReUYY3dowb2IGeC578/uGMu96jHYKw==} - /ci-info/3.3.2: - resolution: {integrity: sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==} + /@fluencelabs/avm/0.31.4: + resolution: {integrity: sha512-rApXdqk0NUX+Fyq9BJ1jQ7X//EfVrAg9wrjdd4K/tvo54Lgij0tY/IT+imwr/Eb4qgHgi1QMW4zT0AOlgKIKmw==} + dev: true - /cids/1.1.9: - resolution: {integrity: sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==} - engines: {node: '>=4.0.0', npm: '>=3.0.0'} + /@fluencelabs/avm/0.35.3: + resolution: {integrity: sha512-Y5mPPCmAUUKc5CDO12IL8mGEreWa7maVdX0MWCAH4+GvfLPFN1FxOMSKRYEtvkyVEL88pc9pd8cm5IRCBkFthg==} + + /@fluencelabs/connection/0.2.0_node-fetch@3.3.0: + resolution: {integrity: sha512-0jTRI1h/j/fR2VaLIlcIm6VoP3j2jL2lI6/OaYaOnwGXmI6CbZWHNeq9eaKWycT9B1vpN9wHu0Vi7vH3pFplhg==} + engines: {node: '>=10', pnpm: '>=3'} dependencies: - multibase: 4.0.6 - multicodec: 3.2.1 - multihashes: 4.0.3 - uint8arrays: 3.1.0 + '@chainsafe/libp2p-noise': 4.1.2 + '@fluencelabs/interfaces': 0.1.0 + browser-or-node: 2.0.0 + buffer: 6.0.3 + it-length-prefixed: 5.0.3 + it-pipe: 1.1.0 + libp2p: 0.36.2_node-fetch@3.3.0 + libp2p-interfaces: 4.0.6_node-fetch@3.3.0 + libp2p-mplex: 0.10.7 + libp2p-websockets: 0.16.2_node-fetch@3.3.0 + loglevel: 1.8.0 + multiaddr: 10.0.1_node-fetch@3.3.0 + peer-id: 0.16.0 + transitivePeerDependencies: + - bufferutil + - encoding + - node-fetch + - supports-color + - utf-8-validate + dev: true - /cjs-module-lexer/1.2.2: - resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} + /@fluencelabs/fluence-network-environment/1.0.13: + resolution: {integrity: sha512-2pci3T0sUHE08jwEs1r/vHKVT4XUh/A3j/QJ0eIhddsxyIjEksjdn05X7DF6STD14CF8GgBVOJEPgav8qaUMpA==} - /class-is/1.1.0: - resolution: {integrity: sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==} + /@fluencelabs/fluence/0.26.3-snapshot-4_4ybkoodcah37urerzfcwvnjsoe: + resolution: {integrity: sha512-M/iQhnViXfMaATj3gFPQXrZe9zSVcyN9F9A9hfJBUn0VLamhmbfeIoSZeheK8VGBxYbRGcrtoqLPTy1vJQVgVw==} + engines: {node: '>=10', pnpm: '>=3'} + hasBin: true + dependencies: + '@fluencelabs/avm': 0.31.4 + '@fluencelabs/connection': 0.2.0_node-fetch@3.3.0 + '@fluencelabs/interfaces': 0.1.0 + '@fluencelabs/keypair': 0.2.0 + '@fluencelabs/marine-js': 0.3.18_ddylxr3wxksmlyjpihqkkowegi + async: 3.2.3 + base64-js: 1.5.1 + browser-or-node: 2.1.1 + bs58: 5.0.0 + buffer: 6.0.3 + cids: 1.1.9 + loglevel: 1.8.0 + multiformats: 9.6.5 + peer-id: 0.16.0 + platform: 1.3.6 + rxjs: 7.5.5 + ts-pattern: 3.3.3 + uuid: 8.3.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/jest' + - babel-jest + - bufferutil + - encoding + - esbuild + - jest + - node-fetch + - supports-color + - typescript + - utf-8-validate + dev: true - /clean-stack/2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} + /@fluencelabs/fluence/0.27.5_jaxubti5gf66xc76fsqhxmuwn4: + resolution: {integrity: sha512-nMCzd/oHHk5/yWdg/+rPB+sc8X+fQ5YgwPhGVDoxFs8/CmIr1G5Na8Y6l8rrigasgQd+LV5GtAyh50Oq7/IXkg==} + engines: {node: '>=10', pnpm: '>=3'} + hasBin: true + dependencies: + '@fluencelabs/avm': 0.31.10 + '@fluencelabs/connection': 0.2.0_node-fetch@3.3.0 + '@fluencelabs/interfaces': 0.1.0 + '@fluencelabs/keypair': 0.2.0 + '@fluencelabs/marine-js': 0.3.37_g4n3hsjlbmz4ag5o32ytojordu + async: 3.2.4 + base64-js: 1.5.1 + browser-or-node: 2.0.0 + bs58: 5.0.0 + buffer: 6.0.3 + cids: 1.1.9 + loglevel: 1.8.1 + multiformats: 9.9.0 + peer-id: 0.16.0 + platform: 1.3.6 + rxjs: 7.8.0 + ts-pattern: 3.3.3 + uuid: 8.3.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/jest' + - babel-jest + - bufferutil + - encoding + - esbuild + - jest + - node-fetch + - supports-color + - typescript + - utf-8-validate + dev: true - /cliui/7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + /@fluencelabs/fluence/0.28.0_sxyfz5frysr7cnkewysdljfvwu: + resolution: {integrity: sha512-SXb2vjTj8m/nw4jEILV0tu9VIFprGo8mNb2nOB5btxdsOI8GzQZkpGzTLrSd/+UagIo2GdxAu0GhBP8dxZXaqg==} + engines: {node: '>=10', pnpm: '>=3'} + hasBin: true dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 + '@fluencelabs/avm': 0.35.3 + '@fluencelabs/connection': 0.2.0_node-fetch@3.3.0 + '@fluencelabs/interfaces': 0.1.0 + '@fluencelabs/keypair': 0.2.0 + '@fluencelabs/marine-js': 0.3.37_cnngzrja2umb46xxazlucyx2qu + async: 3.2.4 + base64-js: 1.5.1 + browser-or-node: 2.0.0 + bs58: 5.0.0 + buffer: 6.0.3 + cids: 1.1.9 + loglevel: 1.8.1 + multiformats: 9.9.0 + peer-id: 0.16.0 + platform: 1.3.6 + rxjs: 7.8.0 + ts-pattern: 3.3.3 + uuid: 8.3.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/jest' + - babel-jest + - bufferutil + - encoding + - esbuild + - jest + - node-fetch + - supports-color + - typescript + - utf-8-validate + dev: true - /co/4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + /@fluencelabs/interfaces/0.1.0: + resolution: {integrity: sha512-1nBgrTXa0vwloMMw3iJgbkqK23O6y1hM9YAEOwkUcmvvHQG/OPSYtzAenW7djGhNlA4Lk8QIV4bKNn54WIzjdA==} + engines: {node: '>=10', pnpm: '>=3'} + dev: true - /collect-v8-coverage/1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + /@fluencelabs/keypair/0.2.0: + resolution: {integrity: sha512-sNFvoeefSa0Xa/xzzLwWBXPMB4y/vHEFh3BaA6FCGNPwbtN0pje9rd8AOgSP9fjlTPpxy3TuBI+eAIzBk5b+SQ==} + engines: {node: '>=10', pnpm: '>=3'} + dependencies: + js-base64: 3.7.5 + libp2p-crypto: 0.21.2 + peer-id: 0.16.0 + dev: true - /color-convert/1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + /@fluencelabs/marine-js/0.3.18_ddylxr3wxksmlyjpihqkkowegi: + resolution: {integrity: sha512-aNuGtyY910kJvtRwfqmZKjVs+1l3LVWShv5xvkY04faHm65nX3sZLe8UHwughdja/4ixV1IFKlaTUgw2u3Sf5A==} dependencies: - color-name: 1.1.3 + '@wasmer/wasi': 0.12.0 + '@wasmer/wasmfs': 0.12.0 + browser-or-node: 2.1.1 + buffer: 6.0.3 + threads: 1.7.0 + ts-jest: 27.1.5_ddylxr3wxksmlyjpihqkkowegi + transitivePeerDependencies: + - '@babel/core' + - '@types/jest' + - babel-jest + - esbuild + - jest + - supports-color + - typescript + dev: true - /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + /@fluencelabs/marine-js/0.3.37_cnngzrja2umb46xxazlucyx2qu: + resolution: {integrity: sha512-/Kpu3S+aDOfrOpKBAK1VeWSHKCoD36/dxtHEWHbj3Lsro0GB9zkoaZPHlFFL7rorCB+hyjAJqLDuBGI8f3l/qg==} dependencies: - color-name: 1.1.4 + '@wasmer/wasi': 0.12.0 + '@wasmer/wasmfs': 0.12.0 + browser-or-node: 2.0.0 + buffer: 6.0.3 + threads: 1.7.0 + ts-jest: 27.1.5_cnngzrja2umb46xxazlucyx2qu + transitivePeerDependencies: + - '@babel/core' + - '@types/jest' + - babel-jest + - esbuild + - jest + - supports-color + - typescript + dev: true - /color-name/1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + /@fluencelabs/marine-js/0.3.37_g4n3hsjlbmz4ag5o32ytojordu: + resolution: {integrity: sha512-/Kpu3S+aDOfrOpKBAK1VeWSHKCoD36/dxtHEWHbj3Lsro0GB9zkoaZPHlFFL7rorCB+hyjAJqLDuBGI8f3l/qg==} + dependencies: + '@wasmer/wasi': 0.12.0 + '@wasmer/wasmfs': 0.12.0 + browser-or-node: 2.0.0 + buffer: 6.0.3 + threads: 1.7.0 + ts-jest: 27.1.5_g4n3hsjlbmz4ag5o32ytojordu + transitivePeerDependencies: + - '@babel/core' + - '@types/jest' + - babel-jest + - esbuild + - jest + - supports-color + - typescript + dev: true - /color-name/1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /@fluencelabs/marine-js/0.3.42: + resolution: {integrity: sha512-v8FuQ7CvImFjG4kZXnE7b1h2/J3/5JWiGMc64M2AtkI2ipdk3uGB+xaIzxpx4Zcvpp9gEr2EQonpaZCu7Qx2hg==} + dependencies: + '@wasmer/wasi': 0.12.0 + '@wasmer/wasmfs': 0.12.0 - /combined-stream/1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + /@fluencelabs/marine-js/0.3.44: + resolution: {integrity: sha512-DbI/x0bRv44oqfMZJlIkVhzZByXhmnOoxpco/cglk5aAvslOSDdRssf3bZADqqUQggGdtISOZcYPM+a4tirYLQ==} dependencies: - delayed-stream: 1.0.0 + '@wasmer/wasi': 0.12.0 + '@wasmer/wasmfs': 0.12.0 + default-import: 1.1.5 - /commander/2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + /@fluencelabs/registry/0.7.0: + resolution: {integrity: sha512-9yL/CFqGgw6RvPSJZGYM7dCEVQUXrC+cHFAcNWLAcFkA3RaB4znqFYFQRFeo5VUvv1mda9l1BEdv1Q4uO17/hw==} + dependencies: + '@fluencelabs/aqua-lib': 0.5.2 + '@fluencelabs/trust-graph': 3.1.2 dev: true - /concat-map/0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - /convert-source-map/1.8.0: - resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} + /@fluencelabs/trust-graph/3.1.2: + resolution: {integrity: sha512-HpyHtiomh09wv6/83z+bhbkqVngIUdqNGEXRTIPg4sArVPMZ9UCXBrkQsHDRqdMUx0lBAcgB3IjlbdhkwHGaXA==} dependencies: - safe-buffer: 5.1.2 + '@fluencelabs/aqua-lib': 0.5.2 + dev: true - /core-util-is/1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + /@humanwhocodes/config-array/0.11.8: + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: false - /create-require/1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + /@humanwhocodes/module-importer/1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} dev: false - /cross-spawn/7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: false - /dashdash/1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} + /@istanbuljs/load-nyc-config/1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} dependencies: - assert-plus: 1.0.0 + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 - /data-uri-to-buffer/4.0.0: - resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} - engines: {node: '>= 12'} + /@istanbuljs/schema/0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} - /datastore-core/7.0.3: - resolution: {integrity: sha512-DmPsUux63daOfCszxLkcp6LjdJ0k/BQNhIMtoAi5mbraYQnEQkFtKORmTu6XmDX6ujbtaBkeuJAiCBNI7MZklw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + /@jest/console/27.5.1: + resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - debug: 4.3.4 - err-code: 3.0.1 - interface-datastore: 6.1.1 - it-drain: 1.0.5 - it-filter: 1.0.3 - it-map: 1.0.6 - it-merge: 1.0.4 - it-pipe: 1.1.0 - it-pushable: 1.4.2 - it-take: 1.0.2 - uint8arrays: 3.1.0 + '@jest/types': 27.5.1 + '@types/node': 16.18.12 + chalk: 4.1.2 + jest-message-util: 27.5.1 + jest-util: 27.5.1 + slash: 3.0.0 + + /@jest/console/28.1.3: + resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@types/node': 16.11.59 + chalk: 4.1.2 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + slash: 3.0.0 + + /@jest/console/29.4.2: + resolution: {integrity: sha512-0I/rEJwMpV9iwi9cDEnT71a5nNGK9lj8Z4+1pRAU2x/thVXCDnaTGrvxyK+cAqZTFVFCiR+hfVrP4l2m+dCmQg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.4.2 + '@types/node': 18.13.0 + chalk: 4.1.2 + jest-message-util: 29.4.2 + jest-util: 29.4.2 + slash: 3.0.0 + dev: true + + /@jest/core/27.5.1: + resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: 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 + '@types/node': 16.18.12 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.10 + 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 + micromatch: 4.0.5 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 transitivePeerDependencies: + - bufferutil + - canvas - supports-color + - ts-node + - utf-8-validate - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} + /@jest/core/27.5.1_ts-node@10.9.1: + resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: - supports-color: '*' + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: - supports-color: + node-notifier: optional: true dependencies: - ms: 2.1.2 - - /dedent/0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + '@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 + '@types/node': 16.18.12 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.8.1 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-changed-files: 27.5.1 + jest-config: 27.5.1_ts-node@10.9.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 + micromatch: 4.0.5 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true - /deepmerge/4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} - engines: {node: '>=0.10.0'} + /@jest/core/28.1.3: + resolution: {integrity: sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==} + engines: {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 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@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': 16.11.59 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-changed-files: 28.1.3 + jest-config: 28.1.3_@types+node@16.11.59 + 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.5 + pretty-format: 28.1.3 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true - /default-gateway/6.0.3: - resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} - engines: {node: '>= 10'} + /@jest/core/29.4.2: + resolution: {integrity: sha512-KGuoQah0P3vGNlaS/l9/wQENZGNKGoWb+OPxh3gz+YzG7/XExvYu34MzikRndQCdM2S0tzExN4+FL37i6gZmCQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - execa: 5.1.1 + '@jest/console': 29.4.2 + '@jest/reporters': 29.4.2 + '@jest/test-result': 29.4.2 + '@jest/transform': 29.4.2 + '@jest/types': 29.4.2 + '@types/node': 18.13.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-changed-files: 29.4.2 + jest-config: 29.4.2_@types+node@18.13.0 + jest-haste-map: 29.4.2 + jest-message-util: 29.4.2 + jest-regex-util: 29.4.2 + jest-resolve: 29.4.2 + jest-resolve-dependencies: 29.4.2 + jest-runner: 29.4.2 + jest-runtime: 29.4.2 + jest-snapshot: 29.4.2 + jest-util: 29.4.2 + jest-validate: 29.4.2 + jest-watcher: 29.4.2 + micromatch: 4.0.5 + pretty-format: 29.4.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true - /delayed-stream/1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + /@jest/environment/27.5.1: + resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.12 + jest-mock: 27.5.1 - /detect-newline/3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} + /@jest/environment/28.1.3: + resolution: {integrity: sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 16.11.59 + jest-mock: 28.1.3 + dev: true - /diff-sequences/27.5.1: - resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/environment/29.4.2: + resolution: {integrity: sha512-JKs3VUtse0vQfCaFGJRX1bir9yBdtasxziSyu+pIiEllAQOe4oQhdCYIf3+Lx+nGglFktSKToBnRJfD5QKp+NQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.4.2 + '@jest/types': 29.4.2 + '@types/node': 18.13.0 + jest-mock: 29.4.2 + dev: true - /diff-sequences/28.1.1: - resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} + /@jest/expect-utils/28.1.3: + resolution: {integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + jest-get-type: 28.0.2 + dev: true - /diff/4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: false + /@jest/expect-utils/29.4.2: + resolution: {integrity: sha512-Dd3ilDJpBnqa0GiPN7QrudVs0cczMMHtehSo2CSTjm3zdHx0RcpmhFNVEltuEFeqfLIyWKFI224FsMSQ/nsJQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.2 + dev: true - /dns-over-http-resolver/1.2.3: - resolution: {integrity: sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==} + /@jest/expect/28.1.3: + resolution: {integrity: sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - debug: 4.3.4 - native-fetch: 3.0.0 - receptacle: 1.3.2 + expect: 28.1.3 + jest-snapshot: 28.1.3 transitivePeerDependencies: - supports-color + dev: true - /ecc-jsbn/0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + /@jest/expect/29.4.2: + resolution: {integrity: sha512-NUAeZVApzyaeLjfWIV/64zXjA2SS+NuUPHpAlO7IwVMGd5Vf9szTl9KEDlxY3B4liwLO31os88tYNHl6cpjtKQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 + expect: 29.4.2 + jest-snapshot: 29.4.2 + transitivePeerDependencies: + - supports-color + dev: true - /electron-fetch/1.7.4: - resolution: {integrity: sha512-+fBLXEy4CJWQ5bz8dyaeSG1hD6JJ15kBZyj3eh24pIVrd3hLM47H/umffrdQfS6GZ0falF0g9JT9f3Rs6AVUhw==} - engines: {node: '>=6'} + /@jest/fake-timers/27.5.1: + resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - encoding: 0.1.13 - - /electron-to-chromium/1.4.227: - resolution: {integrity: sha512-I9VVajA3oswIJOUFg2PSBqrHLF5Y+ahIfjOV9+v6uYyBqFZutmPxA6fxocDUUmgwYevRWFu1VjLyVG3w45qa/g==} + '@jest/types': 27.5.1 + '@sinonjs/fake-timers': 8.1.0 + '@types/node': 16.18.12 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-util: 27.5.1 - /elliptic/6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + /@jest/fake-timers/28.1.3: + resolution: {integrity: sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - /emittery/0.10.2: - resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} - engines: {node: '>=12'} - - /emoji-regex/8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + '@jest/types': 28.1.3 + '@sinonjs/fake-timers': 9.1.2 + '@types/node': 16.11.59 + jest-message-util: 28.1.3 + jest-mock: 28.1.3 + jest-util: 28.1.3 + dev: true - /encoding/0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + /@jest/fake-timers/29.4.2: + resolution: {integrity: sha512-Ny1u0Wg6kCsHFWq7A/rW/tMhIedq2siiyHyLpHCmIhP7WmcAmd2cx95P+0xtTZlj5ZbJxIRQi4OPydZZUoiSQQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - iconv-lite: 0.6.3 + '@jest/types': 29.4.2 + '@sinonjs/fake-timers': 10.0.2 + '@types/node': 18.13.0 + jest-message-util: 29.4.2 + jest-mock: 29.4.2 + jest-util: 29.4.2 + dev: true - /end-of-stream/1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + /@jest/globals/27.5.1: + resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - once: 1.4.0 - - /err-code/3.0.1: - resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} + '@jest/environment': 27.5.1 + '@jest/types': 27.5.1 + expect: 27.5.1 - /error-ex/1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + /@jest/globals/28.1.3: + resolution: {integrity: sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - is-arrayish: 0.2.1 - - /es6-promisify/7.0.0: - resolution: {integrity: sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==} - engines: {node: '>=6'} - - /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + '@jest/environment': 28.1.3 + '@jest/expect': 28.1.3 + '@jest/types': 28.1.3 + transitivePeerDependencies: + - supports-color + dev: true - /escape-string-regexp/1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + /@jest/globals/29.4.2: + resolution: {integrity: sha512-zCk70YGPzKnz/I9BNFDPlK+EuJLk21ur/NozVh6JVM86/YYZtZHqxFFQ62O9MWq7uf3vIZnvNA0BzzrtxD9iyg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.4.2 + '@jest/expect': 29.4.2 + '@jest/types': 29.4.2 + jest-mock: 29.4.2 + transitivePeerDependencies: + - supports-color + dev: true - /escape-string-regexp/2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - - /esm/3.2.25: - resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} - engines: {node: '>=6'} - optional: true - - /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - - /event-iterator/2.0.0: - resolution: {integrity: sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==} - - /event-target-shim/5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: true - - /eventemitter3/4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - - /events/3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - /execa/5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + /@jest/reporters/27.5.1: + resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - /exit/0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} + '@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 + '@types/node': 16.18.12 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-haste-map: 27.5.1 + jest-resolve: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 8.1.1 + transitivePeerDependencies: + - supports-color - /expect/28.1.3: - resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==} + /@jest/reporters/28.1.3: + resolution: {integrity: sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==} engines: {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 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - '@jest/expect-utils': 28.1.3 - jest-get-type: 28.0.2 - jest-matcher-utils: 28.1.3 + '@bcoe/v8-coverage': 0.2.3 + '@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.17 + '@types/node': 16.11.59 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 jest-message-util: 28.1.3 jest-util: 28.1.3 + jest-worker: 28.1.3 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + terminal-link: 2.1.1 + v8-to-istanbul: 9.0.1 + transitivePeerDependencies: + - supports-color + dev: true - /extend/3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + /@jest/reporters/29.4.2: + resolution: {integrity: sha512-10yw6YQe75zCgYcXgEND9kw3UZZH5tJeLzWv4vTk/2mrS1aY50A37F+XT2hPO5OqQFFnUWizXD8k1BMiATNfUw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.4.2 + '@jest/test-result': 29.4.2 + '@jest/transform': 29.4.2 + '@jest/types': 29.4.2 + '@jridgewell/trace-mapping': 0.3.17 + '@types/node': 18.13.0 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-message-util: 29.4.2 + jest-util: 29.4.2 + jest-worker: 29.4.2 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.0.1 + transitivePeerDependencies: + - supports-color + dev: true - /extsprintf/1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} + /@jest/schemas/28.1.3: + resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@sinclair/typebox': 0.24.51 - /fast-deep-equal/3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + /@jest/schemas/29.4.2: + resolution: {integrity: sha512-ZrGzGfh31NtdVH8tn0mgJw4khQuNHiKqdzJAFbCaERbyCP9tHlxWuL/mnMu8P7e/+k4puWjI1NOzi/sFsjce/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.25.21 + dev: true - /fast-extend/1.0.2: - resolution: {integrity: sha512-XXA9RmlPatkFKUzqVZAFth18R4Wo+Xug/S+C7YlYA3xrXwfPlW3dqNwOb4hvQo7wZJ2cNDYhrYuPzVOfHy5/uQ==} + /@jest/source-map/27.5.1: + resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.10 + source-map: 0.6.1 - /fast-fifo/1.1.0: - resolution: {integrity: sha512-Kl29QoNbNvn4nhDsLYjyIAaIqaJB6rBx5p3sL9VjaefJ+eMFBWVZiaoguaoZfzEKr5RhAti0UgM8703akGPJ6g==} + /@jest/source-map/28.1.2: + resolution: {integrity: sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.17 + callsites: 3.1.0 + graceful-fs: 4.2.10 + dev: true - /fast-json-stable-stringify/2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + /@jest/source-map/29.4.2: + resolution: {integrity: sha512-tIoqV5ZNgYI9XCKXMqbYe5JbumcvyTgNN+V5QW4My033lanijvCD0D4PI9tBw4pRTqWOc00/7X3KVvUh+qnF4Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.17 + callsites: 3.1.0 + graceful-fs: 4.2.10 + dev: true - /fb-watchman/2.0.1: - resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} + /@jest/test-result/27.5.1: + resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - bser: 2.1.1 + '@jest/console': 27.5.1 + '@jest/types': 27.5.1 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 - /fetch-blob/3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} + /@jest/test-result/28.1.3: + resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.2.1 + '@jest/console': 28.1.3 + '@jest/types': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 - /file-uri-to-path/1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + /@jest/test-result/29.4.2: + resolution: {integrity: sha512-HZsC3shhiHVvMtP+i55MGR5bPcc3obCFbA5bzIOb8pCjwBZf11cZliJncCgaVUbC5yoQNuGqCkC0Q3t6EItxZA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.4.2 + '@jest/types': 29.4.2 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 + dev: true - /fill-range/7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + /@jest/test-sequencer/27.5.1: + resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - to-regex-range: 5.0.1 + '@jest/test-result': 27.5.1 + graceful-fs: 4.2.10 + jest-haste-map: 27.5.1 + jest-runtime: 27.5.1 + transitivePeerDependencies: + - supports-color - /find-up/4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + /@jest/test-sequencer/28.1.3: + resolution: {integrity: sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 + '@jest/test-result': 28.1.3 + graceful-fs: 4.2.10 + jest-haste-map: 28.1.3 + slash: 3.0.0 + dev: true - /forever-agent/0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + /@jest/test-sequencer/29.4.2: + resolution: {integrity: sha512-9Z2cVsD6CcObIVrWigHp2McRJhvCxL27xHtrZFgNC1RwnoSpDx6fZo8QYjJmziFlW9/hr78/3sxF54S8B6v8rg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.4.2 + graceful-fs: 4.2.10 + jest-haste-map: 29.4.2 + slash: 3.0.0 + dev: true - /form-data/2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} + /@jest/transform/27.5.1: + resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 + '@babel/core': 7.20.12 + '@jest/types': 27.5.1 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.10 + jest-haste-map: 27.5.1 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color - /form-data/4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + /@jest/transform/28.1.3: + resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 + '@babel/core': 7.20.12 + '@jest/types': 28.1.3 + '@jridgewell/trace-mapping': 0.3.17 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.10 + jest-haste-map: 28.1.3 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color dev: true - /formdata-polyfill/4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} + /@jest/transform/29.4.2: + resolution: {integrity: sha512-kf1v5iTJHn7p9RbOsBuc/lcwyPtJaZJt5885C98omWz79NIeD3PfoiiaPSu7JyCyFzNOIzKhmMhQLUhlTL9BvQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - fetch-blob: 3.2.0 - - /fs-constants/1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - - /fs-monkey/0.3.3: - resolution: {integrity: sha512-FNUvuTAJ3CqCQb5ELn+qCbGR/Zllhf2HtwsdAtBi59s1WeCjKMT81fHcSu7dwIskqGVK+MmOrb7VOBlq3/SItw==} - - /fs.realpath/1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + '@babel/core': 7.20.12 + '@jest/types': 29.4.2 + '@jridgewell/trace-mapping': 0.3.17 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.10 + jest-haste-map: 29.4.2 + jest-regex-util: 29.4.2 + jest-util: 29.4.2 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true - /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - optional: true + /@jest/types/27.5.1: + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 16.18.12 + '@types/yargs': 16.0.5 + chalk: 4.1.2 - /function-bind/1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /@jest/types/28.1.3: + resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/schemas': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 16.11.59 + '@types/yargs': 17.0.22 + chalk: 4.1.2 - /gensync/1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + /@jest/types/29.4.2: + resolution: {integrity: sha512-CKlngyGP0fwlgC1BRUtPZSiWLBhyS9dKwKmyGxk8Z6M82LBEGB2aLQSg+U1MyLsU+M7UjnlLllBM2BLWKVm/Uw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.2 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.13.0 + '@types/yargs': 17.0.22 + chalk: 4.1.2 + dev: true - /get-caller-file/2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} + /@jridgewell/gen-mapping/0.1.1: + resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 - /get-iterator/1.0.2: - resolution: {integrity: sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==} + /@jridgewell/gen-mapping/0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.17 - /get-package-type/0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} - /get-stream/6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} - /getpass/0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + /@jridgewell/source-map/0.3.2: + resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} dependencies: - assert-plus: 1.0.0 + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + dev: false - /glob/7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 - /glob/8.0.3: - resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} - engines: {node: '>=12'} + /@jridgewell/trace-mapping/0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.0 - once: 1.4.0 + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /globals/11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} + /@leichtgewicht/ip-codec/2.0.4: + resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} + dev: false - /graceful-fs/4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + /@libp2p/crypto/1.0.12_uint8arraylist@2.4.3: + resolution: {integrity: sha512-IvTKqI+7O9sTd7K9JSIRsOj/oruKj66qSopbSWkUd6KkcrYvm5vnreb39XPP+nitZcZFQyXj/ZDqTidAWWfYAg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@libp2p/interface-keys': 1.0.7 + '@libp2p/interfaces': 3.3.1 + '@noble/ed25519': 1.7.3 + '@noble/secp256k1': 1.7.1 + multiformats: 11.0.1 + node-forge: 1.3.1 + protons-runtime: 4.0.2_uint8arraylist@2.4.3 + uint8arrays: 4.0.3 + transitivePeerDependencies: + - uint8arraylist + dev: false - /har-schema/2.0.0: - resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} - engines: {node: '>=4'} + /@libp2p/crypto/1.0.8_uint8arraylist@2.4.3: + resolution: {integrity: sha512-L0nOms1gJKwT5HRzDiEzTon+VOqilez6jIx+J27aSRJjgK+PpWGP2pmo5t0K60EGbIkDK0XDMjQkj0TUecDk5g==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@libp2p/interface-keys': 1.0.7 + '@noble/ed25519': 1.7.3 + '@noble/secp256k1': 1.7.1 + err-code: 3.0.1 + multiformats: 10.0.3 + node-forge: 1.3.1 + protons-runtime: 4.0.2_uint8arraylist@2.4.3 + uint8arrays: 4.0.3 + transitivePeerDependencies: + - uint8arraylist + dev: false - /har-validator/5.1.5: - resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} - engines: {node: '>=6'} + /@libp2p/interface-address-manager/2.0.4: + resolution: {integrity: sha512-RcSi+z+xpVKJXq3BsfLf2rq8zb8VTAFown6uJBu02towMc0enYqqhwlV9DxcCaC573MgQ7gY2s/3XvxQdFraVA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - ajv: 6.12.6 - har-schema: 2.0.0 + '@libp2p/interfaces': 3.3.1 + '@multiformats/multiaddr': 11.3.0 + transitivePeerDependencies: + - supports-color + dev: false - /has-flag/3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + /@libp2p/interface-connection-encrypter/3.0.6: + resolution: {integrity: sha512-LwyYBN/aSa3IPCe7gBxffx/vaC0rFxAXlCbx4QGaWGtg6qK80Ouj89LEDWb3HkMbecNVWaV4TEqJIM5WnAAx1Q==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@libp2p/interface-peer-id': 2.0.1 + it-stream-types: 1.0.5 + uint8arraylist: 2.4.3 + dev: false - /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + /@libp2p/interface-connection-manager/1.3.7: + resolution: {integrity: sha512-GyRa7FXtwjbch4ucFa/jj6vcaQT2RyhUbH3q0tIOTzjntABTMzQrhn3BWOGU5deRp2K7cVOB/OzrdhHdGUxYQA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@libp2p/interface-connection': 3.0.8 + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interfaces': 3.3.1 + '@multiformats/multiaddr': 11.3.0 + transitivePeerDependencies: + - supports-color + dev: false - /has/1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} + /@libp2p/interface-connection/3.0.8: + resolution: {integrity: sha512-JiI9xVPkiSgW9hkvHWA4e599OLPNSACrpgtx6UffHG9N+Jpt0IOmM4iLic8bSIYkZJBOQFG1Sv/gVNB98Uq0Nw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - function-bind: 1.1.1 + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interfaces': 3.3.1 + '@multiformats/multiaddr': 11.3.0 + it-stream-types: 1.0.5 + uint8arraylist: 2.4.3 + transitivePeerDependencies: + - supports-color + dev: false - /hash.js/1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + /@libp2p/interface-content-routing/2.0.1: + resolution: {integrity: sha512-M3rYXMhH+102qyZzc0GzkKq10x100nWVXGns2qtN3O82Hy/6FxXdgLUGIGWMdCj/7ilaVAuTwx8V3+DGmDIiMw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 + '@libp2p/interface-peer-info': 1.0.8 + '@libp2p/interfaces': 3.3.1 + multiformats: 11.0.1 + transitivePeerDependencies: + - supports-color + dev: false - /hashlru/2.3.0: - resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} + /@libp2p/interface-dht/2.0.1: + resolution: {integrity: sha512-+yEbt+1hMTR1bITzYyE771jEujimPXqDyFm8T1a8slMpeOD9z5wmLfuCWif8oGZJzXX5YqldWwSwytJQgWXL9g==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@libp2p/interface-peer-discovery': 1.0.5 + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interface-peer-info': 1.0.8 + '@libp2p/interfaces': 3.3.1 + multiformats: 11.0.1 + transitivePeerDependencies: + - supports-color + dev: false - /hmac-drbg/1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + /@libp2p/interface-keychain/2.0.4: + resolution: {integrity: sha512-RCH0PL9um/ejsPiWIOzxFzjPzL2nT2tRUtCDo1aBQqoBi7eYp4I4ya1KbzgWDPTmNuuFtCReRMQsZ7/KVirKPA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 + '@libp2p/interface-peer-id': 2.0.1 + multiformats: 11.0.1 + dev: false - /html-escaper/2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + /@libp2p/interface-keys/1.0.7: + resolution: {integrity: sha512-DRMPY9LfcnGJKrjaqIkY62U3fW2dya3VLy4x986ExtMrGn4kxIHeQ1IKk8/Vs9CJHTKmXEMID4of1Cjnw4aJpA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false - /http-signature/1.2.0: - resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} - engines: {node: '>=0.8', npm: '>=1.3.7'} + /@libp2p/interface-libp2p/1.1.1: + resolution: {integrity: sha512-cELZZv/tzFxbUzL3Jvbk+AM2J6kDhIUNBIMMMLuR3LIHfmVJkh31G3ChLUZuKhBwB8wXJ1Ssev3fk1tfz/5DWA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - assert-plus: 1.0.0 - jsprim: 1.4.2 - sshpk: 1.17.0 + '@libp2p/interface-connection': 3.0.8 + '@libp2p/interface-content-routing': 2.0.1 + '@libp2p/interface-dht': 2.0.1 + '@libp2p/interface-keychain': 2.0.4 + '@libp2p/interface-metrics': 4.0.5 + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interface-peer-info': 1.0.8 + '@libp2p/interface-peer-routing': 1.0.7 + '@libp2p/interface-peer-store': 1.2.8 + '@libp2p/interface-pubsub': 3.0.6 + '@libp2p/interface-registrar': 2.0.8 + '@libp2p/interfaces': 3.3.1 + '@multiformats/multiaddr': 11.3.0 + transitivePeerDependencies: + - supports-color + dev: false - /human-signals/2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} + /@libp2p/interface-metrics/4.0.5: + resolution: {integrity: sha512-srBeky1ugu1Bzw9VHGg8ta15oLh+P2PEIsg0cI9qzDbtCJaWGq/IIetpfuaJNVOuBD1CGEEbITNmsk4tDwIE0w==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@libp2p/interface-connection': 3.0.8 + transitivePeerDependencies: + - supports-color + dev: false - /iconv-lite/0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} + /@libp2p/interface-peer-discovery/1.0.5: + resolution: {integrity: sha512-R0TN/vDaCJLvRhop0y4qoPqapHxX4AEQDEtqmpayAA1BuPgbBq4fS4mepR3FAMcNva/szeqVCDuI4gDejtCaVg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - safer-buffer: 2.1.2 + '@libp2p/interface-peer-info': 1.0.8 + '@libp2p/interfaces': 3.3.1 + transitivePeerDependencies: + - supports-color + dev: false - /ieee754/1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + /@libp2p/interface-peer-id/2.0.1: + resolution: {integrity: sha512-k01hKHTAZWMOiBC+yyFsmBguEMvhPkXnQtqLtFqga2fVZu8Zve7zFAtQYLhQjeJ4/apeFtO6ddTS8mCE6hl4OA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + multiformats: 11.0.1 + dev: false - /import-local/3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} + /@libp2p/interface-peer-info/1.0.8: + resolution: {integrity: sha512-LRvZt/9bZFYW7seAwuSg2hZuPl+FRTAsij5HtyvVwmpfVxipm6yQrKjQ+LiK/SZhIDVsSJ+UjF0mluJj+jeAzQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 + '@libp2p/interface-peer-id': 2.0.1 + '@multiformats/multiaddr': 11.3.0 + transitivePeerDependencies: + - supports-color + dev: false - /imurmurhash/0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + /@libp2p/interface-peer-routing/1.0.7: + resolution: {integrity: sha512-0zxOOmKD6nA3LaArcP9UdRO4vJzEyoRtE34vvQP41UxjcSTaj4em5Fl4Q0RuOMXYPtRp+LdXRYbjJgCSeQoxwA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interface-peer-info': 1.0.8 + '@libp2p/interfaces': 3.3.1 + transitivePeerDependencies: + - supports-color + dev: false - /indent-string/4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} + /@libp2p/interface-peer-store/1.2.8: + resolution: {integrity: sha512-FM9VLmpg9CUBKZ2RW+J7RrQfQVMksLiC8oqENqHgb/VkPJY3kafbn7HIi0NcK6H/H5VcwBIhL15SUJk66O1K6g==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interface-peer-info': 1.0.8 + '@libp2p/interface-record': 2.0.6 + '@libp2p/interfaces': 3.3.1 + '@multiformats/multiaddr': 11.3.0 + transitivePeerDependencies: + - supports-color + dev: false - /inflight/1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + /@libp2p/interface-pubsub/3.0.6: + resolution: {integrity: sha512-c1aVHAhxmEh9IpLBgJyCsMscVDl7YUeP1Iq6ILEQoWiPJhNpQqdfmqyk7ZfrzuBU19VFe1EqH0bLuLDbtfysTQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - once: 1.4.0 - wrappy: 1.0.2 + '@libp2p/interface-connection': 3.0.8 + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interfaces': 3.3.1 + it-pushable: 3.1.2 + uint8arraylist: 2.4.3 + transitivePeerDependencies: + - supports-color + dev: false - /inherits/2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + /@libp2p/interface-record/2.0.6: + resolution: {integrity: sha512-4EtDkY3sbYapWM8++gVHlv31HZXoLmj9I7CRXUKXzFkVE0GLK/A8jYWl7K0lmf2juPjeYm2eHITeA9/wAtIS3w==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@libp2p/interface-peer-id': 2.0.1 + uint8arraylist: 2.4.3 + dev: false - /interface-datastore/4.0.2: - resolution: {integrity: sha512-/XRmD7oagZMTaK25rV3WFrejLoUwxZcpgE+eNyZNYvb2jlB5P3MwJCIbetJSlVYK7yvaFmJi8s3f9VLcxJjdog==} + /@libp2p/interface-registrar/2.0.8: + resolution: {integrity: sha512-WbnXB09QF41zZzNgDUAZrRMilqgB7wBMTsSvql8xdDcws+jbaX4wE0iEpRXg1hyd0pz4mooIcMRaH1NiEQ5D8w==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - err-code: 3.0.1 - interface-store: 0.0.2 - ipfs-utils: 8.1.6 - iso-random-stream: 2.0.2 - it-all: 1.0.6 - it-drain: 1.0.5 - it-filter: 1.0.3 - it-take: 1.0.2 - nanoid: 3.3.4 - uint8arrays: 2.1.10 - dev: true + '@libp2p/interface-connection': 3.0.8 + '@libp2p/interface-peer-id': 2.0.1 + transitivePeerDependencies: + - supports-color + dev: false - /interface-datastore/6.1.1: - resolution: {integrity: sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg==} + /@libp2p/interface-stream-muxer/3.0.5: + resolution: {integrity: sha512-815aJ+qVswNcTEOuOUTcB+7OLzAfROyjjqoWpK0bD0P/xqTHqOQcqdaDuK02zPuAZqYq9uR3+SoBasrCg6k3zw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - interface-store: 2.0.2 - nanoid: 3.3.4 - uint8arrays: 3.1.0 + '@libp2p/interface-connection': 3.0.8 + '@libp2p/interfaces': 3.3.1 + it-stream-types: 1.0.5 + transitivePeerDependencies: + - supports-color + dev: false - /interface-ipld-format/1.0.1: - resolution: {integrity: sha512-WV/ar+KQJVoQpqRDYdo7YPGYIUHJxCuOEhdvsRpzLqoOIVCqPKdMMYmsLL1nCRsF3yYNio+PAJbCKiv6drrEAg==} + /@libp2p/interface-transport/2.1.1: + resolution: {integrity: sha512-xDM/s8iPN/XfNqD9qNelibRMPKkhOLinXwQeNtoTZjarq+Cg6rtO6/5WBG/49hyI3+r+5jd2eykjPGQbb86NFQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - cids: 1.1.9 - multicodec: 3.2.1 - multihashes: 4.0.3 - dev: true - - /interface-store/0.0.2: - resolution: {integrity: sha512-t4c9GKXH1Vi/WxmppGyIi6iedbGo92YmLneopHmbIEIp27ep7VnrYGA6lM/rLsFo5Tj6TJgIqr3FOk8mvPgIWQ==} - dev: true + '@libp2p/interface-connection': 3.0.8 + '@libp2p/interface-stream-muxer': 3.0.5 + '@libp2p/interfaces': 3.3.1 + '@multiformats/multiaddr': 11.3.0 + it-stream-types: 1.0.5 + transitivePeerDependencies: + - supports-color + dev: false - /interface-store/2.0.2: - resolution: {integrity: sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg==} + /@libp2p/interfaces/3.3.1: + resolution: {integrity: sha512-3N+goQt74SmaVOjwpwMPKLNgh1uDQGw8GD12c40Kc86WOq0qvpm3NfACW+H8Su2X6KmWjCSMzk9JWs9+8FtUfg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false - /ip-address/8.1.0: - resolution: {integrity: sha512-Wz91gZKpNKoXtqvY8ScarKYwhXoK4r/b5QuT+uywe/azv0/nUCo7Bh0IRRI7F9DHR06kJNWtzMGLIbXavngbKA==} - engines: {node: '>= 12'} + /@libp2p/logger/2.0.5: + resolution: {integrity: sha512-WEhxsc7+gsfuTcljI4vSgW/H2f18aBaC+JiO01FcX841Wxe9szjzHdBLDh9eqygUlzoK0LEeIBfctN7ibzus5A==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.2 - - /ip-regex/4.3.0: - resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} - engines: {node: '>=8'} - - /ipaddr.js/2.0.1: - resolution: {integrity: sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==} - engines: {node: '>= 10'} + '@libp2p/interface-peer-id': 2.0.1 + debug: 4.3.4 + interface-datastore: 7.0.4 + multiformats: 11.0.1 + transitivePeerDependencies: + - supports-color + dev: false - /ipfs-core-types/0.5.2: - resolution: {integrity: sha512-DOQeL+GFGYMTlnbdtMeBzvfVnyAalSgCfPr8XUCI+FVBZZWwzkt5jZZzGDmF87HVRrMR3FuVyBKZj772mcXKyQ==} + /@libp2p/mplex/7.1.1: + resolution: {integrity: sha512-0owK1aWgXXtjiohXtjwLV7Ehjdj96eBtsapVt7AzlHA+W8uYnI+x058thq3MisyMDlHiiE3BTh6fEf+t2/0dUw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - cids: 1.1.9 - interface-datastore: 4.0.2 - ipld-block: 0.11.1 - multiaddr: 9.0.2 - multibase: 4.0.6 + '@libp2p/interface-connection': 3.0.8 + '@libp2p/interface-stream-muxer': 3.0.5 + '@libp2p/logger': 2.0.5 + abortable-iterator: 4.0.2 + any-signal: 3.0.1 + benchmark: 2.1.4 + err-code: 3.0.1 + it-batched-bytes: 1.0.0 + it-pushable: 3.1.2 + it-stream-types: 1.0.5 + rate-limiter-flexible: 2.4.1 + uint8arraylist: 2.4.3 + uint8arrays: 4.0.3 + varint: 6.0.0 transitivePeerDependencies: - supports-color - dev: true + dev: false - /ipfs-core-utils/0.8.3: - resolution: {integrity: sha512-PY7PkCgCtVYtNOe1C3ew1+5D9NqXqizb886R/lyGWe+KsmWtBQkQIk0ZIDwKyHGvG2KA2QQeIDzdOmzBQBJtHQ==} + /@libp2p/multistream-select/3.1.2: + resolution: {integrity: sha512-NfF0fwQM4sqiLuNGBVc9z2mfz3OigOfyLJ5zekRBGYHkbKWrBRFS3FligUPr9roCOzH6ojjDkKVd5aK9/llfJQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - any-signal: 2.1.2 - blob-to-it: 1.0.4 - browser-readablestream-to-it: 1.0.3 - cids: 1.1.9 + '@libp2p/interfaces': 3.3.1 + '@libp2p/logger': 2.0.5 + abortable-iterator: 4.0.2 err-code: 3.0.1 - ipfs-core-types: 0.5.2 - ipfs-unixfs: 4.0.3 - ipfs-utils: 8.1.6 - it-all: 1.0.6 - it-map: 1.0.6 - it-peekable: 1.0.3 - multiaddr: 9.0.2 - multiaddr-to-uri: 7.0.0 - parse-duration: 1.0.2 - timeout-abort-controller: 1.1.1 - uint8arrays: 2.1.10 + it-first: 2.0.0 + it-handshake: 4.1.2 + it-length-prefixed: 8.0.4 + it-merge: 2.0.0 + it-pipe: 2.0.5 + it-pushable: 3.1.2 + it-reader: 6.0.2 + it-stream-types: 1.0.5 + p-defer: 4.0.0 + uint8arraylist: 2.4.3 + uint8arrays: 4.0.3 transitivePeerDependencies: - supports-color - dev: true + dev: false - /ipfs-http-client/50.1.2: - resolution: {integrity: sha512-ZbJlED4wqwFXQFVB9FQDs20ygdq7O/zSq4AvO9KRAmkqUj2TsCWCteUz2fBMnGWLh2tExxeSl/rQbHbJptb8JQ==} - engines: {node: '>=14.0.0', npm: '>=3.0.0'} + /@libp2p/peer-collections/3.0.0: + resolution: {integrity: sha512-rVhfDmkVzfBVR4scAfaKb05htZENx01PYt2USi1EnODyoo2c2U2W5tfOfyaKI/4D+ayQDOjT27G0ZCyAgwkYGw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - abort-controller: 3.0.0 - any-signal: 2.1.2 - cids: 1.1.9 - debug: 4.3.4 - form-data: 4.0.0 - ipfs-core-types: 0.5.2 - ipfs-core-utils: 0.8.3 - ipfs-unixfs: 4.0.3 - ipfs-utils: 8.1.6 - ipld-block: 0.11.1 - ipld-dag-cbor: 1.0.1 - ipld-dag-pb: 0.22.3 - ipld-raw: 7.0.1 - it-last: 1.0.6 - it-map: 1.0.6 - it-tar: 3.0.0 - it-to-stream: 1.0.0 - merge-options: 3.0.4 - multiaddr: 9.0.2 - multibase: 4.0.6 - multicodec: 3.2.1 - multihashes: 4.0.3 - nanoid: 3.3.4 - native-abort-controller: 1.0.4 - parse-duration: 1.0.2 - stream-to-it: 0.2.4 - uint8arrays: 2.1.10 + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/peer-id': 2.0.1 + dev: false + + /@libp2p/peer-id-factory/2.0.1: + resolution: {integrity: sha512-CRJmqwNQhDC51sQ9lf6EqEY8HuywwymMVffL2kIYI5ts5k+6gvIXzoSxLf3V3o+OxcroXG4KG0uGxxAi5DUXSA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@libp2p/crypto': 1.0.8_uint8arraylist@2.4.3 + '@libp2p/interface-keys': 1.0.7 + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/peer-id': 2.0.1 + multiformats: 11.0.1 + protons-runtime: 4.0.2_uint8arraylist@2.4.3 + uint8arraylist: 2.4.3 + uint8arrays: 4.0.3 + dev: false + + /@libp2p/peer-id/2.0.1: + resolution: {integrity: sha512-uGIR4rS+j+IzzIu0kih4MonZEfRmjGNfXaSPMIFOeMxZItZT6TIpxoVNYxHl4YtneSFKzlLnf9yx9EhRcyfy8Q==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interfaces': 3.3.1 + multiformats: 11.0.1 + uint8arrays: 4.0.3 + dev: false + + /@libp2p/peer-record/5.0.0: + resolution: {integrity: sha512-qGaqYQSRqI/vol1NEMR9Z3ncLjIkyIF0o/CQYXzXCDjA91i9+0iMjXGgIgBLn3bfA1b9pHuz4HvwjgYUKMYOkQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@libp2p/crypto': 1.0.12_uint8arraylist@2.4.3 + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interface-record': 2.0.6 + '@libp2p/logger': 2.0.5 + '@libp2p/peer-id': 2.0.1 + '@libp2p/utils': 3.0.4 + '@multiformats/multiaddr': 11.3.0 + err-code: 3.0.1 + interface-datastore: 7.0.4 + it-all: 2.0.0 + it-filter: 2.0.0 + it-foreach: 1.0.0 + it-map: 2.0.0 + it-pipe: 2.0.5 + multiformats: 11.0.1 + protons-runtime: 4.0.2_uint8arraylist@2.4.3 + uint8-varint: 1.0.4 + uint8arraylist: 2.4.3 + uint8arrays: 4.0.3 + varint: 6.0.0 transitivePeerDependencies: - supports-color - dev: true + dev: false - /ipfs-unixfs/4.0.3: - resolution: {integrity: sha512-hzJ3X4vlKT8FQ3Xc4M1szaFVjsc1ZydN+E4VQ91aXxfpjFn9G2wsMo1EFdAXNq/BUnN5dgqIOMP5zRYr3DTsAw==} - engines: {node: '>=14.0.0', npm: '>=7.0.0'} + /@libp2p/peer-store/6.0.0: + resolution: {integrity: sha512-7GSqRYkJR3E0Vo96XH84X6KNPdwOE1t6jb7jegYzvzKDZMFaceJUZg9om3+ZHCUbethnYuqsY7j0c7OHCB40nA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interface-peer-info': 1.0.8 + '@libp2p/interface-peer-store': 1.2.8 + '@libp2p/interface-record': 2.0.6 + '@libp2p/interfaces': 3.3.1 + '@libp2p/logger': 2.0.5 + '@libp2p/peer-id': 2.0.1 + '@libp2p/peer-record': 5.0.0 + '@multiformats/multiaddr': 11.3.0 err-code: 3.0.1 - protobufjs: 6.11.3 - dev: true + interface-datastore: 7.0.4 + it-all: 2.0.0 + it-filter: 2.0.0 + it-foreach: 1.0.0 + it-map: 2.0.0 + it-pipe: 2.0.5 + mortice: 3.0.1 + multiformats: 11.0.1 + protons-runtime: 4.0.2_uint8arraylist@2.4.3 + uint8arraylist: 2.4.3 + uint8arrays: 4.0.3 + transitivePeerDependencies: + - supports-color + dev: false - /ipfs-utils/8.1.6: - resolution: {integrity: sha512-V/cwb6113DrDhrjDTWImA6+zmJbpdbUkxdxmEQO7it8ykV76bBmzU1ZXSM0QR0qxGy9VW8dkUlPAC2K10VgSmw==} + /@libp2p/tracked-map/3.0.2: + resolution: {integrity: sha512-mtsZWf2ntttuCrmEIro2p1ceCAaKde2TzT/99DZlkGdJN/Mo1jZgXq7ltZjWc8G3DAlgs+0ygjMzNKcZzAveuQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - abort-controller: 3.0.0 - any-signal: 2.1.2 - buffer: 6.0.3 - electron-fetch: 1.7.4 - err-code: 3.0.1 - is-electron: 2.2.1 - iso-url: 1.2.1 - it-glob: 0.0.14 - it-to-stream: 1.0.0 - merge-options: 3.0.4 - nanoid: 3.3.4 - native-abort-controller: 1.0.4 - native-fetch: 3.0.0 - node-fetch: /@achingbrain/node-fetch/2.6.7 - react-native-fetch-api: 2.0.0 - stream-to-it: 0.2.4 - dev: true + '@libp2p/interface-metrics': 4.0.5 + transitivePeerDependencies: + - supports-color + dev: false - /ipfs-utils/9.0.7: - resolution: {integrity: sha512-Umvb0Zydy2zZiTmQBGLfLISr8vOmXX8cxEIP+N8zGHrtRShG/j32yl1xd/BtS+Hbg0FIbVm3opwvxB2gmta0YA==} + /@libp2p/utils/3.0.4: + resolution: {integrity: sha512-EWJNJtlop2ylmGE1BNiMA0u4eTLKoY0LbZ/DOvSDs9VlGSLua9J+LUjp6XV8lazGv7l1rOLiU+1hP5fcmg1+eg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - any-signal: 3.0.1 - buffer: 6.0.3 - electron-fetch: 1.7.4 + '@achingbrain/ip-address': 8.1.0 + '@libp2p/interface-connection': 3.0.8 + '@libp2p/interface-peer-store': 1.2.8 + '@libp2p/logger': 2.0.5 + '@multiformats/multiaddr': 11.3.0 + abortable-iterator: 4.0.2 err-code: 3.0.1 - is-electron: 2.2.1 - iso-url: 1.2.1 - it-glob: 1.0.2 - it-to-stream: 1.0.0 - merge-options: 3.0.4 - nanoid: 3.3.4 - native-fetch: 3.0.0 - node-fetch: /@achingbrain/node-fetch/2.6.7 - react-native-fetch-api: 2.0.0 - stream-to-it: 0.2.4 + is-loopback-addr: 2.0.1 + it-stream-types: 1.0.5 + private-ip: 3.0.0 + uint8arraylist: 2.4.3 + transitivePeerDependencies: + - supports-color + dev: false - /ipld-block/0.11.1: - resolution: {integrity: sha512-sDqqLqD5qh4QzGq6ssxLHUCnH4emCf/8F8IwjQM2cjEEIEHMUj57XhNYgmGbemdYPznUhffxFGEHsruh5+HQRw==} - engines: {node: '>=6.0.0', npm: '>=3.0.0'} + /@libp2p/websockets/5.0.3: + resolution: {integrity: sha512-/0ie47LEKU5VVeaeE/T6UbvaZbUSmyWXu4KcojY+zl809oONFjagKuZB6T7jJQqAV7WCq7O+ulC2tFOwbID08w==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - cids: 1.1.9 + '@libp2p/interface-connection': 3.0.8 + '@libp2p/interface-transport': 2.1.1 + '@libp2p/interfaces': 3.3.1 + '@libp2p/logger': 2.0.5 + '@libp2p/utils': 3.0.4 + '@multiformats/mafmt': 11.0.3 + '@multiformats/multiaddr': 11.3.0 + '@multiformats/multiaddr-to-uri': 9.0.2 + abortable-iterator: 4.0.2 + it-ws: 5.0.6 + p-defer: 4.0.0 + p-timeout: 6.1.1 + wherearewe: 2.0.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /@multiformats/base-x/4.0.1: + resolution: {integrity: sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==} dev: true - /ipld-dag-cbor/1.0.1: - resolution: {integrity: sha512-PZh8rHnRETX5bj60i73W2oq6BXoZnIvYCBDwIffYVJgxMr7BEVd5PycAARBiT6daORJ/4zbqEFR5CcrjeCtm/A==} - engines: {node: '>=6.0.0', npm: '>=3.0.0'} + /@multiformats/mafmt/11.0.3: + resolution: {integrity: sha512-DvCQeZJgaC4kE3BLqMuW3gQkNAW14Z7I+yMt30Ze+wkfHkWSp+bICcHGihhtgfzYCumHA/vHlJ9n54mrCcmnvQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - borc: 3.0.0 - cids: 1.1.9 - interface-ipld-format: 1.0.1 - is-circular: 1.0.2 - multicodec: 3.2.1 - multihashing-async: 2.1.4 - uint8arrays: 2.1.10 - dev: true + '@multiformats/multiaddr': 11.3.0 + transitivePeerDependencies: + - supports-color + dev: false - /ipld-dag-pb/0.22.3: - resolution: {integrity: sha512-dfG5C5OVAR4FEP7Al2CrHWvAyIM7UhAQrjnOYOIxXGQz5NlEj6wGX0XQf6Ru6or1na6upvV3NQfstapQG8X2rg==} - engines: {node: '>=6.0.0', npm: '>=3.0.0'} + /@multiformats/multiaddr-to-uri/9.0.2: + resolution: {integrity: sha512-vrWmfFadmix5Ab9l//oRQdQ7O3J5bGJpJRMSm21bHlQB0XV4xtNU6vMZBVXeu3Su79LgflEp37cjTFE3yKf3Hw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - cids: 1.1.9 - interface-ipld-format: 1.0.1 - multicodec: 3.2.1 - multihashing-async: 2.1.4 - protobufjs: 6.11.3 - stable: 0.1.8 - uint8arrays: 2.1.10 - dev: true + '@multiformats/multiaddr': 11.3.0 + transitivePeerDependencies: + - supports-color + dev: false - /ipld-raw/7.0.1: - resolution: {integrity: sha512-oaiy0Ot23NCnoBA7sLvPL9qFRC6JDB0IsdZL6rUeZJxzxabQuBLNGYXcqjQ8jlF0UPLEUSO+h8OJh2DZPzL2aQ==} + /@multiformats/multiaddr/11.3.0: + resolution: {integrity: sha512-Inrmp986nHe92pgYyOWNVnB8QDmYe5EhR/7TStc46O4YEm87pbc1i4DWiTlEJ6tOpL8V6IBH5ol8BZsIaN+Tww==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - cids: 1.1.9 - interface-ipld-format: 1.0.1 - multicodec: 3.2.1 - multihashing-async: 2.1.4 - dev: true + '@chainsafe/is-ip': 2.0.1 + dns-over-http-resolver: 2.1.1 + err-code: 3.0.1 + multiformats: 11.0.1 + uint8arrays: 4.0.3 + varint: 6.0.0 + transitivePeerDependencies: + - supports-color - /is-arrayish/0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /@nicolo-ribaudo/eslint-scope-5-internals/5.1.1-v1: + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + dependencies: + eslint-scope: 5.1.1 + dev: false - /is-buffer/2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} + /@noble/ed25519/1.7.3: + resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==} - /is-circular/1.0.2: - resolution: {integrity: sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA==} - dev: true + /@noble/secp256k1/1.7.1: + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} - /is-core-module/2.10.0: - resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} dependencies: - has: 1.0.3 - - /is-electron/2.2.1: - resolution: {integrity: sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw==} - - /is-fullwidth-code-point/3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: false - /is-generator-fn/2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: false - /is-ip/3.1.0: - resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==} - engines: {node: '>=8'} + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: - ip-regex: 4.3.0 - - /is-loopback-addr/1.0.1: - resolution: {integrity: sha512-DhWU/kqY7X2F6KrrVTu7mHlbd2Pbo4D1YkAzasBMjQs6lJAoefxaA6m6CpSX0K6pjt9D0b9PNFI5zduy/vzOYw==} + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: false - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + /@pmmmwh/react-refresh-webpack-plugin/0.5.10_unmakpayn7vcxadrrsbqlrpehy: + resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <4.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + dependencies: + ansi-html-community: 0.0.8 + common-path-prefix: 3.0.0 + core-js-pure: 3.27.2 + error-stack-parser: 2.1.4 + find-up: 5.0.0 + html-entities: 2.3.3 + loader-utils: 2.0.4 + react-refresh: 0.11.0 + schema-utils: 3.1.1 + source-map: 0.7.4 + webpack: 5.75.0 + webpack-dev-server: 4.11.1_webpack@5.75.0 + dev: false - /is-observable/2.1.0: - resolution: {integrity: sha512-DailKdLb0WU+xX8K5w7VsJhapwHLZ9jjmazqCJq4X12CTgqq73TKnbRcnSLuXYPOoLQgV5IrD7ePiX/h1vnkBw==} - engines: {node: '>=8'} + /@protobufjs/aspromise/1.1.2: + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - /is-plain-obj/2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} + /@protobufjs/base64/1.1.2: + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - /is-stream/2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} + /@protobufjs/codegen/2.0.4: + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - /is-typedarray/1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + /@protobufjs/eventemitter/1.1.0: + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - /isexe/2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /@protobufjs/fetch/1.1.0: + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 - /iso-constants/0.1.2: - resolution: {integrity: sha512-OTCM5ZCQsHBCI4Wdu4tSxvDIkmDHd5EwJDps5mKqnQnWJSKlnwMs3EDZ4n3Fh1tmkWkDlyd2vCDbEYuPbyrUNQ==} - engines: {node: '>=10'} - requiresBuild: true - dev: true + /@protobufjs/float/1.0.2: + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - /iso-random-stream/2.0.2: - resolution: {integrity: sha512-yJvs+Nnelic1L2vH2JzWvvPQFA4r7kSTnpST/+LkAQjSz0hos2oqLD+qIVi9Qk38Hoe7mNDt3j0S27R58MVjLQ==} - engines: {node: '>=10'} - dependencies: - events: 3.3.0 - readable-stream: 3.6.0 + /@protobufjs/inquire/1.1.0: + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - /iso-url/1.2.1: - resolution: {integrity: sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==} - engines: {node: '>=12'} + /@protobufjs/path/1.1.2: + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - /isstream/0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + /@protobufjs/pool/1.1.0: + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - /istanbul-lib-coverage/3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} + /@protobufjs/utf8/1.1.0: + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - /istanbul-lib-instrument/5.2.0: - resolution: {integrity: sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==} - engines: {node: '>=8'} + /@rollup/plugin-babel/5.3.1_3dsfpkpoyvuuxyfgdbpn4j4uzm: + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true dependencies: - '@babel/core': 7.18.13 - '@babel/parser': 7.18.13 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.20.12 + '@babel/helper-module-imports': 7.18.6 + '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + rollup: 2.79.1 + dev: false - /istanbul-lib-report/3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} + /@rollup/plugin-inject/5.0.3: + resolution: {integrity: sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 - supports-color: 7.2.0 + '@rollup/pluginutils': 5.0.2 + estree-walker: 2.0.2 + magic-string: 0.27.0 + dev: true - /istanbul-lib-source-maps/4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} + /@rollup/plugin-node-resolve/11.2.1_rollup@2.79.1: + resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 dependencies: - debug: 4.3.4 - istanbul-lib-coverage: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color + '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + '@types/resolve': 1.17.1 + builtin-modules: 3.3.0 + deepmerge: 4.3.0 + is-module: 1.0.0 + resolve: 1.22.1 + rollup: 2.79.1 + dev: false - /istanbul-reports/3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} - engines: {node: '>=8'} + /@rollup/plugin-replace/2.4.2_rollup@2.79.1: + resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - - /it-all/1.0.6: - resolution: {integrity: sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==} + '@rollup/pluginutils': 3.1.0_rollup@2.79.1 + magic-string: 0.25.9 + rollup: 2.79.1 + dev: false - /it-buffer/0.1.3: - resolution: {integrity: sha512-9a2/9SYVwG7bcn3tpRDR4bXbtuMLXnDK48KVC+GXiQg97ZOOdWz2nIITBsOQ19b+gj01Rw8RNwtiLDLI8P8oiQ==} + /@rollup/pluginutils/3.1.0_rollup@2.79.1: + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 dependencies: - bl: 5.0.0 - buffer: 6.0.3 + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.79.1 + dev: false - /it-concat/2.0.0: - resolution: {integrity: sha512-jchrEB3fHlUENWkVJRmbFJ1A7gcjJDmwiolQsHhVC14DpUIbX8fgr3SOC7XNE5OoUUQNL6/RaMCPChkPemyQUw==} + /@rollup/pluginutils/5.0.2: + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - bl: 5.0.0 + '@types/estree': 1.0.0 + estree-walker: 2.0.2 + picomatch: 2.3.1 dev: true - /it-drain/1.0.5: - resolution: {integrity: sha512-r/GjkiW1bZswC04TNmUnLxa6uovme7KKwPhc+cb1hHU65E3AByypHH6Pm91WHuvqfFsm+9ws0kPtDBV3/8vmIg==} + /@rushstack/eslint-patch/1.2.0: + resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} + dev: false - /it-filter/1.0.3: - resolution: {integrity: sha512-EI3HpzUrKjTH01miLHWmhNWy3Xpbx4OXMXltgrNprL5lDpF3giVpHIouFpr5l+evXw6aOfxhnt01BIB+4VQA+w==} + /@sinclair/typebox/0.24.51: + resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} - /it-first/1.0.7: - resolution: {integrity: sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g==} + /@sinclair/typebox/0.25.21: + resolution: {integrity: sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==} + dev: true - /it-foreach/0.1.1: - resolution: {integrity: sha512-ZLxL651N5w5SL/EIIcrXELgYrrkuEKj/TErG93C4lr6lNZziKsf338ljSG85PjQfu7Frg/1wESl5pLrPSFXI9g==} + /@sinonjs/commons/1.8.6: + resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + dependencies: + type-detect: 4.0.8 - /it-glob/0.0.14: - resolution: {integrity: sha512-TKKzs9CglbsihSpcwJPXN5DBUssu4akRzPlp8QJRCoLrKoaOpyY2V1qDlxx+UMivn0i114YyTd4AawWl7eqIdw==} + /@sinonjs/commons/2.0.0: + resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} dependencies: - '@types/minimatch': 3.0.5 - minimatch: 3.1.2 + type-detect: 4.0.8 dev: true - /it-glob/1.0.2: - resolution: {integrity: sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==} + /@sinonjs/fake-timers/10.0.2: + resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} dependencies: - '@types/minimatch': 3.0.5 - minimatch: 3.1.2 + '@sinonjs/commons': 2.0.0 + dev: true - /it-handshake/2.0.0: - resolution: {integrity: sha512-K4q+mz8aLlCK3vTjtgNdHC9c/JbuOATsfogarjMsLcBZC5vYfKbX3Gq3AWcCdjIsIrPqzTlhPKSxl64LJkrt2w==} + /@sinonjs/fake-timers/8.1.0: + resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} dependencies: - it-pushable: 1.4.2 - it-reader: 3.0.0 - p-defer: 3.0.0 + '@sinonjs/commons': 1.8.6 - /it-last/1.0.6: - resolution: {integrity: sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q==} + /@sinonjs/fake-timers/9.1.2: + resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} + dependencies: + '@sinonjs/commons': 1.8.6 dev: true - /it-length-prefixed/5.0.3: - resolution: {integrity: sha512-b+jDHLcnOnPDQN79ronmzF5jeBjdJsy0ce2O6i6X4J5tnaO8Fd146ZA/tMbzaLlKnTpXa0eKtofpYhumXGENeg==} - dependencies: - bl: 5.0.0 - buffer: 6.0.3 - varint: 6.0.0 + /@sovpro/delimited-stream/1.1.0: + resolution: {integrity: sha512-kQpk267uxB19X3X2T1mvNMjyvIEonpNSHrMlK5ZaBU6aZxw7wPbpgKJOjHN3+/GPVpXgAV9soVT2oyHpLkLtyw==} + engines: {node: '>= 8'} + dev: true - /it-map/1.0.6: - resolution: {integrity: sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ==} + /@stablelib/aead/1.0.1: + resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} - /it-merge/1.0.4: - resolution: {integrity: sha512-DcL6GksTD2HQ7+5/q3JznXaLNfwjyG3/bObaF98da+oHfUiPmdo64oJlT9J8R8G5sJRU7thwaY5zxoAKCn7FJw==} + /@stablelib/binary/1.0.1: + resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} dependencies: - it-pushable: 1.4.2 + '@stablelib/int': 1.0.1 - /it-pair/1.0.0: - resolution: {integrity: sha512-9raOiDu5OAuDOahtMtapKQDrQTxBfzlzrNcB6o7JARHkt+7Bb1dMkW/TpYdAjBJE77KH3e2zGzwpGUP9tXbLww==} + /@stablelib/bytes/1.0.1: + resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + + /@stablelib/chacha/1.0.1: + resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} dependencies: - get-iterator: 1.0.2 + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 - /it-pb-rpc/0.1.13: - resolution: {integrity: sha512-aZ4FNJsDgNepVVTmYXgXbQabIiOQyqYWUhdfovaHDcPSM5KjegwJihJEWMJjMyj+oLSKcZl0vmHgHxXWJ9/ufw==} + /@stablelib/chacha20poly1305/1.0.1: + resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} dependencies: - is-buffer: 2.0.5 - it-handshake: 2.0.0 - it-length-prefixed: 5.0.3 + '@stablelib/aead': 1.0.1 + '@stablelib/binary': 1.0.1 + '@stablelib/chacha': 1.0.1 + '@stablelib/constant-time': 1.0.1 + '@stablelib/poly1305': 1.0.1 + '@stablelib/wipe': 1.0.1 - /it-peekable/1.0.3: - resolution: {integrity: sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ==} - dev: true + /@stablelib/constant-time/1.0.1: + resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} - /it-pipe/1.1.0: - resolution: {integrity: sha512-lF0/3qTVeth13TOnHVs0BTFaziwQF7m5Gg+E6JV0BXcLKutC92YjSi7bASgkPOXaLEb+YvNZrPorGMBIJvZfxg==} + /@stablelib/hash/1.0.1: + resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} - /it-pushable/1.4.2: - resolution: {integrity: sha512-vVPu0CGRsTI8eCfhMknA7KIBqqGFolbRx+1mbQ6XuZ7YCz995Qj7L4XUviwClFunisDq96FdxzF5FnAbw15afg==} + /@stablelib/hkdf/1.0.1: + resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} dependencies: - fast-fifo: 1.1.0 + '@stablelib/hash': 1.0.1 + '@stablelib/hmac': 1.0.1 + '@stablelib/wipe': 1.0.1 - /it-reader/3.0.0: - resolution: {integrity: sha512-NxR40odATeaBmSefn6Xn43DplYvn2KtEKQzn4jrTRuPYXMky5M4e+KQ7aTJh0k0vkytLyeenGO1I1GXlGm4laQ==} + /@stablelib/hmac/1.0.1: + resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} dependencies: - bl: 5.0.0 + '@stablelib/constant-time': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 - /it-sort/1.0.1: - resolution: {integrity: sha512-c+C48cP7XMMebB9irLrJs2EmpLILId8NYSojqAqN8etE8ienx0azBgaKvZHYH1DkerqIul0Fl2FqISu2BZgTEQ==} - dependencies: - it-all: 1.0.6 + /@stablelib/int/1.0.1: + resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} - /it-take/1.0.2: - resolution: {integrity: sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw==} + /@stablelib/keyagreement/1.0.1: + resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + dependencies: + '@stablelib/bytes': 1.0.1 - /it-tar/3.0.0: - resolution: {integrity: sha512-VhD1Hnx4IXDcQgYJnJgltkn+w5F8kiJaB46lqovh+YWfty2JGW7i40QQjWbSvcg1QfaU8is8AVX8xwx/Db9oOg==} + /@stablelib/poly1305/1.0.1: + resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} dependencies: - bl: 5.0.0 - buffer: 6.0.3 - iso-constants: 0.1.2 - it-concat: 2.0.0 - it-reader: 3.0.0 - p-defer: 3.0.0 - dev: true + '@stablelib/constant-time': 1.0.1 + '@stablelib/wipe': 1.0.1 - /it-to-stream/1.0.0: - resolution: {integrity: sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==} + /@stablelib/random/1.0.2: + resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} dependencies: - buffer: 6.0.3 - fast-fifo: 1.1.0 - get-iterator: 1.0.2 - p-defer: 3.0.0 - p-fifo: 1.0.0 - readable-stream: 3.6.0 + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 - /it-ws/4.0.0: - resolution: {integrity: sha512-XmTzpMkevc6rUboy73r0CCNhciMmL/Yxir9O6FujRwdrjysztqLBQ1Xkr4CpY2m7BVSCObKotaCWJeZ29lOXRA==} + /@stablelib/sha256/1.0.1: + resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} dependencies: - buffer: 6.0.3 - event-iterator: 2.0.0 - iso-url: 1.2.1 - ws: 7.5.9 - transitivePeerDependencies: - - bufferutil - - utf-8-validate + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 - /jest-changed-files/28.1.3: - resolution: {integrity: sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@stablelib/wipe/1.0.1: + resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + + /@stablelib/x25519/1.0.3: + resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} dependencies: - execa: 5.1.1 - p-limit: 3.1.0 + '@stablelib/keyagreement': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/wipe': 1.0.1 - /jest-circus/28.1.3: - resolution: {integrity: sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@surma/rollup-plugin-off-main-thread/2.2.3: + resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} dependencies: - '@jest/environment': 28.1.3 - '@jest/expect': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 18.7.14 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - is-generator-fn: 2.1.0 - 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.5 - transitivePeerDependencies: - - supports-color + ejs: 3.1.8 + json5: 2.2.3 + magic-string: 0.25.9 + string.prototype.matchall: 4.0.8 + dev: false - /jest-cli/28.1.3: - resolution: {integrity: sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + /@svgr/babel-plugin-add-jsx-attribute/5.4.0: + resolution: {integrity: sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==} + engines: {node: '>=10'} + dev: false + + /@svgr/babel-plugin-remove-jsx-attribute/5.4.0: + resolution: {integrity: sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==} + engines: {node: '>=10'} + dev: false + + /@svgr/babel-plugin-remove-jsx-empty-expression/5.0.1: + resolution: {integrity: sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==} + engines: {node: '>=10'} + dev: false + + /@svgr/babel-plugin-replace-jsx-attribute-value/5.0.1: + resolution: {integrity: sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==} + engines: {node: '>=10'} + dev: false + + /@svgr/babel-plugin-svg-dynamic-title/5.4.0: + resolution: {integrity: sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==} + engines: {node: '>=10'} + dev: false + + /@svgr/babel-plugin-svg-em-dimensions/5.4.0: + resolution: {integrity: sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==} + engines: {node: '>=10'} + dev: false + + /@svgr/babel-plugin-transform-react-native-svg/5.4.0: + resolution: {integrity: sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==} + engines: {node: '>=10'} + dev: false + + /@svgr/babel-plugin-transform-svg-component/5.5.0: + resolution: {integrity: sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==} + engines: {node: '>=10'} + dev: false + + /@svgr/babel-preset/5.5.0: + resolution: {integrity: sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==} + engines: {node: '>=10'} dependencies: - '@jest/core': 28.1.3 - '@jest/test-result': 28.1.3 - '@jest/types': 28.1.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.10 - import-local: 3.1.0 - jest-config: 28.1.3 - jest-util: 28.1.3 - jest-validate: 28.1.3 - prompts: 2.4.2 - yargs: 17.5.1 + '@svgr/babel-plugin-add-jsx-attribute': 5.4.0 + '@svgr/babel-plugin-remove-jsx-attribute': 5.4.0 + '@svgr/babel-plugin-remove-jsx-empty-expression': 5.0.1 + '@svgr/babel-plugin-replace-jsx-attribute-value': 5.0.1 + '@svgr/babel-plugin-svg-dynamic-title': 5.4.0 + '@svgr/babel-plugin-svg-em-dimensions': 5.4.0 + '@svgr/babel-plugin-transform-react-native-svg': 5.4.0 + '@svgr/babel-plugin-transform-svg-component': 5.5.0 + dev: false + + /@svgr/core/5.5.0: + resolution: {integrity: sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==} + engines: {node: '>=10'} + dependencies: + '@svgr/plugin-jsx': 5.5.0 + camelcase: 6.3.0 + cosmiconfig: 7.1.0 transitivePeerDependencies: - - '@types/node' - supports-color - - ts-node + dev: false - /jest-config/28.1.3: - resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} - engines: {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 + /@svgr/hast-util-to-babel-ast/5.5.0: + resolution: {integrity: sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==} + engines: {node: '>=10'} dependencies: - '@babel/core': 7.18.13 - '@jest/test-sequencer': 28.1.3 - '@jest/types': 28.1.3 - babel-jest: 28.1.3_@babel+core@7.18.13 - chalk: 4.1.2 - ci-info: 3.3.2 - deepmerge: 4.2.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - 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.5 - parse-json: 5.2.0 - pretty-format: 28.1.3 - slash: 3.0.0 - strip-json-comments: 3.1.1 + '@babel/types': 7.20.7 + dev: false + + /@svgr/plugin-jsx/5.5.0: + resolution: {integrity: sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.20.12 + '@svgr/babel-preset': 5.5.0 + '@svgr/hast-util-to-babel-ast': 5.5.0 + svg-parser: 2.0.4 transitivePeerDependencies: - supports-color + dev: false - /jest-config/28.1.3_@types+node@18.7.14: - resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} - engines: {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 + /@svgr/plugin-svgo/5.5.0: + resolution: {integrity: sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==} + engines: {node: '>=10'} dependencies: - '@babel/core': 7.18.13 - '@jest/test-sequencer': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 18.7.14 - babel-jest: 28.1.3_@babel+core@7.18.13 - chalk: 4.1.2 - ci-info: 3.3.2 - deepmerge: 4.2.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - 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.5 - parse-json: 5.2.0 - pretty-format: 28.1.3 - slash: 3.0.0 - strip-json-comments: 3.1.1 + cosmiconfig: 7.1.0 + deepmerge: 4.3.0 + svgo: 1.3.2 + dev: false + + /@svgr/webpack/5.5.0: + resolution: {integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.20.12 + '@babel/plugin-transform-react-constant-elements': 7.20.2_@babel+core@7.20.12 + '@babel/preset-env': 7.20.2_@babel+core@7.20.12 + '@babel/preset-react': 7.18.6_@babel+core@7.20.12 + '@svgr/core': 5.5.0 + '@svgr/plugin-jsx': 5.5.0 + '@svgr/plugin-svgo': 5.5.0 + loader-utils: 2.0.4 transitivePeerDependencies: - supports-color + dev: false - /jest-diff/27.5.1: - resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@testing-library/dom/8.20.0: + resolution: {integrity: sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==} + engines: {node: '>=12'} dependencies: + '@babel/code-frame': 7.18.6 + '@babel/runtime': 7.20.13 + '@types/aria-query': 5.0.1 + aria-query: 5.1.3 chalk: 4.1.2 - diff-sequences: 27.5.1 - jest-get-type: 27.5.1 + dom-accessibility-api: 0.5.16 + lz-string: 1.4.4 pretty-format: 27.5.1 + dev: false - /jest-diff/28.1.3: - resolution: {integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@testing-library/jest-dom/5.16.5: + resolution: {integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==} + engines: {node: '>=8', npm: '>=6', yarn: '>=1'} + dependencies: + '@adobe/css-tools': 4.1.0 + '@babel/runtime': 7.20.13 + '@types/testing-library__jest-dom': 5.14.5 + aria-query: 5.1.3 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.5.16 + lodash: 4.17.21 + redent: 3.0.0 + dev: false + + /@testing-library/react/13.4.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==} + engines: {node: '>=12'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@babel/runtime': 7.20.13 + '@testing-library/dom': 8.20.0 + '@types/react-dom': 18.0.10 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@testing-library/user-event/13.5.0_yxlyej73nftwmh2fiao7paxmlm: + resolution: {integrity: sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' dependencies: - chalk: 4.1.2 - diff-sequences: 28.1.1 - jest-get-type: 28.0.2 - pretty-format: 28.1.3 + '@babel/runtime': 7.20.13 + '@testing-library/dom': 8.20.0 + dev: false - /jest-docblock/28.1.1: - resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@tootallnate/once/1.1.2: + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + + /@trysound/sax/0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: false + + /@tsconfig/node10/1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + + /@tsconfig/node12/1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14/1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16/1.0.3: + resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + dev: true + + /@types/aria-query/5.0.1: + resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} + dev: false + + /@types/babel__core/7.20.0: + resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: - detect-newline: 3.1.0 + '@babel/parser': 7.20.15 + '@babel/types': 7.20.7 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.18.3 - /jest-each/28.1.3: - resolution: {integrity: sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/babel__generator/7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@jest/types': 28.1.3 - chalk: 4.1.2 - jest-get-type: 28.0.2 - jest-util: 28.1.3 - pretty-format: 28.1.3 + '@babel/types': 7.20.7 - /jest-environment-node/28.1.3: - resolution: {integrity: sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/babel__template/7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@jest/environment': 28.1.3 - '@jest/fake-timers': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 18.7.14 - jest-mock: 28.1.3 - jest-util: 28.1.3 + '@babel/parser': 7.20.15 + '@babel/types': 7.20.7 - /jest-get-type/27.5.1: - resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@types/babel__traverse/7.18.3: + resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} + dependencies: + '@babel/types': 7.20.7 - /jest-get-type/28.0.2: - resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/body-parser/1.19.2: + resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + dependencies: + '@types/connect': 3.4.35 + '@types/node': 16.18.12 + dev: false - /jest-haste-map/28.1.3: - resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/bonjour/3.5.10: + resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} dependencies: - '@jest/types': 28.1.3 - '@types/graceful-fs': 4.1.5 - '@types/node': 18.7.14 - anymatch: 3.1.2 - fb-watchman: 2.0.1 - graceful-fs: 4.2.10 - jest-regex-util: 28.0.2 - jest-util: 28.1.3 - jest-worker: 28.1.3 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 + '@types/node': 16.18.12 + dev: false - /jest-leak-detector/28.1.3: - resolution: {integrity: sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/bs58/4.0.1: + resolution: {integrity: sha512-yfAgiWgVLjFCmRv8zAcOIHywYATEwiTVccTLnRp6UxTNavT55M9d/uhK3T03St/+8/z/wW+CRjGKUNmEqoHHCA==} dependencies: - jest-get-type: 28.0.2 - pretty-format: 28.1.3 + base-x: 3.0.9 + dev: true - /jest-matcher-utils/27.5.1: - resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@types/connect-history-api-fallback/1.3.5: + resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} dependencies: - chalk: 4.1.2 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 + '@types/express-serve-static-core': 4.17.33 + '@types/node': 16.18.12 + dev: false - /jest-matcher-utils/28.1.3: - resolution: {integrity: sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/connect/3.4.35: + resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - chalk: 4.1.2 - jest-diff: 28.1.3 - jest-get-type: 28.0.2 - pretty-format: 28.1.3 + '@types/node': 16.18.12 + dev: false - /jest-message-util/28.1.3: - resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/eslint-scope/3.7.4: + resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} dependencies: - '@babel/code-frame': 7.18.6 - '@jest/types': 28.1.3 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.10 - micromatch: 4.0.5 - pretty-format: 28.1.3 - slash: 3.0.0 - stack-utils: 2.0.5 + '@types/eslint': 8.21.0 + '@types/estree': 0.0.51 + dev: false - /jest-mock/28.1.3: - resolution: {integrity: sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/eslint/8.21.0: + resolution: {integrity: sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA==} dependencies: - '@jest/types': 28.1.3 - '@types/node': 18.7.14 + '@types/estree': 1.0.0 + '@types/json-schema': 7.0.11 + dev: false - /jest-pnp-resolver/1.2.2: - resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} - engines: {node: '>=6'} - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 28.1.3 + /@types/estree/0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: false - /jest-regex-util/28.0.2: - resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/estree/0.0.51: + resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + dev: false - /jest-resolve-dependencies/28.1.3: - resolution: {integrity: sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - jest-regex-util: 28.0.2 - jest-snapshot: 28.1.3 - transitivePeerDependencies: - - supports-color + /@types/estree/1.0.0: + resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} - /jest-resolve/28.1.3: - resolution: {integrity: sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/express-serve-static-core/4.17.33: + resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.10 - jest-haste-map: 28.1.3 - jest-pnp-resolver: 1.2.2 - jest-util: 28.1.3 - jest-validate: 28.1.3 - resolve: 1.22.1 - resolve.exports: 1.1.0 - slash: 3.0.0 + '@types/node': 16.18.12 + '@types/qs': 6.9.7 + '@types/range-parser': 1.2.4 + dev: false - /jest-runner/28.1.3: - resolution: {integrity: sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/express/4.17.17: + resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} dependencies: - '@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': 18.7.14 - chalk: 4.1.2 - emittery: 0.10.2 - graceful-fs: 4.2.10 - 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 - transitivePeerDependencies: - - supports-color + '@types/body-parser': 1.19.2 + '@types/express-serve-static-core': 4.17.33 + '@types/qs': 6.9.7 + '@types/serve-static': 1.15.0 + dev: false - /jest-runtime/28.1.3: - resolution: {integrity: sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/graceful-fs/4.1.6: + resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} 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.1.2 - cjs-module-lexer: 1.2.2 - collect-v8-coverage: 1.0.1 - execa: 5.1.1 - glob: 7.2.3 - graceful-fs: 4.2.10 - 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 - transitivePeerDependencies: - - supports-color + '@types/node': 16.18.12 - /jest-snapshot/28.1.3: - resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@babel/core': 7.18.13 - '@babel/generator': 7.18.13 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.18.13 - '@babel/traverse': 7.18.13 - '@babel/types': 7.18.13 - '@jest/expect-utils': 28.1.3 - '@jest/transform': 28.1.3 - '@jest/types': 28.1.3 - '@types/babel__traverse': 7.18.0 - '@types/prettier': 2.7.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.13 - chalk: 4.1.2 - expect: 28.1.3 - graceful-fs: 4.2.10 - 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: 28.1.3 - semver: 7.3.7 - transitivePeerDependencies: - - supports-color + /@types/html-minifier-terser/6.1.0: + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + dev: false - /jest-util/27.5.1: - resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@types/http-proxy/1.17.9: + resolution: {integrity: sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==} dependencies: - '@jest/types': 27.5.1 - '@types/node': 18.7.14 - chalk: 4.1.2 - ci-info: 3.3.2 - graceful-fs: 4.2.10 - picomatch: 2.3.1 + '@types/node': 16.18.12 + dev: false - /jest-util/28.1.3: - resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/istanbul-lib-coverage/2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + + /@types/istanbul-lib-report/3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: - '@jest/types': 28.1.3 - '@types/node': 18.7.11 - chalk: 4.1.2 - ci-info: 3.3.2 - graceful-fs: 4.2.10 - picomatch: 2.3.1 + '@types/istanbul-lib-coverage': 2.0.4 - /jest-validate/28.1.3: - resolution: {integrity: sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/istanbul-reports/3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: - '@jest/types': 28.1.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 28.0.2 - leven: 3.1.0 - pretty-format: 28.1.3 + '@types/istanbul-lib-report': 3.0.0 - /jest-watcher/28.1.3: - resolution: {integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/jest/27.5.2: + resolution: {integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==} dependencies: - '@jest/test-result': 28.1.3 - '@jest/types': 28.1.3 - '@types/node': 18.7.11 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.10.2 - jest-util: 28.1.3 - string-length: 4.0.2 + jest-matcher-utils: 27.5.1 + pretty-format: 27.5.1 + dev: false - /jest-worker/28.1.3: - resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@types/jest/28.1.0: + resolution: {integrity: sha512-ITfF6JJIl9zbEi2k6NmhNE/BiDqfsI/ceqfvdaWaPbcrCpYyyRq4KtDQIWh6vQUru6SqwppODiom/Zhid+np6A==} dependencies: - '@types/node': 18.7.11 - merge-stream: 2.0.0 - supports-color: 8.1.1 + jest-matcher-utils: 27.5.1 + pretty-format: 27.5.1 + dev: true - /jest/28.1.3: - resolution: {integrity: sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + /@types/jest/29.4.0: + resolution: {integrity: sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==} dependencies: - '@jest/core': 28.1.3 - '@jest/types': 28.1.3 - import-local: 3.1.0 - jest-cli: 28.1.3 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node + expect: 29.4.2 + pretty-format: 29.4.2 + dev: true - /js-base64/3.7.2: - resolution: {integrity: sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==} + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + dev: false - /js-sha3/0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + /@types/json5/0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: false + + /@types/long/4.0.2: + resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} dev: true - /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /@types/mime/3.0.1: + resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} + dev: false - /js-yaml/3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 + /@types/minimatch/3.0.5: + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + dev: true - /jsbn/0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + /@types/node/16.11.59: + resolution: {integrity: sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==} - /jsbn/1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + /@types/node/16.18.12: + resolution: {integrity: sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw==} - /jsesc/2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} + /@types/node/18.13.0: + resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} - /json-parse-even-better-errors/2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + /@types/parse-json/4.0.0: + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + dev: false - /json-schema-traverse/0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + /@types/platform/1.3.4: + resolution: {integrity: sha512-U0o4K+GNiK0PNxoDwd8xRnvLVe4kzei6opn3/FCjAriqaP+rfrDdSl1kP/hLL6Y3/Y3hhGnBwD4dCkkAqs1W/Q==} + dev: true - /json-schema/0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + /@types/prettier/2.7.2: + resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} - /json-stringify-safe/5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + /@types/prop-types/15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + dev: false - /json-text-sequence/0.3.0: - resolution: {integrity: sha512-7khKIYPKwXQem4lWXfpIN/FEnhztCeRPSxH4qm3fVlqulwujrRDD54xAwDDn/qVKpFtV550+QAkcWJcufzqQuA==} - engines: {node: '>=10.18.0'} + /@types/q/1.5.5: + resolution: {integrity: sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==} + dev: false + + /@types/qs/6.9.7: + resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} + dev: false + + /@types/range-parser/1.2.4: + resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + dev: false + + /@types/react-dom/18.0.10: + resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==} dependencies: - '@sovpro/delimited-stream': 1.1.0 - dev: true + '@types/react': 18.0.27 + dev: false - /json5/2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} - engines: {node: '>=6'} + /@types/react/18.0.27: + resolution: {integrity: sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.2 + csstype: 3.1.1 + dev: false - /jsonc-parser/3.1.0: - resolution: {integrity: sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==} - dev: true + /@types/resolve/1.17.1: + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + dependencies: + '@types/node': 16.18.12 + dev: false - /jsprim/1.4.2: - resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} - engines: {node: '>=0.6.0'} + /@types/retry/0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + + /@types/retry/0.12.1: + resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==} + dev: false + + /@types/scheduler/0.16.2: + resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + dev: false + + /@types/semver/7.3.13: + resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} + dev: false + + /@types/serve-index/1.9.1: + resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 + '@types/express': 4.17.17 + dev: false - /keypair/1.0.4: - resolution: {integrity: sha512-zwhgOhhniaL7oxMgUMKKw5219PWWABMO+dgMnzJOQ2/5L3XJtTJGhW2PEXlxXj9zaccdReZJZ83+4NPhVfNVDg==} + /@types/serve-static/1.15.0: + resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} + dependencies: + '@types/mime': 3.0.1 + '@types/node': 16.18.12 + dev: false - /kleur/3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} + /@types/sockjs/0.3.33: + resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} + dependencies: + '@types/node': 16.18.12 + dev: false - /leven/3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} + /@types/stack-utils/2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - /libp2p-crypto/0.19.7: - resolution: {integrity: sha512-Qb5o/3WFKF2j6mYSt4UBPyi2kbKl3jYV0podBJoJCw70DlpM5Xc+oh3fFY9ToSunu8aSQQ5GY8nutjXgX/uGRA==} - engines: {node: '>=12.0.0'} + /@types/testing-library__jest-dom/5.14.5: + resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: - err-code: 3.0.1 - is-typedarray: 1.0.0 - iso-random-stream: 2.0.2 - keypair: 1.0.4 - multiformats: 9.9.0 - node-forge: 0.10.0 - pem-jwk: 2.0.0 - protobufjs: 6.11.3 - secp256k1: 4.0.3 - uint8arrays: 3.1.0 - ursa-optional: 0.10.2 + '@types/jest': 27.5.2 + dev: false - /libp2p-crypto/0.20.0: - resolution: {integrity: sha512-WgIW9rYcWaO/5j2T6NW3R6Q46yvp2ZfFErqRMbi4/pOTL3T7+OROYpL/1iWVksWkXyurU/t2qFsIijWMxR5C4Q==} - engines: {node: '>=12.0.0'} + /@types/trusted-types/2.0.2: + resolution: {integrity: sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==} + dev: false + + /@types/uuid/8.3.2: + resolution: {integrity: sha512-u40ViizKDmdl5FhOXn9WQbulpigYCaiD5hD4KqR3xyQww6l3+0ND+A9TeFla8tFpqvR+UAkJdYb/8jdaQG4/nw==} + dev: true + + /@types/ws/8.5.4: + resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: - err-code: 3.0.1 - iso-random-stream: 2.0.2 - keypair: 1.0.4 - multiformats: 9.9.0 - noble-ed25519: 1.2.6 - noble-secp256k1: 1.2.14 - node-forge: 0.10.0 - pem-jwk: 2.0.0 - protobufjs: 6.11.3 - uint8arrays: 3.1.0 - ursa-optional: 0.10.2 + '@types/node': 16.18.12 + dev: false - /libp2p-crypto/0.21.2: - resolution: {integrity: sha512-EXFrhSpiHtJ+/L8xXDvQNK5VjUMG51u878jzZcaT5XhuN/zFg6PWJFnl/qB2Y2j7eMWnvCRP7Kp+ua2H36cG4g==} - engines: {node: '>=12.0.0'} + /@types/yargs-parser/21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + + /@types/yargs/16.0.5: + resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} dependencies: - '@noble/ed25519': 1.6.1 - '@noble/secp256k1': 1.6.3 - err-code: 3.0.1 - iso-random-stream: 2.0.2 - multiformats: 9.9.0 - node-forge: 1.3.1 - protobufjs: 6.11.3 - uint8arrays: 3.1.0 + '@types/yargs-parser': 21.0.0 - /libp2p-interfaces/4.0.6: - resolution: {integrity: sha512-3KjzNEIWhi+VoOamLvgKKUE/xqwxSw/JYqsBnfMhAWVRvRtosROtVT03wci2XbuuowCYw+/hEX1xKJIR1w5n0A==} + /@types/yargs/17.0.22: + resolution: {integrity: sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==} dependencies: - abortable-iterator: 3.0.2 - debug: 4.3.4 - err-code: 3.0.1 - it-length-prefixed: 5.0.3 - it-pipe: 1.1.0 - it-pushable: 1.4.2 - libp2p-crypto: 0.21.2 - multiaddr: 10.0.1 - multiformats: 9.9.0 - p-queue: 6.6.2 - peer-id: 0.16.0 - protobufjs: 6.11.3 - uint8arrays: 3.1.0 - transitivePeerDependencies: - - supports-color + '@types/yargs-parser': 21.0.0 - /libp2p-mplex/0.10.7: - resolution: {integrity: sha512-21VV0DZWuOsHgitWy1GZD1M/kki3a/hVoAJ5QC48p01JNSK5W8gxRiZtq7cCGJ/xNpbQxvMlMtS5eq8CFRlysg==} + /@typescript-eslint/eslint-plugin/5.51.0_z4swst3wuuqk4hlme4ajzslgh4: + resolution: {integrity: sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - abortable-iterator: 3.0.2 - bl: 5.0.0 + '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/scope-manager': 5.51.0 + '@typescript-eslint/type-utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 - err-code: 3.0.1 - it-pipe: 1.1.0 - it-pushable: 1.4.2 - varint: 6.0.0 + eslint: 8.34.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + regexpp: 3.2.0 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false - /libp2p-utils/0.4.1: - resolution: {integrity: sha512-kq/US2unamiyY+YwP47dO1uqpAdcbdYI2Fzi9JIEhjfPBaD1MR/uyQ/YP7ABthl3EaxAjIQYd1TVp85d6QKAtQ==} + /@typescript-eslint/experimental-utils/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-8/3+ZyBENl2aog1/QB3S39ptkZ2oRhDB+sJt15UWXBE3skgwL1C8BN9RjpOyhTejwR2hVrvqEjcYcNY6qtZ7nw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - abortable-iterator: 3.0.2 - debug: 4.3.4 - err-code: 3.0.1 - ip-address: 8.1.0 - is-loopback-addr: 1.0.1 - multiaddr: 10.0.1 - private-ip: 2.3.4 + '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + eslint: 8.34.0 transitivePeerDependencies: - supports-color + - typescript + dev: false - /libp2p-websockets/0.16.2: - resolution: {integrity: sha512-QGfo8jX1Ks16yi8C67CCyMW7k9cfCYiQ0lzKVJBud0fV3ymbMO2L8gzU6iXUUZTHILo8ka26zKhwQ4lmUMI+nA==} + /@typescript-eslint/parser/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - abortable-iterator: 3.0.2 - class-is: 1.1.0 + '@typescript-eslint/scope-manager': 5.51.0 + '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 debug: 4.3.4 - err-code: 3.0.1 - ipfs-utils: 9.0.7 - it-ws: 4.0.0 - libp2p-utils: 0.4.1 - mafmt: 10.0.0 - multiaddr: 10.0.1 - multiaddr-to-uri: 8.0.0 - p-defer: 3.0.0 - p-timeout: 4.1.0 + eslint: 8.34.0 + typescript: 4.9.5 transitivePeerDependencies: - - bufferutil - supports-color - - utf-8-validate + dev: false - /libp2p/0.36.2: - resolution: {integrity: sha512-UpNYBMQVivMu56zoibdGitopv39uBBAybIBOEGWmFy/I2NnTVGUutLPrxo47AuN2kntYgo/TNJfW+PpswUgSaw==} - engines: {node: '>=15.0.0'} + /@typescript-eslint/scope-manager/5.51.0: + resolution: {integrity: sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@vascosantos/moving-average': 1.1.0 - abortable-iterator: 3.0.2 - aggregate-error: 3.1.0 - any-signal: 3.0.1 - bignumber.js: 9.1.0 - class-is: 1.1.0 - datastore-core: 7.0.3 + '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/visitor-keys': 5.51.0 + dev: false + + /@typescript-eslint/type-utils/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 - err-code: 3.0.1 - es6-promisify: 7.0.0 - events: 3.3.0 - hashlru: 2.3.0 - interface-datastore: 6.1.1 - it-all: 1.0.6 - it-buffer: 0.1.3 - it-drain: 1.0.5 - it-filter: 1.0.3 - it-first: 1.0.7 - it-foreach: 0.1.1 - it-handshake: 2.0.0 - it-length-prefixed: 5.0.3 - it-map: 1.0.6 - it-merge: 1.0.4 - it-pipe: 1.1.0 - it-sort: 1.0.1 - it-take: 1.0.2 - libp2p-crypto: 0.21.2 - libp2p-interfaces: 4.0.6 - libp2p-utils: 0.4.1 - mafmt: 10.0.0 - merge-options: 3.0.4 - mortice: 2.0.1 - multiaddr: 10.0.1 - multiformats: 9.7.1 - multistream-select: 3.0.2 - mutable-proxy: 1.0.0 - nat-api: 0.3.1 - node-forge: 1.3.1 - p-any: 3.0.0 - p-fifo: 1.0.0 - p-retry: 4.6.2 - p-settle: 4.1.1 - peer-id: 0.16.0 - private-ip: 2.3.4 - protobufjs: 6.11.3 - retimer: 3.0.0 - sanitize-filename: 1.6.3 - set-delayed-interval: 1.0.0 - streaming-iterables: 6.2.0 - timeout-abort-controller: 3.0.0 - uint8arrays: 3.1.0 - varint: 6.0.0 - wherearewe: 1.0.2 - xsalsa20: 1.2.0 + eslint: 8.34.0 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color + dev: false - /lines-and-columns/1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + /@typescript-eslint/types/5.51.0: + resolution: {integrity: sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false - /locate-path/5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + /@typescript-eslint/typescript-estree/5.51.0_typescript@4.9.5: + resolution: {integrity: sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - p-locate: 4.1.0 - - /lodash.memoize/4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - - /loglevel/1.8.0: - resolution: {integrity: sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==} - engines: {node: '>= 0.6.0'} - dev: true - - /loglevel/1.8.1: - resolution: {integrity: sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==} - engines: {node: '>= 0.6.0'} + '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/visitor-keys': 5.51.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color dev: false - /long/4.0.0: - resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + /@typescript-eslint/utils/5.51.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.51.0 + '@typescript-eslint/types': 5.51.0 + '@typescript-eslint/typescript-estree': 5.51.0_typescript@4.9.5 + eslint: 8.34.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.34.0 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: false - /lru-cache/6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + /@typescript-eslint/visitor-keys/5.51.0: + resolution: {integrity: sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - yallist: 4.0.0 + '@typescript-eslint/types': 5.51.0 + eslint-visitor-keys: 3.3.0 + dev: false - /lunr/2.3.9: - resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + /@vascosantos/moving-average/1.1.0: + resolution: {integrity: sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w==} dev: true - /mafmt/10.0.0: - resolution: {integrity: sha512-K1bziJOXcnepfztu+2Xy9FLKVLaFMDuspmiyJIYRxnO0WOxFSV7XKSdMxMrVZxcvg1+YjlTIvSGTImUHU2k4Aw==} + /@wasmer/wasi/0.12.0: + resolution: {integrity: sha512-FJhLZKAfLWm/yjQI7eCRHNbA8ezmb7LSpUYFkHruZXs2mXk2+DaQtSElEtOoNrVQ4vApTyVaAd5/b7uEu8w6wQ==} dependencies: - multiaddr: 10.0.1 - transitivePeerDependencies: - - supports-color + browser-process-hrtime: 1.0.0 + buffer-es6: 4.9.3 + path-browserify: 1.0.1 + randomfill: 1.0.4 - /make-dir/3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + /@wasmer/wasmfs/0.12.0: + resolution: {integrity: sha512-m1ftchyQ1DfSenm5XbbdGIpb6KJHH5z0gODo3IZr6lATkj4WXfX/UeBTZ0aG9YVShBp+kHLdUHvOkqjy6p/GWw==} dependencies: - semver: 6.3.0 - - /make-error/1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + memfs: 3.0.4 + pako: 1.0.11 + tar-stream: 2.2.0 - /makeerror/1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + /@webassemblyjs/ast/1.11.1: + resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} dependencies: - tmpl: 1.0.5 + '@webassemblyjs/helper-numbers': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + dev: false - /marked/4.0.19: - resolution: {integrity: sha512-rgQF/OxOiLcvgUAj1Q1tAf4Bgxn5h5JZTp04Fx4XUkVhs7B+7YA9JEWJhJpoO8eJt8MkZMwqLCNeNqj1bCREZQ==} - engines: {node: '>= 12'} - dev: true + /@webassemblyjs/floating-point-hex-parser/1.11.1: + resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} + dev: false - /memfs/3.0.4: - resolution: {integrity: sha512-OcZEzwX9E5AoY8SXjuAvw0DbIAYwUzV/I236I8Pqvrlv7sL/Y0E9aRCon05DhaV8pg1b32uxj76RgW0s5xjHBA==} - dependencies: - fast-extend: 1.0.2 - fs-monkey: 0.3.3 + /@webassemblyjs/helper-api-error/1.11.1: + resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} + dev: false - /merge-options/3.0.4: - resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} - engines: {node: '>=10'} + /@webassemblyjs/helper-buffer/1.11.1: + resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} + dev: false + + /@webassemblyjs/helper-numbers/1.11.1: + resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} dependencies: - is-plain-obj: 2.1.0 + '@webassemblyjs/floating-point-hex-parser': 1.11.1 + '@webassemblyjs/helper-api-error': 1.11.1 + '@xtuc/long': 4.2.2 + dev: false - /merge-stream/2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + /@webassemblyjs/helper-wasm-bytecode/1.11.1: + resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} + dev: false - /micromatch/4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + /@webassemblyjs/helper-wasm-section/1.11.1: + resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - /mime-db/1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + dev: false - /mime-types/2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + /@webassemblyjs/ieee754/1.11.1: + resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} dependencies: - mime-db: 1.52.0 + '@xtuc/ieee754': 1.2.0 + dev: false - /mimic-fn/2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + /@webassemblyjs/leb128/1.11.1: + resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} + dependencies: + '@xtuc/long': 4.2.2 + dev: false - /minimalistic-assert/1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + /@webassemblyjs/utf8/1.11.1: + resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} + dev: false - /minimalistic-crypto-utils/1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + /@webassemblyjs/wasm-edit/1.11.1: + resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/helper-wasm-section': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/wasm-opt': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + '@webassemblyjs/wast-printer': 1.11.1 + dev: false - /minimatch/3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + /@webassemblyjs/wasm-gen/1.11.1: + resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} dependencies: - brace-expansion: 1.1.11 + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/ieee754': 1.11.1 + '@webassemblyjs/leb128': 1.11.1 + '@webassemblyjs/utf8': 1.11.1 + dev: false - /minimatch/5.1.0: - resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} - engines: {node: '>=10'} + /@webassemblyjs/wasm-opt/1.11.1: + resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} dependencies: - brace-expansion: 2.0.1 - dev: true + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + dev: false - /minimist/1.2.6: - resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + /@webassemblyjs/wasm-parser/1.11.1: + resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-api-error': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/ieee754': 1.11.1 + '@webassemblyjs/leb128': 1.11.1 + '@webassemblyjs/utf8': 1.11.1 + dev: false - /mortice/2.0.1: - resolution: {integrity: sha512-9gsXmjq+5LZmXDIoyC/crf2i/7CUwDGSBEwSEsr1i/WfKmJ6DVt38B5kg6BE/WF/1/yfGJYiB1Wyiu423iI3nQ==} + /@webassemblyjs/wast-printer/1.11.1: + resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} dependencies: - nanoid: 3.3.4 - observable-webworkers: 1.0.0 - p-queue: 6.6.2 - promise-timeout: 1.3.0 + '@webassemblyjs/ast': 1.11.1 + '@xtuc/long': 4.2.2 + dev: false - /ms/2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + /@xtuc/ieee754/1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: false - /ms/2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + /@xtuc/long/4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: false - /multiaddr-to-uri/7.0.0: - resolution: {integrity: sha512-VbscDpLcbV0m25tJqfnZSfbjVUuNlPa4BbD5l/7me1t0lc3SWI0XAoO5E/PNJF0e1qUlbdq7yjVFEQjUT+9r0g==} + /abab/2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + + /abort-controller/3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} dependencies: - multiaddr: 9.0.2 - transitivePeerDependencies: - - supports-color + event-target-shim: 5.0.1 dev: true - /multiaddr-to-uri/8.0.0: - resolution: {integrity: sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA==} + /abortable-iterator/3.0.2: + resolution: {integrity: sha512-qVP8HFfTpUQI2F+f1tpTriKDIZ4XrmwCrBCrQeRKO7DKWF3kgoT6NXiNDv2krrGcHxPwmI63eGQiec81sEaWIw==} dependencies: - multiaddr: 10.0.1 - transitivePeerDependencies: - - supports-color + get-iterator: 1.0.2 + dev: true - /multiaddr/10.0.1: - resolution: {integrity: sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg==} + /abortable-iterator/4.0.2: + resolution: {integrity: sha512-SJGELER5yXr9v3kiL6mT5RZ1qlyJ9hV4nm34+vfsdIM1lp3zENQvpsqKgykpFLgRMUn3lzlizLTpiOASW05/+g==} dependencies: - dns-over-http-resolver: 1.2.3 - err-code: 3.0.1 - is-ip: 3.1.0 - multiformats: 9.6.5 - uint8arrays: 3.1.0 - varint: 6.0.0 - transitivePeerDependencies: - - supports-color + get-iterator: 2.0.0 + it-stream-types: 1.0.5 + dev: false - /multiaddr/9.0.2: - resolution: {integrity: sha512-YFaEb9t4yXSbaGksSEdg+Kn2U02s7w4wXUgyEMQmPxFJj7CfVHY10WOsScAX/rK6Soa15S1zXYadqH9TtlVreQ==} + /accepts/1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} dependencies: - cids: 1.1.9 - dns-over-http-resolver: 1.2.3 - err-code: 3.0.1 - is-ip: 3.1.0 - multibase: 4.0.6 - uint8arrays: 2.1.10 - varint: 6.0.0 - transitivePeerDependencies: - - supports-color - dev: true + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: false - /multibase/4.0.6: - resolution: {integrity: sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==} - engines: {node: '>=12.0.0', npm: '>=6.0.0'} + /acorn-globals/6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} dependencies: - '@multiformats/base-x': 4.0.1 + acorn: 7.4.1 + acorn-walk: 7.2.0 - /multicodec/3.2.1: - resolution: {integrity: sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==} + /acorn-import-assertions/1.8.0_acorn@8.8.2: + resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} + peerDependencies: + acorn: ^8 dependencies: - uint8arrays: 3.1.0 - varint: 6.0.0 - - /multiformats/9.6.5: - resolution: {integrity: sha512-vMwf/FUO+qAPvl3vlSZEgEVFY/AxeZq5yg761ScF3CZsXgmTi/HGkicUiNN0CI4PW8FiY2P0OLklOcmQjdQJhw==} - - /multiformats/9.7.1: - resolution: {integrity: sha512-TaVmGEBt0fhxiNJMGphBfB+oGvUxFs8KgGvgl8d3C+GWtrFcvXdJ2196eg+dYhmSFClmgFfSfJEklo+SZzdNuw==} - - /multiformats/9.9.0: - resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + acorn: 8.8.2 + dev: false - /multihashes/4.0.3: - resolution: {integrity: sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==} - engines: {node: '>=12.0.0', npm: '>=6.0.0'} + /acorn-jsx/5.3.2_acorn@8.8.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - multibase: 4.0.6 - uint8arrays: 3.1.0 - varint: 5.0.2 + acorn: 8.8.2 + dev: false - /multihashing-async/2.1.4: - resolution: {integrity: sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg==} - engines: {node: '>=12.0.0', npm: '>=6.0.0'} + /acorn-node/1.8.2: + resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} dependencies: - blakejs: 1.2.1 - err-code: 3.0.1 - js-sha3: 0.8.0 - multihashes: 4.0.3 - murmurhash3js-revisited: 3.0.0 - uint8arrays: 3.1.0 - dev: true + acorn: 7.4.1 + acorn-walk: 7.2.0 + xtend: 4.0.2 + dev: false - /multistream-select/3.0.2: - resolution: {integrity: sha512-ICGA8DAviZj6Xo1NkaRV3J38M+tFDoWiGtO1ksluyMnskAsdGjAzocg806OzpQPivNGWWboX3CrFT2Tk4UdYXA==} - dependencies: - abortable-iterator: 3.0.2 - bl: 5.0.0 - debug: 4.3.4 - err-code: 3.0.1 - it-first: 1.0.7 - it-handshake: 2.0.0 - it-length-prefixed: 5.0.3 - it-pipe: 1.1.0 - it-reader: 3.0.0 - p-defer: 3.0.0 - uint8arrays: 3.1.0 - transitivePeerDependencies: - - supports-color + /acorn-walk/7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} - /murmurhash3js-revisited/3.0.0: - resolution: {integrity: sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==} - engines: {node: '>=8.0.0'} + /acorn-walk/8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} dev: true - /mutable-proxy/1.0.0: - resolution: {integrity: sha512-4OvNRr1DJpy2QuDUV74m+BWZ//n4gG4bmd21MzDSPqHEidIDWqwyOjcadU1LBMO3vXYGurVKjfBrxrSQIHFu9A==} - engines: {node: '>=6.X.X', npm: '>=3.X.X'} + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true - /nan/2.16.0: - resolution: {integrity: sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==} + /acorn/8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true - /nanoid/3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + /address/1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + dev: false - /nat-api/0.3.1: - resolution: {integrity: sha512-5cyLugEkXnKSKSvVjKjxxPMLDnkwY3boZLbATWwiGJ4T/3UvIpiQmzb2RqtxxEFcVo/7PwsHPGN0MosopONO8Q==} - engines: {node: '>=10.0.0'} + /adjust-sourcemap-loader/4.0.0: + resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} + engines: {node: '>=8.9'} + dependencies: + loader-utils: 2.0.4 + regex-parser: 2.2.11 + dev: false + + /agent-base/6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} dependencies: - async: 3.2.4 debug: 4.3.4 - default-gateway: 6.0.3 - request: 2.88.2 - unordered-array-remove: 1.0.2 - xml2js: 0.1.14 transitivePeerDependencies: - supports-color - /native-abort-controller/1.0.4: - resolution: {integrity: sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ==} + /aggregate-error/3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} dependencies: - abort-controller: 3.0.0 + clean-stack: 2.2.0 + indent-string: 4.0.0 dev: true - /native-fetch/3.0.0: - resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} + /ajv-formats/2.1.1_ajv@8.12.0: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true dependencies: - node-fetch: 3.2.10 - - /natural-compare/1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - /netmask/2.0.2: - resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} - engines: {node: '>= 0.4.0'} + ajv: 8.12.0 + dev: false - /noble-ed25519/1.2.6: - resolution: {integrity: sha512-zfnWqg9FVMp8CnzUpAjbt1nDXpDjCvxYiCXdnW1mY8zQHw/6twUlkFm14VPdojVzc0kcd+i9zT79+26GcNbsuQ==} + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false - /noble-secp256k1/1.2.14: - resolution: {integrity: sha512-GSCXyoZBUaaPwVWdYncMEmzlSUjF9J/YeEHpklYJCyg8wPuJP3NzDx0BkiwArzINkdX2HJHvUJhL6vVWPOQQcg==} + /ajv-keywords/5.1.0_ajv@8.12.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + dependencies: + ajv: 8.12.0 + fast-deep-equal: 3.1.3 + dev: false - /node-addon-api/2.0.2: - resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 - /node-domexception/1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} + /ajv/8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: false - /node-fetch/3.2.10: - resolution: {integrity: sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /ansi-escapes/4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} dependencies: - data-uri-to-buffer: 4.0.0 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 + type-fest: 0.21.3 - /node-forge/0.10.0: - resolution: {integrity: sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==} - engines: {node: '>= 6.0.0'} - - /node-forge/1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - - /node-gyp-build/4.5.0: - resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} + /ansi-html-community/0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: false - /node-int64/0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} - /node-releases/2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} + /ansi-regex/6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: false - /normalize-path/3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 - /npm-run-path/4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: - path-key: 3.1.1 - - /oauth-sign/0.9.0: - resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - - /observable-fns/0.6.1: - resolution: {integrity: sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==} + color-convert: 2.0.1 - /observable-webworkers/1.0.0: - resolution: {integrity: sha512-+cECwCR8IEh8UY5nefQVLO9Cydqpk1izO+o7BABmKjXfJZyEOzBWY3ss5jbOPM6KmEa9aQExvAtTW6tVTOsNAQ==} + /ansi-styles/5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} - /once/1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + /any-signal/2.1.2: + resolution: {integrity: sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ==} dependencies: - wrappy: 1.0.2 + abort-controller: 3.0.0 + native-abort-controller: 1.0.4_abort-controller@3.0.0 + dev: true - /onetime/5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 + /any-signal/3.0.1: + resolution: {integrity: sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==} - /p-any/3.0.0: - resolution: {integrity: sha512-5rqbqfsRWNb0sukt0awwgJMlaep+8jV45S15SKKB34z4UuzjcofIfnriCBhWjZP2jbVtjt9yRl7buB6RlKsu9w==} - engines: {node: '>=10'} + /anymatch/3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: - p-cancelable: 2.1.1 - p-some: 5.0.0 + normalize-path: 3.0.0 + picomatch: 2.3.1 - /p-cancelable/2.1.1: - resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} - engines: {node: '>=8'} + /arg/4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true - /p-defer/3.0.0: - resolution: {integrity: sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==} - engines: {node: '>=8'} + /arg/5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: false - /p-fifo/1.0.0: - resolution: {integrity: sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==} + /argparse/1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: - fast-fifo: 1.1.0 - p-defer: 3.0.0 + sprintf-js: 1.0.3 - /p-finally/1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: false - /p-limit/2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + /aria-query/5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: - p-try: 2.2.0 + deep-equal: 2.2.0 + dev: false - /p-limit/3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 + /array-flatten/1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: false - /p-locate/4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 + /array-flatten/2.1.2: + resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} + dev: false - /p-queue/6.6.2: - resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} - engines: {node: '>=8'} + /array-includes/3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} dependencies: - eventemitter3: 4.0.7 - p-timeout: 3.2.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + get-intrinsic: 1.2.0 + is-string: 1.0.7 + dev: false - /p-reflect/2.1.0: - resolution: {integrity: sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg==} + /array-union/2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + dev: false - /p-retry/4.6.2: - resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} - engines: {node: '>=8'} + /array.prototype.flat/1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + engines: {node: '>= 0.4'} dependencies: - '@types/retry': 0.12.0 - retry: 0.13.1 + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + es-shim-unscopables: 1.0.0 + dev: false - /p-settle/4.1.1: - resolution: {integrity: sha512-6THGh13mt3gypcNMm0ADqVNCcYa3BK6DWsuJWFCuEKP1rpY+OKGp7gaZwVmLspmic01+fsg/fN57MfvDzZ/PuQ==} - engines: {node: '>=10'} + /array.prototype.flatmap/1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + engines: {node: '>= 0.4'} dependencies: - p-limit: 2.3.0 - p-reflect: 2.1.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + es-shim-unscopables: 1.0.0 + dev: false - /p-some/5.0.0: - resolution: {integrity: sha512-Js5XZxo6vHjB9NOYAzWDYAIyyiPvva0DWESAIWIK7uhSpGsyg5FwUPxipU/SOQx5x9EqhOh545d1jo6cVkitig==} - engines: {node: '>=10'} + /array.prototype.reduce/1.0.5: + resolution: {integrity: sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==} + engines: {node: '>= 0.4'} dependencies: - aggregate-error: 3.1.0 - p-cancelable: 2.1.1 + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.0.7 + dev: false - /p-timeout/3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} + /array.prototype.tosorted/1.1.1: + resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: - p-finally: 1.0.0 - - /p-timeout/4.1.0: - resolution: {integrity: sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==} - engines: {node: '>=10'} - - /p-try/2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.0 + dev: false - /pako/1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + /asap/2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false - /parse-duration/1.0.2: - resolution: {integrity: sha512-Dg27N6mfok+ow1a2rj/nRjtCfaKrHUZV2SJpEn/s8GaVUSlf4GGRCRP1c13Hj+wfPKVMrFDqLMLITkYKgKxyyg==} + /asn1.js/5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 dev: true - /parse-json/5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + /asn1/0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} dependencies: - '@babel/code-frame': 7.18.6 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 + safer-buffer: 2.1.2 + dev: true - /path-browserify/1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + /assert-plus/1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + dev: true - /path-exists/4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} + /ast-types-flow/0.0.7: + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + dev: false - /path-is-absolute/1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + /async/2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + dependencies: + lodash: 4.17.21 + dev: true - /path-key/3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + /async/3.2.3: + resolution: {integrity: sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==} + dev: true - /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + /async/3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - /peer-id/0.15.4: - resolution: {integrity: sha512-MDoBIMZYwQIAHaZQUwsIcvoFgdbIl5GtZMwSkXpIYvc5v0TSDv+u8WsTKrKt2Vv28tHFFDJQdVzu3T4qTPzK+w==} - engines: {node: '>=14.0.0'} - dependencies: - class-is: 1.1.0 - libp2p-crypto: 0.20.0 - minimist: 1.2.6 - multiformats: 9.9.0 - protobufjs: 6.11.3 - uint8arrays: 3.1.0 + /asynckit/0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - /peer-id/0.16.0: - resolution: {integrity: sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==} - engines: {node: '>=15.0.0'} - dependencies: - class-is: 1.1.0 - libp2p-crypto: 0.21.2 - multiformats: 9.7.1 - protobufjs: 6.11.3 - uint8arrays: 3.1.0 + /at-least-node/1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: false - /pem-jwk/2.0.0: - resolution: {integrity: sha512-rFxu7rVoHgQ5H9YsP50dDWf0rHjreVA2z0yPiWr5WdH/UHb29hKtF7h6l8vNd1cbYR1t0QL+JKhW55a2ZV4KtA==} - engines: {node: '>=5.10.0'} + /autoprefixer/10.4.13_postcss@8.4.21: + resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 dependencies: - asn1.js: 5.4.1 + browserslist: 4.21.5 + caniuse-lite: 1.0.30001451 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false - /performance-now/2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + /available-typed-arrays/1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: false - /picocolors/1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + /aws-sign2/0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + dev: true - /picomatch/2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + /aws4/1.12.0: + resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + dev: true - /pirates/4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} - engines: {node: '>= 6'} + /axe-core/4.6.3: + resolution: {integrity: sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==} + engines: {node: '>=4'} + dev: false - /pkg-dir/4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + /axobject-query/3.1.1: + resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} dependencies: - find-up: 4.1.0 - - /platform/1.3.6: - resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + deep-equal: 2.2.0 + dev: false - /pretty-format/27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + /babel-jest/27.5.1_@babel+core@7.20.12: + resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.8.0 dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - - /pretty-format/28.1.3: - resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@babel/core': 7.20.12 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__core': 7.20.0 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 27.5.1_@babel+core@7.20.12 + chalk: 4.1.2 + graceful-fs: 4.2.10 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + /babel-jest/28.1.3_@babel+core@7.20.12: + resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.20.12 + '@jest/transform': 28.1.3 + '@types/babel__core': 7.20.0 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 28.1.3_@babel+core@7.20.12 + chalk: 4.1.2 + graceful-fs: 4.2.10 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-jest/29.4.2_@babel+core@7.20.12: + resolution: {integrity: sha512-vcghSqhtowXPG84posYkkkzcZsdayFkubUgbE3/1tuGbX7AQtwCkkNA/wIbB0BMjuCPoqTkiDyKN7Ty7d3uwNQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.20.12 + '@jest/transform': 29.4.2 + '@types/babel__core': 7.20.0 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.4.2_@babel+core@7.20.12 + chalk: 4.1.2 + graceful-fs: 4.2.10 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-loader/8.3.0_la66t7xldg4uecmyawueag5wkm: + resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.20.12 + find-cache-dir: 3.3.2 + loader-utils: 2.0.4 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.75.0 + dev: false + + /babel-plugin-istanbul/6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + /babel-plugin-jest-hoist/27.5.1: + resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.20.7 + '@types/babel__core': 7.20.0 + '@types/babel__traverse': 7.18.3 + + /babel-plugin-jest-hoist/28.1.3: + resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.20.7 + '@types/babel__core': 7.20.0 + '@types/babel__traverse': 7.18.3 + dev: true + + /babel-plugin-jest-hoist/29.4.2: + resolution: {integrity: sha512-5HZRCfMeWypFEonRbEkwWXtNS1sQK159LhRVyRuLzyfVBxDy/34Tr/rg4YVi0SScSJ4fqeaR/OIeceJ/LaQ0pQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.20.7 + '@types/babel__core': 7.20.0 + '@types/babel__traverse': 7.18.3 + dev: true + + /babel-plugin-macros/3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.20.13 + cosmiconfig: 7.1.0 + resolve: 1.22.1 + dev: false + + /babel-plugin-named-asset-import/0.3.8_@babel+core@7.20.12: + resolution: {integrity: sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==} + peerDependencies: + '@babel/core': ^7.1.0 + dependencies: + '@babel/core': 7.20.12 + dev: false + + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.12: + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.20.14 + '@babel/core': 7.20.12 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.12: + resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 + core-js-compat: 3.27.2 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.12: + resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-transform-react-remove-prop-types/0.4.24: + resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} + dev: false + + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.12: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 + + /babel-preset-jest/27.5.1_@babel+core@7.20.12: + resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + + /babel-preset-jest/28.1.3_@babel+core@7.20.12: + resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + babel-plugin-jest-hoist: 28.1.3 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + dev: true + + /babel-preset-jest/29.4.2_@babel+core@7.20.12: + resolution: {integrity: sha512-ecWdaLY/8JyfUDr0oELBMpj3R5I1L6ZqG+kRJmwqfHtLWuPrJStR0LUkvUhfykJWTsXXMnohsayN/twltBbDrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + babel-plugin-jest-hoist: 29.4.2 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + dev: true + + /babel-preset-react-app/10.0.1: + resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} + dependencies: + '@babel/core': 7.20.12 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-decorators': 7.20.13_@babel+core@7.20.12 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-private-property-in-object': 7.20.5_@babel+core@7.20.12 + '@babel/plugin-transform-flow-strip-types': 7.19.0_@babel+core@7.20.12 + '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-runtime': 7.19.6_@babel+core@7.20.12 + '@babel/preset-env': 7.20.2_@babel+core@7.20.12 + '@babel/preset-react': 7.18.6_@babel+core@7.20.12 + '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 + '@babel/runtime': 7.20.13 + babel-plugin-macros: 3.1.0 + babel-plugin-transform-react-remove-prop-types: 0.4.24 + transitivePeerDependencies: + - supports-color + dev: false + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /base-x/3.0.9: + resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /base-x/4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + + /base64-js/1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + /basic-auth/2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /batch/0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + dev: false + + /bcrypt-pbkdf/1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + dependencies: + tweetnacl: 0.14.5 + dev: true + + /benchmark/2.1.4: + resolution: {integrity: sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==} + dependencies: + lodash: 4.17.21 + platform: 1.3.6 + dev: false + + /bfj/7.0.2: + resolution: {integrity: sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==} + engines: {node: '>= 8.0.0'} + dependencies: + bluebird: 3.7.2 + check-types: 11.2.2 + hoopy: 0.1.4 + tryer: 1.0.1 + dev: false + + /big.js/5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: false + + /bignumber.js/9.1.1: + resolution: {integrity: sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==} + dev: true + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: false + + /bindings/1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + dependencies: + file-uri-to-path: 1.0.0 + dev: true + + /bl/4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + + /bl/5.1.0: + resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + dependencies: + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /blakejs/1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + dev: true + + /blob-to-it/1.0.4: + resolution: {integrity: sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA==} + dependencies: + browser-readablestream-to-it: 1.0.3 + dev: true + + /bluebird/3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: false + + /bn.js/4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: true + + /body-parser/1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /bonjour-service/1.1.0: + resolution: {integrity: sha512-LVRinRB3k1/K0XzZ2p58COnWvkQknIY6sf0zF2rpErvcJXpMBttEPQSxK+HEXSS9VmpZlDoDnQWv8ftJT20B0Q==} + dependencies: + array-flatten: 2.1.2 + dns-equal: 1.0.0 + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + dev: false + + /boolbase/1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: false + + /borc/3.0.0: + resolution: {integrity: sha512-ec4JmVC46kE0+layfnwM3l15O70MlFiEbmQHY/vpqIKiUtPVntv4BY4NVnz3N4vb21edV3mY97XVckFvYHWF9g==} + engines: {node: '>=4'} + hasBin: true + dependencies: + bignumber.js: 9.1.1 + buffer: 6.0.3 + commander: 2.20.3 + ieee754: 1.2.1 + iso-url: 1.2.1 + json-text-sequence: 0.3.0 + readable-stream: 3.6.0 + dev: true + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion/2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /brorand/1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: true + + /browser-or-node/2.0.0: + resolution: {integrity: sha512-3Lrks/Okgof+/cRguUNG+qRXSeq79SO3hY4QrXJayJofwJwHiGC0qi99uDjsfTwULUFSr1OGVsBkdIkygKjTUA==} + dev: true + + /browser-or-node/2.1.1: + resolution: {integrity: sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==} + dev: true + + /browser-process-hrtime/1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + + /browser-readablestream-to-it/1.0.3: + resolution: {integrity: sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==} + dev: true + + /browserslist/4.21.5: + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001451 + electron-to-chromium: 1.4.295 + node-releases: 2.0.10 + update-browserslist-db: 1.0.10_browserslist@4.21.5 + + /bs-logger/0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + dependencies: + fast-json-stable-stringify: 2.1.0 + dev: true + + /bs58/5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + dependencies: + base-x: 4.0.0 + + /bser/2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + + /buffer-es6/4.9.3: + resolution: {integrity: sha512-Ibt+oXxhmeYJSsCkODPqNpPmyegefiD8rfutH1NYGhMZQhSp95Rz7haemgnJ6dxa6LT+JLLbtgOMORRluwKktw==} + + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + /buffer/5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + /buffer/6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + /builtin-modules/3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: false + + /busboy/1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + + /byte-access/1.0.1: + resolution: {integrity: sha512-GKYa+lvxnzhgHWj9X+LCsQ4s2/C5uvib573eAOiQKywXMkzFFErY2+yQdzmdE5iWVpmqecsRx3bOtOY4/1eINw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + uint8arraylist: 2.4.3 + dev: false + + /bytes/3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: false + + /bytes/3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: false + + /call-bind/1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.0 + + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /camel-case/4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.5.0 + dev: false + + /camelcase-css/2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: false + + /camelcase/5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + /camelcase/6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + /caniuse-api/3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + dependencies: + browserslist: 4.21.5 + caniuse-lite: 1.0.30001451 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: false + + /caniuse-lite/1.0.30001451: + resolution: {integrity: sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==} + + /case-sensitive-paths-webpack-plugin/2.4.0: + resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} + engines: {node: '>=4'} + dev: false + + /caseless/0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + dev: true + + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk/3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: false + + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /char-regex/1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + /char-regex/2.0.1: + resolution: {integrity: sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==} + engines: {node: '>=12.20'} + dev: false + + /check-types/11.2.2: + resolution: {integrity: sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA==} + dev: false + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: false + + /chrome-trace-event/1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: false + + /ci-info/3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + + /cids/1.1.9: + resolution: {integrity: sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==} + engines: {node: '>=4.0.0', npm: '>=3.0.0'} + deprecated: This module has been superseded by the multiformats module + dependencies: + multibase: 4.0.6 + multicodec: 3.2.1 + multihashes: 4.0.3 + uint8arrays: 3.1.1 + dev: true + + /cjs-module-lexer/1.2.2: + resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} + + /class-is/1.1.0: + resolution: {integrity: sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==} + dev: true + + /clean-css/5.3.2: + resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} + engines: {node: '>= 10.0'} + dependencies: + source-map: 0.6.1 + dev: false + + /clean-stack/2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cliui/7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + /cliui/8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /co/4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + /coa/2.0.2: + resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} + engines: {node: '>= 4.0'} + dependencies: + '@types/q': 1.5.5 + chalk: 2.4.2 + q: 1.5.1 + dev: false + + /collect-v8-coverage/1.0.1: + resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name/1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /colord/2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: false + + /colorette/2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + dev: false + + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + /commander/7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: false + + /commander/8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: false + + /common-path-prefix/3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + dev: false + + /common-tags/1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + dev: false + + /commondir/1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: false + + /compressible/2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /compression/1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /concat-map/0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /confusing-browser-globals/1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: false + + /connect-history-api-fallback/2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + dev: false + + /content-disposition/0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /content-type/1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: false + + /convert-source-map/1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + /convert-source-map/2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /cookie-signature/1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: false + + /cookie/0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: false + + /core-js-compat/3.27.2: + resolution: {integrity: sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg==} + dependencies: + browserslist: 4.21.5 + dev: false + + /core-js-pure/3.27.2: + resolution: {integrity: sha512-Cf2jqAbXgWH3VVzjyaaFkY1EBazxugUepGymDoeteyYr9ByX51kD2jdHZlsEF/xnJMyN3Prua7mQuzwMg6Zc9A==} + requiresBuild: true + dev: false + + /core-js/3.27.2: + resolution: {integrity: sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==} + requiresBuild: true + dev: false + + /core-util-is/1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + dev: true + + /core-util-is/1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false + + /corser/2.0.1: + resolution: {integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==} + engines: {node: '>= 0.4.0'} + dev: true + + /cosmiconfig/6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: false + + /cosmiconfig/7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: false + + /create-require/1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + + /cross-spawn/7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /crypto-random-string/2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + dev: false + + /css-blank-pseudo/3.0.3_postcss@8.4.21: + resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /css-declaration-sorter/6.3.1_postcss@8.4.21: + resolution: {integrity: sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + dependencies: + postcss: 8.4.21 + dev: false + + /css-has-pseudo/3.0.4_postcss@8.4.21: + resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /css-loader/6.7.3_webpack@5.75.0: + resolution: {integrity: sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-modules-extract-imports: 3.0.0_postcss@8.4.21 + postcss-modules-local-by-default: 4.0.0_postcss@8.4.21 + postcss-modules-scope: 3.0.0_postcss@8.4.21 + postcss-modules-values: 4.0.0_postcss@8.4.21 + postcss-value-parser: 4.2.0 + semver: 7.3.8 + webpack: 5.75.0 + dev: false + + /css-minimizer-webpack-plugin/3.4.1_webpack@5.75.0: + resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@parcel/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + dependencies: + cssnano: 5.1.14_postcss@8.4.21 + jest-worker: 27.5.1 + postcss: 8.4.21 + schema-utils: 4.0.0 + serialize-javascript: 6.0.1 + source-map: 0.6.1 + webpack: 5.75.0 + dev: false + + /css-prefers-color-scheme/6.0.3_postcss@8.4.21: + resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.21 + dev: false + + /css-select-base-adapter/0.1.1: + resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} + dev: false + + /css-select/2.1.0: + resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} + dependencies: + boolbase: 1.0.0 + css-what: 3.4.2 + domutils: 1.7.0 + nth-check: 1.0.2 + dev: false + + /css-select/4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: false + + /css-tree/1.0.0-alpha.37: + resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.4 + source-map: 0.6.1 + dev: false + + /css-tree/1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: false + + /css-what/3.4.2: + resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} + engines: {node: '>= 6'} + dev: false + + /css-what/6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: false + + /css.escape/1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: false + + /cssdb/7.4.1: + resolution: {integrity: sha512-0Q8NOMpXJ3iTDDbUv9grcmQAfdDx4qz+fN/+Md2FGbevT+6+bJNQ2LjB2YIUlLbpBTM32idU1Sb+tb/uGt6/XQ==} + dev: false + + /cssesc/3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /cssnano-preset-default/5.2.13_postcss@8.4.21: + resolution: {integrity: sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + css-declaration-sorter: 6.3.1_postcss@8.4.21 + cssnano-utils: 3.1.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-calc: 8.2.4_postcss@8.4.21 + postcss-colormin: 5.3.0_postcss@8.4.21 + postcss-convert-values: 5.1.3_postcss@8.4.21 + postcss-discard-comments: 5.1.2_postcss@8.4.21 + postcss-discard-duplicates: 5.1.0_postcss@8.4.21 + postcss-discard-empty: 5.1.1_postcss@8.4.21 + postcss-discard-overridden: 5.1.0_postcss@8.4.21 + postcss-merge-longhand: 5.1.7_postcss@8.4.21 + postcss-merge-rules: 5.1.3_postcss@8.4.21 + postcss-minify-font-values: 5.1.0_postcss@8.4.21 + postcss-minify-gradients: 5.1.1_postcss@8.4.21 + postcss-minify-params: 5.1.4_postcss@8.4.21 + postcss-minify-selectors: 5.2.1_postcss@8.4.21 + postcss-normalize-charset: 5.1.0_postcss@8.4.21 + postcss-normalize-display-values: 5.1.0_postcss@8.4.21 + postcss-normalize-positions: 5.1.1_postcss@8.4.21 + postcss-normalize-repeat-style: 5.1.1_postcss@8.4.21 + postcss-normalize-string: 5.1.0_postcss@8.4.21 + postcss-normalize-timing-functions: 5.1.0_postcss@8.4.21 + postcss-normalize-unicode: 5.1.1_postcss@8.4.21 + postcss-normalize-url: 5.1.0_postcss@8.4.21 + postcss-normalize-whitespace: 5.1.1_postcss@8.4.21 + postcss-ordered-values: 5.1.3_postcss@8.4.21 + postcss-reduce-initial: 5.1.1_postcss@8.4.21 + postcss-reduce-transforms: 5.1.0_postcss@8.4.21 + postcss-svgo: 5.1.0_postcss@8.4.21 + postcss-unique-selectors: 5.1.1_postcss@8.4.21 + dev: false + + /cssnano-utils/3.1.0_postcss@8.4.21: + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + dev: false + + /cssnano/5.1.14_postcss@8.4.21: + resolution: {integrity: sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.13_postcss@8.4.21 + lilconfig: 2.0.6 + postcss: 8.4.21 + yaml: 1.10.2 + dev: false + + /csso/4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: false + + /cssom/0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + /cssom/0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + + /cssstyle/2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + dependencies: + cssom: 0.3.8 + + /csstype/3.1.1: + resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} + dev: false + + /damerau-levenshtein/1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: false + + /dashdash/1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + dev: true + + /data-uri-to-buffer/4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: true + + /data-urls/2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + + /datastore-core/7.0.3: + resolution: {integrity: sha512-DmPsUux63daOfCszxLkcp6LjdJ0k/BQNhIMtoAi5mbraYQnEQkFtKORmTu6XmDX6ujbtaBkeuJAiCBNI7MZklw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + debug: 4.3.4 + err-code: 3.0.1 + interface-datastore: 6.1.1 + it-drain: 1.0.5 + it-filter: 1.0.3 + it-map: 1.0.6 + it-merge: 1.0.4 + it-pipe: 1.1.0 + it-pushable: 1.4.2 + it-take: 1.0.2 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /datastore-core/8.0.4: + resolution: {integrity: sha512-oBA6a024NFXJOTu+w9nLAimfy4wCYUhdE/5XQGtdKt1BmCVtPYW10GORvVT3pdZBcse6k/mVcBl+hjkXIlm65A==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@libp2p/logger': 2.0.5 + err-code: 3.0.1 + interface-datastore: 7.0.4 + it-all: 2.0.0 + it-drain: 2.0.0 + it-filter: 2.0.0 + it-map: 2.0.0 + it-merge: 2.0.0 + it-pipe: 2.0.5 + it-pushable: 3.1.2 + it-take: 2.0.0 + uint8arrays: 4.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /debug/2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: false + + /debug/3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decimal.js/10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + + /dedent/0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + /deep-equal/2.2.0: + resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} + dependencies: + call-bind: 1.0.2 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.0 + is-arguments: 1.1.1 + is-array-buffer: 3.0.1 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + isarray: 2.0.5 + object-is: 1.1.5 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + side-channel: 1.0.4 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.9 + dev: false + + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + /deepmerge/4.3.0: + resolution: {integrity: sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==} + engines: {node: '>=0.10.0'} + + /default-gateway/6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + dependencies: + execa: 5.1.1 + + /default-import/1.1.5: + resolution: {integrity: sha512-aaJ6uzZlmaEcN1U8yvtiyV7MG3/zZQf1XtGSW5dTfAVvfk0VZuriJelXxVL9a0ni42vMkhjWcztFfpIhwFcfOQ==} + engines: {node: '>=14'} + + /define-lazy-prop/2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: false + + /define-properties/1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: false + + /defined/1.0.1: + resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} + dev: false + + /delayed-stream/1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + /depd/1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: false + + /depd/2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: false + + /destroy/1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: false + + /detect-newline/3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + /detect-node/2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: false + + /detect-port-alt/1.1.6: + resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} + engines: {node: '>= 4.2.1'} + hasBin: true + dependencies: + address: 1.2.2 + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + dev: false + + /detective/5.2.1: + resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} + engines: {node: '>=0.8.0'} + hasBin: true + dependencies: + acorn-node: 1.8.2 + defined: 1.0.1 + minimist: 1.2.8 + dev: false + + /didyoumean/1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: false + + /diff-sequences/27.5.1: + resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + /diff-sequences/28.1.1: + resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + + /diff-sequences/29.4.2: + resolution: {integrity: sha512-R6P0Y6PrsH3n4hUXxL3nns0rbRk6Q33js3ygJBeEpbzLzgcNuJ61+u0RXasFpTKISw99TxUzFnumSnRLsjhLaw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /diff/4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: false + + /dlv/1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: false + + /dns-equal/1.0.0: + resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} + dev: false + + /dns-over-http-resolver/1.2.3_node-fetch@3.3.0: + resolution: {integrity: sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==} + dependencies: + debug: 4.3.4 + native-fetch: 3.0.0_node-fetch@3.3.0 + receptacle: 1.3.2 + transitivePeerDependencies: + - node-fetch + - supports-color + dev: true + + /dns-over-http-resolver/2.1.1: + resolution: {integrity: sha512-Lm/eXB7yAQLJ5WxlBGwYfBY7utduXPZykcSmcG6K7ozM0wrZFvxZavhT6PqI0kd/5CUTfev/RrEFQqyU4CGPew==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + debug: 4.3.4 + native-fetch: 4.0.2_undici@5.18.0 + receptacle: 1.3.2 + undici: 5.18.0 + transitivePeerDependencies: + - supports-color + + /dns-packet/5.4.0: + resolution: {integrity: sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==} + engines: {node: '>=6'} + dependencies: + '@leichtgewicht/ip-codec': 2.0.4 + dev: false + + /doctrine/2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: false + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: false + + /dom-accessibility-api/0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dev: false + + /dom-converter/0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + dependencies: + utila: 0.4.0 + dev: false + + /dom-serializer/0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + dev: false + + /dom-serializer/1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: false + + /domelementtype/1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + dev: false + + /domelementtype/2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: false + + /domexception/2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + dependencies: + webidl-conversions: 5.0.0 + + /domhandler/4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + + /domutils/1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: false + + /domutils/2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: false + + /dot-case/3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dependencies: + no-case: 3.0.4 + tslib: 2.5.0 + dev: false + + /dotenv-expand/5.1.0: + resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} + dev: false + + /dotenv/10.0.0: + resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} + engines: {node: '>=10'} + dev: false + + /duplexer/0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: false + + /ecc-jsbn/0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /ee-first/1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: false + + /ejs/3.1.8: + resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.8.5 + dev: false + + /electron-fetch/1.9.1: + resolution: {integrity: sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==} + engines: {node: '>=6'} + dependencies: + encoding: 0.1.13 + dev: true + + /electron-to-chromium/1.4.295: + resolution: {integrity: sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw==} + + /elliptic/6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /emittery/0.10.2: + resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} + engines: {node: '>=12'} + + /emittery/0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + + /emittery/0.8.1: + resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} + engines: {node: '>=10'} + + /emoji-regex/8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /emoji-regex/9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false + + /emojis-list/3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: false + + /encodeurl/1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: false + + /encoding/0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /end-of-stream/1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + + /enhanced-resolve/5.12.0: + resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + dev: false + + /entities/2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: false + + /err-code/3.0.1: + resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} + + /error-ex/1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + + /error-stack-parser/2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + dependencies: + stackframe: 1.3.4 + dev: false + + /es-abstract/1.21.1: + resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.0 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.1 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.10 + is-weakref: 1.0.2 + object-inspect: 1.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + safe-regex-test: 1.0.0 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.9 + dev: false + + /es-array-method-boxes-properly/1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + dev: false + + /es-get-iterator/1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.2 + is-set: 2.0.2 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + dev: false + + /es-module-lexer/0.9.3: + resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} + dev: false + + /es-set-tostringtag/2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: false + + /es-shim-unscopables/1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + dev: false + + /es-to-primitive/1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: false + + /es6-promisify/7.0.0: + resolution: {integrity: sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==} + engines: {node: '>=6'} + dev: true + + /esbuild/0.16.17: + resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.16.17 + '@esbuild/android-arm64': 0.16.17 + '@esbuild/android-x64': 0.16.17 + '@esbuild/darwin-arm64': 0.16.17 + '@esbuild/darwin-x64': 0.16.17 + '@esbuild/freebsd-arm64': 0.16.17 + '@esbuild/freebsd-x64': 0.16.17 + '@esbuild/linux-arm': 0.16.17 + '@esbuild/linux-arm64': 0.16.17 + '@esbuild/linux-ia32': 0.16.17 + '@esbuild/linux-loong64': 0.16.17 + '@esbuild/linux-mips64el': 0.16.17 + '@esbuild/linux-ppc64': 0.16.17 + '@esbuild/linux-riscv64': 0.16.17 + '@esbuild/linux-s390x': 0.16.17 + '@esbuild/linux-x64': 0.16.17 + '@esbuild/netbsd-x64': 0.16.17 + '@esbuild/openbsd-x64': 0.16.17 + '@esbuild/sunos-x64': 0.16.17 + '@esbuild/win32-arm64': 0.16.17 + '@esbuild/win32-ia32': 0.16.17 + '@esbuild/win32-x64': 0.16.17 + dev: true + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + /escape-html/1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: false + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp/2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + /escape-string-regexp/4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: false + + /escodegen/2.0.0: + resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + + /eslint-config-react-app/7.0.1_i3tuwedbyjkyv7x6vb4ybywusi: + resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} + engines: {node: '>=14.0.0'} + peerDependencies: + eslint: ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.20.12 + '@babel/eslint-parser': 7.19.1_ydmbqfus77qykiqxhcwsorsqbq + '@rushstack/eslint-patch': 1.2.0 + '@typescript-eslint/eslint-plugin': 5.51.0_z4swst3wuuqk4hlme4ajzslgh4 + '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + babel-preset-react-app: 10.0.1 + confusing-browser-globals: 1.0.11 + eslint: 8.34.0 + eslint-plugin-flowtype: 8.0.3_5khfkqgka3gftezlren2b6mcy4 + eslint-plugin-import: 2.27.5_62tsymtiqxebhmxuag4hg3gx2m + eslint-plugin-jest: 25.7.0_24ag2vz6wmjuovrv63vw7tbd34 + eslint-plugin-jsx-a11y: 6.7.1_eslint@8.34.0 + eslint-plugin-react: 7.32.2_eslint@8.34.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.34.0 + eslint-plugin-testing-library: 5.10.1_7kw3g6rralp5ps6mg3uyzz6azm + typescript: 4.9.5 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color + dev: false + + /eslint-import-resolver-node/0.3.7: + resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + dependencies: + debug: 3.2.7 + is-core-module: 2.11.0 + resolve: 1.22.1 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-module-utils/2.7.4_ithmlgmaospkvl4p7n7pyp3rgq: + resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + debug: 3.2.7 + eslint: 8.34.0 + eslint-import-resolver-node: 0.3.7 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-plugin-flowtype/8.0.3_5khfkqgka3gftezlren2b6mcy4: + resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@babel/plugin-syntax-flow': ^7.14.5 + '@babel/plugin-transform-react-jsx': ^7.14.9 + eslint: ^8.1.0 + dependencies: + '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx': 7.20.13_@babel+core@7.20.12 + eslint: 8.34.0 + lodash: 4.17.21 + string-natural-compare: 3.0.1 + dev: false + + /eslint-plugin-import/2.27.5_62tsymtiqxebhmxuag4hg3gx2m: + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.34.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.7.4_ithmlgmaospkvl4p7n7pyp3rgq + has: 1.0.3 + is-core-module: 2.11.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.1 + semver: 6.3.0 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-plugin-jest/25.7.0_24ag2vz6wmjuovrv63vw7tbd34: + resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.51.0_z4swst3wuuqk4hlme4ajzslgh4 + '@typescript-eslint/experimental-utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + eslint: 8.34.0 + jest: 27.5.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /eslint-plugin-jsx-a11y/6.7.1_eslint@8.34.0: + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.20.13 + aria-query: 5.1.3 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + ast-types-flow: 0.0.7 + axe-core: 4.6.3 + axobject-query: 3.1.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.34.0 + has: 1.0.3 + jsx-ast-utils: 3.3.3 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + semver: 6.3.0 + dev: false + + /eslint-plugin-react-hooks/4.6.0_eslint@8.34.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.34.0 + dev: false + + /eslint-plugin-react/7.32.2_eslint@8.34.0: + resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 + doctrine: 2.1.0 + eslint: 8.34.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.3 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.8 + dev: false + + /eslint-plugin-testing-library/5.10.1_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-GRy87AqUi2Ij69pe0YnOXm3oGBCgnFwfIv+Hu9q/kT3jL0pX1cXA7aO+oJnvdpbJy2+riOPqGsa3iAkL888NLg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.51.0_7kw3g6rralp5ps6mg3uyzz6azm + eslint: 8.34.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /eslint-scope/5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: false + + /eslint-scope/7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: false + + /eslint-utils/3.0.0_eslint@8.34.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.34.0 + eslint-visitor-keys: 2.1.0 + dev: false + + /eslint-visitor-keys/2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: false + + /eslint-visitor-keys/3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /eslint-webpack-plugin/3.2.0_tuobyd7hv2iyslumy6tj4ngzsq: + resolution: {integrity: sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==} + engines: {node: '>= 12.13.0'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + webpack: ^5.0.0 + dependencies: + '@types/eslint': 8.21.0 + eslint: 8.34.0 + jest-worker: 28.1.3 + micromatch: 4.0.5 + normalize-path: 3.0.0 + schema-utils: 4.0.0 + webpack: 5.75.0 + dev: false + + /eslint/8.34.0: + resolution: {integrity: sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.4.1 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.34.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.1 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.3.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /esm/3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + optional: true + + /espree/9.4.1: + resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2_acorn@8.8.2 + eslint-visitor-keys: 3.3.0 + dev: false + + /esprima/4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + /esquery/1.4.0: + resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: false + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: false + + /estraverse/4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: false + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + /estree-walker/1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: false + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + /etag/1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: false + + /event-iterator/2.0.0: + resolution: {integrity: sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==} + + /event-target-shim/5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: true + + /eventemitter3/4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + /events/3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + /execa/5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + /exit/0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + /expect/27.5.1: + resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + jest-get-type: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + + /expect/28.1.3: + resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@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 + dev: true + + /expect/29.4.2: + resolution: {integrity: sha512-+JHYg9O3hd3RlICG90OPVjRkPBoiUH7PxvDVMnRiaq1g6JUgZStX514erMl0v2Dc5SkfVbm7ztqbd6qHHPn+mQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.4.2 + jest-get-type: 29.4.2 + jest-matcher-utils: 29.4.2 + jest-message-util: 29.4.2 + jest-util: 29.4.2 + dev: true + + /express/4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /extend/3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /extsprintf/1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-extend/1.0.2: + resolution: {integrity: sha512-XXA9RmlPatkFKUzqVZAFth18R4Wo+Xug/S+C7YlYA3xrXwfPlW3dqNwOb4hvQo7wZJ2cNDYhrYuPzVOfHy5/uQ==} + + /fast-fifo/1.1.0: + resolution: {integrity: sha512-Kl29QoNbNvn4nhDsLYjyIAaIqaJB6rBx5p3sL9VjaefJ+eMFBWVZiaoguaoZfzEKr5RhAti0UgM8703akGPJ6g==} + + /fast-glob/3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: false + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + /fastq/1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: false + + /faye-websocket/0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + dependencies: + websocket-driver: 0.7.4 + dev: false + + /fb-watchman/2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + + /fetch-blob/3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: true + + /file-entry-cache/6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: false + + /file-loader/6.2.0_webpack@5.75.0: + resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.1.1 + webpack: 5.75.0 + dev: false + + /file-uri-to-path/1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + dev: true + + /filelist/1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.6 + dev: false + + /filesize/8.0.7: + resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} + engines: {node: '>= 0.4.0'} + dev: false + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /finalhandler/1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /find-cache-dir/3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: false + + /find-up/3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + dev: false + + /find-up/4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + /find-up/5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: false + + /flat-cache/3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: false + + /flatted/3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: false + + /follow-redirects/1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + /for-each/0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: false + + /forever-agent/0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + dev: true + + /fork-ts-checker-webpack-plugin/6.5.2_f3a4zrasoaotz7gdk64fcmlkrm: + resolution: {integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.18.6 + '@types/json-schema': 7.0.11 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.3.0 + eslint: 8.34.0 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.4.13 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.3.8 + tapable: 1.1.3 + typescript: 4.9.5 + webpack: 5.75.0 + dev: false + + /form-data/2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /form-data/3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + /form-data/4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /formdata-polyfill/4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: true + + /forwarded/0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: false + + /fraction.js/4.2.0: + resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + dev: false + + /freeport-promise/2.0.0: + resolution: {integrity: sha512-dwWpT1DdQcwrhmRwnDnPM/ZFny+FtzU+k50qF2eid3KxaQDsMiBrwo1i0G3qSugkN5db6Cb0zgfc68QeTOpEFg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false + + /fresh/0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: false + + /fs-constants/1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + /fs-extra/10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + + /fs-extra/9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + + /fs-monkey/0.3.3: + resolution: {integrity: sha512-FNUvuTAJ3CqCQb5ELn+qCbGR/Zllhf2HtwsdAtBi59s1WeCjKMT81fHcSu7dwIskqGVK+MmOrb7VOBlq3/SItw==} + + /fs-monkey/1.0.3: + resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} + dev: false + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /function.prototype.name/1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + functions-have-names: 1.2.3 + dev: false + + /functions-have-names/1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: false + + /gensync/1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + /get-caller-file/2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + /get-intrinsic/1.2.0: + resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + + /get-iterator/1.0.2: + resolution: {integrity: sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==} + dev: true + + /get-iterator/2.0.0: + resolution: {integrity: sha512-BDJawD5PU2gZv6Vlp8O28H4GnZcsr3h9gZUvnAP5xXP3WOy/QAoOsyMepSkw21jur+4t5Vppde72ChjhTIzxzg==} + dev: false + + /get-own-enumerable-property-symbols/3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + dev: false + + /get-package-type/0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + /get-stream/6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + /get-symbol-description/1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + dev: false + + /getpass/0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + dependencies: + assert-plus: 1.0.0 + dev: true + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: false + + /glob-parent/6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: false + + /glob-to-regexp/0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: false + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /global-modules/2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + dependencies: + global-prefix: 3.0.0 + dev: false + + /global-prefix/3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: false + + /globals/11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + /globals/13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: false + + /globalthis/1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.0 + dev: false + + /globby/11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: false + + /globrex/0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true + + /gopd/1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.0 + dev: false + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + + /grapheme-splitter/1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: false + + /gzip-size/6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + dev: false + + /handle-thing/2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + dev: false + + /har-schema/2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + dev: true + + /har-validator/5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + dev: true + + /harmony-reflect/1.6.2: + resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} + dev: false + + /has-bigints/1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: false + + /has-flag/3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.2.0 + dev: false + + /has-proto/1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: false + + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + + /hash.js/1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /hashlru/2.3.0: + resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} + + /he/1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + /hmac-drbg/1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /hoopy/0.1.4: + resolution: {integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==} + engines: {node: '>= 6.0.0'} + dev: false + + /hpack.js/2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.7 + wbuf: 1.7.3 + dev: false + + /html-encoding-sniffer/2.0.1: + resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} + engines: {node: '>=10'} + dependencies: + whatwg-encoding: 1.0.5 + + /html-encoding-sniffer/3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + dependencies: + whatwg-encoding: 2.0.0 + dev: true + + /html-entities/2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + dev: false + + /html-escaper/2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + /html-minifier-terser/6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.2 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.16.3 + dev: false + + /html-webpack-plugin/5.5.0_webpack@5.75.0: + resolution: {integrity: sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==} + engines: {node: '>=10.13.0'} + peerDependencies: + webpack: ^5.20.0 + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + webpack: 5.75.0 + dev: false + + /htmlparser2/6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + dev: false + + /http-deceiver/1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + dev: false + + /http-errors/1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: false + + /http-errors/2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: false + + /http-parser-js/0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + dev: false + + /http-proxy-agent/4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + /http-proxy-middleware/2.0.6_@types+express@4.17.17: + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + dependencies: + '@types/express': 4.17.17 + '@types/http-proxy': 1.17.9 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.5 + transitivePeerDependencies: + - debug + dev: false + + /http-proxy/1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.2 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + /http-server/14.1.1: + resolution: {integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==} + engines: {node: '>=12'} + hasBin: true + dependencies: + basic-auth: 2.0.1 + chalk: 4.1.2 + corser: 2.0.1 + he: 1.2.0 + html-encoding-sniffer: 3.0.0 + http-proxy: 1.18.1 + mime: 1.6.0 + minimist: 1.2.8 + opener: 1.5.2 + portfinder: 1.0.32 + secure-compare: 3.0.1 + union: 0.5.0 + url-join: 4.0.1 + transitivePeerDependencies: + - debug + - supports-color + dev: true + + /http-signature/1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.17.0 + dev: true + + /https-proxy-agent/5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + /human-signals/2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + /iconv-lite/0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /iconv-lite/0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /icss-utils/5.1.0_postcss@8.4.21: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.21 + dev: false + + /idb/7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + dev: false + + /identity-obj-proxy/3.0.0: + resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} + engines: {node: '>=4'} + dependencies: + harmony-reflect: 1.6.2 + dev: false + + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + /ignore/5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: false + + /immer/9.0.19: + resolution: {integrity: sha512-eY+Y0qcsB4TZKwgQzLaE/lqYMlKhv5J9dyd2RhhtGhNo2njPXDqU9XPfcNfa3MIDsdtZt5KlkIsirlo4dHsWdQ==} + dev: false + + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: false + + /import-local/3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + /imurmurhash/0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + /indent-string/4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits/2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: false + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini/1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: false + + /interface-datastore/4.0.2: + resolution: {integrity: sha512-/XRmD7oagZMTaK25rV3WFrejLoUwxZcpgE+eNyZNYvb2jlB5P3MwJCIbetJSlVYK7yvaFmJi8s3f9VLcxJjdog==} + dependencies: + err-code: 3.0.1 + interface-store: 0.0.2 + ipfs-utils: 8.1.6 + iso-random-stream: 2.0.2 + it-all: 1.0.6 + it-drain: 1.0.5 + it-filter: 1.0.3 + it-take: 1.0.2 + nanoid: 3.3.4 + uint8arrays: 2.1.10 + dev: true + + /interface-datastore/6.1.1: + resolution: {integrity: sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg==} + dependencies: + interface-store: 2.0.2 + nanoid: 3.3.4 + uint8arrays: 3.1.1 + dev: true + + /interface-datastore/7.0.4: + resolution: {integrity: sha512-Q8LZS/jfFFHz6XyZazLTAc078SSCoa27ZPBOfobWdpDiFO7FqPA2yskitUJIhaCgxNK8C+/lMBUTBNfVIDvLiw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + interface-store: 3.0.4 + nanoid: 4.0.1 + uint8arrays: 4.0.3 + dev: false + + /interface-ipld-format/1.0.1: + resolution: {integrity: sha512-WV/ar+KQJVoQpqRDYdo7YPGYIUHJxCuOEhdvsRpzLqoOIVCqPKdMMYmsLL1nCRsF3yYNio+PAJbCKiv6drrEAg==} + deprecated: This module has been superseded by the multiformats module + dependencies: + cids: 1.1.9 + multicodec: 3.2.1 + multihashes: 4.0.3 + dev: true + + /interface-store/0.0.2: + resolution: {integrity: sha512-t4c9GKXH1Vi/WxmppGyIi6iedbGo92YmLneopHmbIEIp27ep7VnrYGA6lM/rLsFo5Tj6TJgIqr3FOk8mvPgIWQ==} + dev: true + + /interface-store/2.0.2: + resolution: {integrity: sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg==} + dev: true + + /interface-store/3.0.4: + resolution: {integrity: sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false + + /internal-slot/1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + side-channel: 1.0.4 + dev: false + + /ip-address/8.1.0: + resolution: {integrity: sha512-Wz91gZKpNKoXtqvY8ScarKYwhXoK4r/b5QuT+uywe/azv0/nUCo7Bh0IRRI7F9DHR06kJNWtzMGLIbXavngbKA==} + engines: {node: '>= 12'} + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.2 + dev: true + + /ip-regex/4.3.0: + resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} + engines: {node: '>=8'} + dev: true + + /ip-regex/5.0.0: + resolution: {integrity: sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + /ipaddr.js/1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: false + + /ipaddr.js/2.0.1: + resolution: {integrity: sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==} + engines: {node: '>= 10'} + + /ipfs-core-types/0.5.2_node-fetch@3.3.0: + resolution: {integrity: sha512-DOQeL+GFGYMTlnbdtMeBzvfVnyAalSgCfPr8XUCI+FVBZZWwzkt5jZZzGDmF87HVRrMR3FuVyBKZj772mcXKyQ==} + dependencies: + cids: 1.1.9 + interface-datastore: 4.0.2 + ipld-block: 0.11.1 + multiaddr: 9.0.2_node-fetch@3.3.0 + multibase: 4.0.6 + transitivePeerDependencies: + - node-fetch + - supports-color + dev: true + + /ipfs-core-utils/0.8.3_node-fetch@3.3.0: + resolution: {integrity: sha512-PY7PkCgCtVYtNOe1C3ew1+5D9NqXqizb886R/lyGWe+KsmWtBQkQIk0ZIDwKyHGvG2KA2QQeIDzdOmzBQBJtHQ==} + dependencies: + any-signal: 2.1.2 + blob-to-it: 1.0.4 + browser-readablestream-to-it: 1.0.3 + cids: 1.1.9 + err-code: 3.0.1 + ipfs-core-types: 0.5.2_node-fetch@3.3.0 + ipfs-unixfs: 4.0.3 + ipfs-utils: 8.1.6 + it-all: 1.0.6 + it-map: 1.0.6 + it-peekable: 1.0.3 + multiaddr: 9.0.2_node-fetch@3.3.0 + multiaddr-to-uri: 7.0.0_node-fetch@3.3.0 + parse-duration: 1.0.2 + timeout-abort-controller: 1.1.1 + uint8arrays: 2.1.10 + transitivePeerDependencies: + - node-fetch + - supports-color + dev: true + + /ipfs-http-client/50.1.2_node-fetch@3.3.0: + resolution: {integrity: sha512-ZbJlED4wqwFXQFVB9FQDs20ygdq7O/zSq4AvO9KRAmkqUj2TsCWCteUz2fBMnGWLh2tExxeSl/rQbHbJptb8JQ==} + engines: {node: '>=14.0.0', npm: '>=3.0.0'} + dependencies: + abort-controller: 3.0.0 + any-signal: 2.1.2 + cids: 1.1.9 + debug: 4.3.4 + form-data: 4.0.0 + ipfs-core-types: 0.5.2_node-fetch@3.3.0 + ipfs-core-utils: 0.8.3_node-fetch@3.3.0 + ipfs-unixfs: 4.0.3 + ipfs-utils: 8.1.6 + ipld-block: 0.11.1 + ipld-dag-cbor: 1.0.1 + ipld-dag-pb: 0.22.3 + ipld-raw: 7.0.1 + it-last: 1.0.6 + it-map: 1.0.6 + it-tar: 3.0.0 + it-to-stream: 1.0.0 + merge-options: 3.0.4 + multiaddr: 9.0.2_node-fetch@3.3.0 + multibase: 4.0.6 + multicodec: 3.2.1 + multihashes: 4.0.3 + nanoid: 3.3.4 + native-abort-controller: 1.0.4_abort-controller@3.0.0 + parse-duration: 1.0.2 + stream-to-it: 0.2.4 + uint8arrays: 2.1.10 + transitivePeerDependencies: + - node-fetch + - supports-color + dev: true + + /ipfs-unixfs/4.0.3: + resolution: {integrity: sha512-hzJ3X4vlKT8FQ3Xc4M1szaFVjsc1ZydN+E4VQ91aXxfpjFn9G2wsMo1EFdAXNq/BUnN5dgqIOMP5zRYr3DTsAw==} + engines: {node: '>=14.0.0', npm: '>=7.0.0'} + dependencies: + err-code: 3.0.1 + protobufjs: 6.11.3 + dev: true + + /ipfs-utils/8.1.6: + resolution: {integrity: sha512-V/cwb6113DrDhrjDTWImA6+zmJbpdbUkxdxmEQO7it8ykV76bBmzU1ZXSM0QR0qxGy9VW8dkUlPAC2K10VgSmw==} + dependencies: + abort-controller: 3.0.0 + any-signal: 2.1.2 + buffer: 6.0.3 + electron-fetch: 1.9.1 + err-code: 3.0.1 + is-electron: 2.2.1 + iso-url: 1.2.1 + it-glob: 0.0.14 + it-to-stream: 1.0.0 + merge-options: 3.0.4 + nanoid: 3.3.4 + native-abort-controller: 1.0.4_abort-controller@3.0.0 + native-fetch: 3.0.0_hmwa7nplpltavckpkeobtw6pv4 + node-fetch: /@achingbrain/node-fetch/2.6.7 + react-native-fetch-api: 2.0.0 + stream-to-it: 0.2.4 + dev: true + + /ipfs-utils/9.0.14: + resolution: {integrity: sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + any-signal: 3.0.1 + browser-readablestream-to-it: 1.0.3 + buffer: 6.0.3 + electron-fetch: 1.9.1 + err-code: 3.0.1 + is-electron: 2.2.1 + iso-url: 1.2.1 + it-all: 1.0.6 + it-glob: 1.0.2 + it-to-stream: 1.0.0 + merge-options: 3.0.4 + nanoid: 3.3.4 + native-fetch: 3.0.0_node-fetch@2.6.9 + node-fetch: 2.6.9 + react-native-fetch-api: 3.0.0 + stream-to-it: 0.2.4 + transitivePeerDependencies: + - encoding + dev: true + + /ipld-block/0.11.1: + resolution: {integrity: sha512-sDqqLqD5qh4QzGq6ssxLHUCnH4emCf/8F8IwjQM2cjEEIEHMUj57XhNYgmGbemdYPznUhffxFGEHsruh5+HQRw==} + engines: {node: '>=6.0.0', npm: '>=3.0.0'} + dependencies: + cids: 1.1.9 + dev: true + + /ipld-dag-cbor/1.0.1: + resolution: {integrity: sha512-PZh8rHnRETX5bj60i73W2oq6BXoZnIvYCBDwIffYVJgxMr7BEVd5PycAARBiT6daORJ/4zbqEFR5CcrjeCtm/A==} + engines: {node: '>=6.0.0', npm: '>=3.0.0'} + deprecated: This module has been superseded by @ipld/dag-cbor and multiformats + dependencies: + borc: 3.0.0 + cids: 1.1.9 + interface-ipld-format: 1.0.1 + is-circular: 1.0.2 + multicodec: 3.2.1 + multihashing-async: 2.1.4 + uint8arrays: 2.1.10 + dev: true + + /ipld-dag-pb/0.22.3: + resolution: {integrity: sha512-dfG5C5OVAR4FEP7Al2CrHWvAyIM7UhAQrjnOYOIxXGQz5NlEj6wGX0XQf6Ru6or1na6upvV3NQfstapQG8X2rg==} + engines: {node: '>=6.0.0', npm: '>=3.0.0'} + deprecated: This module has been superseded by @ipld/dag-pb and multiformats + dependencies: + cids: 1.1.9 + interface-ipld-format: 1.0.1 + multicodec: 3.2.1 + multihashing-async: 2.1.4 + protobufjs: 6.11.3 + stable: 0.1.8 + uint8arrays: 2.1.10 + dev: true + + /ipld-raw/7.0.1: + resolution: {integrity: sha512-oaiy0Ot23NCnoBA7sLvPL9qFRC6JDB0IsdZL6rUeZJxzxabQuBLNGYXcqjQ8jlF0UPLEUSO+h8OJh2DZPzL2aQ==} + deprecated: This module has been superseded by the multiformats module + dependencies: + cids: 1.1.9 + interface-ipld-format: 1.0.1 + multicodec: 3.2.1 + multihashing-async: 2.1.4 + dev: true + + /is-arguments/1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-array-buffer/3.0.1: + resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-typed-array: 1.1.10 + dev: false + + /is-arrayish/0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + /is-bigint/1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: false + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: false + + /is-boolean-object/1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-buffer/2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: true + + /is-callable/1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: false + + /is-circular/1.0.2: + resolution: {integrity: sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA==} + dev: true + + /is-core-module/2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + dependencies: + has: 1.0.3 + + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-docker/2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: false + + /is-electron/2.2.1: + resolution: {integrity: sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw==} + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: false + + /is-fullwidth-code-point/3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-generator-fn/2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: false + + /is-ip/3.1.0: + resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==} + engines: {node: '>=8'} + dependencies: + ip-regex: 4.3.0 + dev: true + + /is-loopback-addr/1.0.1: + resolution: {integrity: sha512-DhWU/kqY7X2F6KrrVTu7mHlbd2Pbo4D1YkAzasBMjQs6lJAoefxaA6m6CpSX0K6pjt9D0b9PNFI5zduy/vzOYw==} + dev: true + + /is-loopback-addr/2.0.1: + resolution: {integrity: sha512-SEsepLbdWFb13B6U0tt6dYcUM0iK/U7XOC43N70Z4Qb88WpNtp+ospyNI9ddpqncs7Z7brAEsVBTQpaqSNntIw==} + dev: false + + /is-map/2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: false + + /is-module/1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: false + + /is-negative-zero/2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: false + + /is-number-object/1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-obj/1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + dev: false + + /is-observable/2.1.0: + resolution: {integrity: sha512-DailKdLb0WU+xX8K5w7VsJhapwHLZ9jjmazqCJq4X12CTgqq73TKnbRcnSLuXYPOoLQgV5IrD7ePiX/h1vnkBw==} + engines: {node: '>=8'} + + /is-path-inside/3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: false + + /is-plain-obj/2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + /is-plain-obj/3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + dev: false + + /is-potential-custom-element-name/1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-regexp/1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + dev: false + + /is-root/2.1.0: + resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} + engines: {node: '>=6'} + dev: false + + /is-set/2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: false + + /is-shared-array-buffer/1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: false + + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-symbol/1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + + /is-typed-array/1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: false + + /is-typedarray/1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + /is-weakmap/2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: false + + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: false + + /is-weakset/2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + dev: false + + /is-wsl/2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: false + + /isarray/1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false + + /isarray/2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: false + + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /iso-constants/0.1.2: + resolution: {integrity: sha512-OTCM5ZCQsHBCI4Wdu4tSxvDIkmDHd5EwJDps5mKqnQnWJSKlnwMs3EDZ4n3Fh1tmkWkDlyd2vCDbEYuPbyrUNQ==} + engines: {node: '>=10'} + requiresBuild: true + dev: true + + /iso-random-stream/2.0.2: + resolution: {integrity: sha512-yJvs+Nnelic1L2vH2JzWvvPQFA4r7kSTnpST/+LkAQjSz0hos2oqLD+qIVi9Qk38Hoe7mNDt3j0S27R58MVjLQ==} + engines: {node: '>=10'} + dependencies: + events: 3.3.0 + readable-stream: 3.6.0 + dev: true + + /iso-url/1.2.1: + resolution: {integrity: sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==} + engines: {node: '>=12'} + + /isstream/0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + dev: true + + /istanbul-lib-coverage/3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + + /istanbul-lib-instrument/5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.20.12 + '@babel/parser': 7.20.15 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /istanbul-lib-report/3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 + + /istanbul-lib-source-maps/4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + /istanbul-reports/3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + + /it-all/1.0.6: + resolution: {integrity: sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==} + dev: true + + /it-all/2.0.0: + resolution: {integrity: sha512-I/yi9ogTY59lFxtfsDSlI9w9QZtC/5KJt6g7CPPBJJh2xql2ZS7Ghcp9hoqDDbc4QfwQvtx8Loy0zlKQ8H5gFg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false + + /it-batched-bytes/1.0.0: + resolution: {integrity: sha512-OfztV9UHQmoZ6u5F4y+YOI1Z+5JAhkv3Gexc1a0B7ikcVXc3PFSKlEnHv79u+Yp/h23o3tsF9hHAhuqgHCYT2Q==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + it-stream-types: 1.0.5 + p-defer: 4.0.0 + uint8arraylist: 2.4.3 + dev: false + + /it-buffer/0.1.3: + resolution: {integrity: sha512-9a2/9SYVwG7bcn3tpRDR4bXbtuMLXnDK48KVC+GXiQg97ZOOdWz2nIITBsOQ19b+gj01Rw8RNwtiLDLI8P8oiQ==} + dependencies: + bl: 5.1.0 + buffer: 6.0.3 + dev: true + + /it-concat/2.0.0: + resolution: {integrity: sha512-jchrEB3fHlUENWkVJRmbFJ1A7gcjJDmwiolQsHhVC14DpUIbX8fgr3SOC7XNE5OoUUQNL6/RaMCPChkPemyQUw==} + dependencies: + bl: 5.1.0 + dev: true + + /it-drain/1.0.5: + resolution: {integrity: sha512-r/GjkiW1bZswC04TNmUnLxa6uovme7KKwPhc+cb1hHU65E3AByypHH6Pm91WHuvqfFsm+9ws0kPtDBV3/8vmIg==} + dev: true + + /it-drain/2.0.0: + resolution: {integrity: sha512-oa/5iyBtRs9UW486vPpyDTC0ee3rqx5qlrPI7txIUJcqqtiO5yVozEB6LQrl5ysQYv+P3y/dlKEqwVqlCV0SEA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false + + /it-filter/1.0.3: + resolution: {integrity: sha512-EI3HpzUrKjTH01miLHWmhNWy3Xpbx4OXMXltgrNprL5lDpF3giVpHIouFpr5l+evXw6aOfxhnt01BIB+4VQA+w==} + dev: true + + /it-filter/2.0.0: + resolution: {integrity: sha512-E68+zzoNNI7MxdH1T4lUTgwpCyEnymlH349Qg2mcvsqLmYRkaZLM4NfZZ0hUuH7/5DkWXubQSDOYH396va8mpg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false + + /it-first/1.0.7: + resolution: {integrity: sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g==} + + /it-first/2.0.0: + resolution: {integrity: sha512-fzZGzVf01exFyIZXNjkpSMFr1eW2+J1K0v018tYY26Dd4f/O3pWlBTdrOBfSQRZwtI8Pst6c7eKhYczWvFs6tA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false + + /it-foreach/0.1.1: + resolution: {integrity: sha512-ZLxL651N5w5SL/EIIcrXELgYrrkuEKj/TErG93C4lr6lNZziKsf338ljSG85PjQfu7Frg/1wESl5pLrPSFXI9g==} + dev: true + + /it-foreach/1.0.0: + resolution: {integrity: sha512-2j5HK1P6aMwEvgL6K5nzUwOk+81B/mjt05PxiSspFEKwJnqy1LfJYlLLS6llBoM+NdoUxf6EsBCHidFGmsXvhw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false + + /it-glob/0.0.14: + resolution: {integrity: sha512-TKKzs9CglbsihSpcwJPXN5DBUssu4akRzPlp8QJRCoLrKoaOpyY2V1qDlxx+UMivn0i114YyTd4AawWl7eqIdw==} + dependencies: + '@types/minimatch': 3.0.5 + minimatch: 3.1.2 + dev: true + + /it-glob/1.0.2: + resolution: {integrity: sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==} + dependencies: + '@types/minimatch': 3.0.5 + minimatch: 3.1.2 + dev: true + + /it-handshake/2.0.0: + resolution: {integrity: sha512-K4q+mz8aLlCK3vTjtgNdHC9c/JbuOATsfogarjMsLcBZC5vYfKbX3Gq3AWcCdjIsIrPqzTlhPKSxl64LJkrt2w==} + dependencies: + it-pushable: 1.4.2 + it-reader: 3.0.0 + p-defer: 3.0.0 + dev: true + + /it-handshake/4.1.2: + resolution: {integrity: sha512-Q/EvrB4KWIX5+/wO7edBK3l79Vh28+iWPGZvZSSqwAtOJnHZIvywC+JUbiXPRJVXfICBJRqFETtIJcvrqWL2Zw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + it-pushable: 3.1.2 + it-reader: 6.0.2 + it-stream-types: 1.0.5 + p-defer: 4.0.0 + uint8arraylist: 2.4.3 + dev: false + + /it-last/1.0.6: + resolution: {integrity: sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q==} + dev: true + + /it-length-prefixed/5.0.3: + resolution: {integrity: sha512-b+jDHLcnOnPDQN79ronmzF5jeBjdJsy0ce2O6i6X4J5tnaO8Fd146ZA/tMbzaLlKnTpXa0eKtofpYhumXGENeg==} + dependencies: + bl: 5.1.0 + buffer: 6.0.3 + varint: 6.0.0 + dev: true + + /it-length-prefixed/8.0.4: + resolution: {integrity: sha512-5OJ1lxH+IaqJB7lxe8IAIwt9UfSfsmjKJoAI/RO9djYoBDt1Jfy9PeVHUmOfqhqyu/4kJvWBFAJUaG1HhLQ12A==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + err-code: 3.0.1 + it-stream-types: 1.0.5 + uint8-varint: 1.0.4 + uint8arraylist: 2.4.3 + uint8arrays: 4.0.3 + dev: false + + /it-map/1.0.6: + resolution: {integrity: sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ==} + dev: true + + /it-map/2.0.0: + resolution: {integrity: sha512-mLgtk/NZaN7NZ06iLrMXCA6jjhtZO0vZT5Ocsp31H+nsGI18RSPVmUbFyA1sWx7q+g92J22Sixya7T2QSSAwfA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false + + /it-merge/1.0.4: + resolution: {integrity: sha512-DcL6GksTD2HQ7+5/q3JznXaLNfwjyG3/bObaF98da+oHfUiPmdo64oJlT9J8R8G5sJRU7thwaY5zxoAKCn7FJw==} + dependencies: + it-pushable: 1.4.2 + dev: true + + /it-merge/2.0.0: + resolution: {integrity: sha512-mH4bo/ZrMoU+Wlu7ZuYPNNh9oWZ/GvYbeXZ0zll97+Rp6H4jFu98iu6v9qqXDz//RUjdO9zGh8awzMfOElsjpA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + it-pushable: 3.1.2 + dev: false + + /it-pair/1.0.0: + resolution: {integrity: sha512-9raOiDu5OAuDOahtMtapKQDrQTxBfzlzrNcB6o7JARHkt+7Bb1dMkW/TpYdAjBJE77KH3e2zGzwpGUP9tXbLww==} + dependencies: + get-iterator: 1.0.2 + dev: true + + /it-pair/2.0.3: + resolution: {integrity: sha512-heCgsbYscFCQY5YvltlGT9tjgLGYo7NxPEoJyl55X4BD2KOXpTyuwOhPLWhi9Io0y6+4ZUXCkyaQXIB6Y8xhRw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + it-stream-types: 1.0.5 + p-defer: 4.0.0 + dev: false + + /it-pb-rpc/0.1.13: + resolution: {integrity: sha512-aZ4FNJsDgNepVVTmYXgXbQabIiOQyqYWUhdfovaHDcPSM5KjegwJihJEWMJjMyj+oLSKcZl0vmHgHxXWJ9/ufw==} + dependencies: + is-buffer: 2.0.5 + it-handshake: 2.0.0 + it-length-prefixed: 5.0.3 + dev: true + + /it-pb-stream/2.0.3: + resolution: {integrity: sha512-nuJzftDqk52gZmVD6T0sIKggXMhBkLSAFCD1OecxqGTVwk2wuDYY0ZHpcXZJuHty3kIuLY4xlWZrnDH9efV4YA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + it-handshake: 4.1.2 + it-length-prefixed: 8.0.4 + it-stream-types: 1.0.5 + uint8arraylist: 2.4.3 + dev: false + + /it-peekable/1.0.3: + resolution: {integrity: sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ==} + dev: true + + /it-pipe/1.1.0: + resolution: {integrity: sha512-lF0/3qTVeth13TOnHVs0BTFaziwQF7m5Gg+E6JV0BXcLKutC92YjSi7bASgkPOXaLEb+YvNZrPorGMBIJvZfxg==} + dev: true + + /it-pipe/2.0.5: + resolution: {integrity: sha512-y85nW1N6zoiTnkidr2EAyC+ZVzc7Mwt2p+xt2a2ooG1ThFakSpNw1Kxm+7F13Aivru96brJhjQVRQNU+w0yozw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + it-merge: 2.0.0 + it-pushable: 3.1.2 + it-stream-types: 1.0.5 + dev: false + + /it-pushable/1.4.2: + resolution: {integrity: sha512-vVPu0CGRsTI8eCfhMknA7KIBqqGFolbRx+1mbQ6XuZ7YCz995Qj7L4XUviwClFunisDq96FdxzF5FnAbw15afg==} + dependencies: + fast-fifo: 1.1.0 + dev: true + + /it-pushable/3.1.2: + resolution: {integrity: sha512-zU9FbeoGT0f+yobwm8agol2OTMXbq4ZSWLEi7hug6TEZx4qVhGhGyp31cayH04aBYsIoO2Nr5kgMjH/oWj2BJQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false + + /it-reader/3.0.0: + resolution: {integrity: sha512-NxR40odATeaBmSefn6Xn43DplYvn2KtEKQzn4jrTRuPYXMky5M4e+KQ7aTJh0k0vkytLyeenGO1I1GXlGm4laQ==} + dependencies: + bl: 5.1.0 + dev: true + + /it-reader/6.0.2: + resolution: {integrity: sha512-rQdVyml+r/2v8PQsPfJgf626tAkbA7NW1EF6zuucT2Ryy1U6YJtSuCJL8fKuDOyiR/mLzbfP0QQJlSeeoLph2A==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + it-stream-types: 1.0.5 + uint8arraylist: 2.4.3 + dev: false + + /it-sort/1.0.1: + resolution: {integrity: sha512-c+C48cP7XMMebB9irLrJs2EmpLILId8NYSojqAqN8etE8ienx0azBgaKvZHYH1DkerqIul0Fl2FqISu2BZgTEQ==} + dependencies: + it-all: 1.0.6 + dev: true + + /it-sort/2.0.0: + resolution: {integrity: sha512-yeAE97b5PEjCrWFUiNyR90eJdGslj8FB3cjT84rsc+mzx9lxPyR2zJkYB9ZOJoWE5MMebxqcQCLRT3OSlzo7Zg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + it-all: 2.0.0 + dev: false + + /it-stream-types/1.0.5: + resolution: {integrity: sha512-I88Ka1nHgfX62e5mi5LLL+oueqz7Ltg0bUdtsUKDe9SoUqbQPf2Mp5kxDTe9pNhHQGs4pvYPAINwuZ1HAt42TA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false + + /it-take/1.0.2: + resolution: {integrity: sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw==} + dev: true + + /it-take/2.0.0: + resolution: {integrity: sha512-lN3diSTomOvYBk2K0LHAgrQ52DlQfvq8tH/+HLAFpX8Q3JwBkr/BPJEi3Z3Lf8jMmN1KOCBXvt5sXa3eW9vUmg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false + + /it-tar/3.0.0: + resolution: {integrity: sha512-VhD1Hnx4IXDcQgYJnJgltkn+w5F8kiJaB46lqovh+YWfty2JGW7i40QQjWbSvcg1QfaU8is8AVX8xwx/Db9oOg==} + dependencies: + bl: 5.1.0 + buffer: 6.0.3 + iso-constants: 0.1.2 + it-concat: 2.0.0 + it-reader: 3.0.0 + p-defer: 3.0.0 + dev: true + + /it-to-stream/1.0.0: + resolution: {integrity: sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==} + dependencies: + buffer: 6.0.3 + fast-fifo: 1.1.0 + get-iterator: 1.0.2 + p-defer: 3.0.0 + p-fifo: 1.0.0 + readable-stream: 3.6.0 + dev: true + + /it-ws/4.0.0: + resolution: {integrity: sha512-XmTzpMkevc6rUboy73r0CCNhciMmL/Yxir9O6FujRwdrjysztqLBQ1Xkr4CpY2m7BVSCObKotaCWJeZ29lOXRA==} + dependencies: + buffer: 6.0.3 + event-iterator: 2.0.0 + iso-url: 1.2.1 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /it-ws/5.0.6: + resolution: {integrity: sha512-TEEJQaGtkxgP/nGVq8dq48nPT85Afu8kwwvtDFLj4rQLWRhZcb26RWdXLdn9qhXkWPiWbK5H7JWBW1Bebj/SuQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + event-iterator: 2.0.0 + iso-url: 1.2.1 + it-stream-types: 1.0.5 + uint8arrays: 4.0.3 + ws: 8.12.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /jake/10.8.5: + resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.4 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: false + + /jest-changed-files/27.5.1: + resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + execa: 5.1.1 + throat: 6.0.2 + + /jest-changed-files/28.1.3: + resolution: {integrity: sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + execa: 5.1.1 + p-limit: 3.1.0 + dev: true + + /jest-changed-files/29.4.2: + resolution: {integrity: sha512-Qdd+AXdqD16PQa+VsWJpxR3kN0JyOCX1iugQfx5nUgAsI4gwsKviXkpclxOK9ZnwaY2IQVHz+771eAvqeOlfuw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + p-limit: 3.1.0 + dev: true + + /jest-circus/27.5.1: + resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.12 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + expect: 27.5.1 + is-generator-fn: 2.1.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 + slash: 3.0.0 + stack-utils: 2.0.6 + throat: 6.0.2 + transitivePeerDependencies: + - supports-color + + /jest-circus/28.1.3: + resolution: {integrity: sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/environment': 28.1.3 + '@jest/expect': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 16.11.59 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + is-generator-fn: 2.1.0 + 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.6 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-circus/29.4.2: + resolution: {integrity: sha512-wW3ztp6a2P5c1yOc1Cfrt5ozJ7neWmqeXm/4SYiqcSriyisgq63bwFj1NuRdSR5iqS0CMEYwSZd89ZA47W9zUg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.4.2 + '@jest/expect': 29.4.2 + '@jest/test-result': 29.4.2 + '@jest/types': 29.4.2 + '@types/node': 18.13.0 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + is-generator-fn: 2.1.0 + jest-each: 29.4.2 + jest-matcher-utils: 29.4.2 + jest-message-util: 29.4.2 + jest-runtime: 29.4.2 + jest-snapshot: 29.4.2 + jest-util: 29.4.2 + p-limit: 3.1.0 + pretty-format: 29.4.2 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-cli/27.5.1: + resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + import-local: 3.1.0 + jest-config: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + prompts: 2.4.2 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + /jest-cli/27.5.1_ts-node@10.9.1: + resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 27.5.1_ts-node@10.9.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + import-local: 3.1.0 + jest-config: 27.5.1_ts-node@10.9.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + prompts: 2.4.2 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-cli/28.1.3_@types+node@16.11.59: + resolution: {integrity: sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + import-local: 3.1.0 + jest-config: 28.1.3_@types+node@16.11.59 + jest-util: 28.1.3 + jest-validate: 28.1.3 + prompts: 2.4.2 + yargs: 17.6.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /jest-cli/29.4.2: + resolution: {integrity: sha512-b+eGUtXq/K2v7SH3QcJvFvaUaCDS1/YAZBYz0m28Q/Ppyr+1qNaHmVYikOrbHVbZqYQs2IeI3p76uy6BWbXq8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.4.2 + '@jest/test-result': 29.4.2 + '@jest/types': 29.4.2 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + import-local: 3.1.0 + jest-config: 29.4.2 + jest-util: 29.4.2 + jest-validate: 29.4.2 + prompts: 2.4.2 + yargs: 17.6.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /jest-config/27.5.1: + resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + dependencies: + '@babel/core': 7.20.12 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1_@babel+core@7.20.12 + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.0 + glob: 7.2.3 + graceful-fs: 4.2.10 + 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 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 27.5.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + /jest-config/27.5.1_ts-node@10.9.1: + resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + dependencies: + '@babel/core': 7.20.12 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1_@babel+core@7.20.12 + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.0 + glob: 7.2.3 + graceful-fs: 4.2.10 + 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 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 27.5.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1_hjximzan7wcxvjcbhhc47yzr2e + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + + /jest-config/28.1.3_@types+node@16.11.59: + resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} + engines: {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 + dependencies: + '@babel/core': 7.20.12 + '@jest/test-sequencer': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 16.11.59 + babel-jest: 28.1.3_@babel+core@7.20.12 + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.0 + glob: 7.2.3 + graceful-fs: 4.2.10 + 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.5 + parse-json: 5.2.0 + pretty-format: 28.1.3 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-config/29.4.2: + resolution: {integrity: sha512-919CtnXic52YM0zW4C1QxjG6aNueX1kBGthuMtvFtRTAxhKfJmiXC9qwHmi6o2josjbDz8QlWyY55F1SIVmCWA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.20.12 + '@jest/test-sequencer': 29.4.2 + '@jest/types': 29.4.2 + babel-jest: 29.4.2_@babel+core@7.20.12 + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.0 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-circus: 29.4.2 + jest-environment-node: 29.4.2 + jest-get-type: 29.4.2 + jest-regex-util: 29.4.2 + jest-resolve: 29.4.2 + jest-runner: 29.4.2 + jest-util: 29.4.2 + jest-validate: 29.4.2 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.4.2 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-config/29.4.2_@types+node@18.13.0: + resolution: {integrity: sha512-919CtnXic52YM0zW4C1QxjG6aNueX1kBGthuMtvFtRTAxhKfJmiXC9qwHmi6o2josjbDz8QlWyY55F1SIVmCWA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.20.12 + '@jest/test-sequencer': 29.4.2 + '@jest/types': 29.4.2 + '@types/node': 18.13.0 + babel-jest: 29.4.2_@babel+core@7.20.12 + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.0 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-circus: 29.4.2 + jest-environment-node: 29.4.2 + jest-get-type: 29.4.2 + jest-regex-util: 29.4.2 + jest-resolve: 29.4.2 + jest-runner: 29.4.2 + jest-util: 29.4.2 + jest-validate: 29.4.2 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.4.2 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-diff/27.5.1: + resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + /jest-diff/28.1.3: + resolution: {integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 28.1.1 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + dev: true + + /jest-diff/29.4.2: + resolution: {integrity: sha512-EK8DSajVtnjx9sa1BkjZq3mqChm2Cd8rIzdXkQMA8e0wuXq53ypz6s5o5V8HRZkoEt2ywJ3eeNWFKWeYr8HK4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.4.2 + jest-get-type: 29.4.2 + pretty-format: 29.4.2 + dev: true + + /jest-docblock/27.5.1: + resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + detect-newline: 3.1.0 + + /jest-docblock/28.1.1: + resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-docblock/29.4.2: + resolution: {integrity: sha512-dV2JdahgClL34Y5vLrAHde3nF3yo2jKRH+GIYJuCpfqwEJZcikzeafVTGAjbOfKPG17ez9iWXwUYp7yefeCRag==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each/27.5.1: + resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + jest-get-type: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + + /jest-each/28.1.3: + resolution: {integrity: sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + chalk: 4.1.2 + jest-get-type: 28.0.2 + jest-util: 28.1.3 + pretty-format: 28.1.3 + dev: true + + /jest-each/29.4.2: + resolution: {integrity: sha512-trvKZb0JYiCndc55V1Yh0Luqi7AsAdDWpV+mKT/5vkpnnFQfuQACV72IoRV161aAr6kAVIBpmYzwhBzm34vQkA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.4.2 + chalk: 4.1.2 + jest-get-type: 29.4.2 + jest-util: 29.4.2 + pretty-format: 29.4.2 + dev: true + + /jest-environment-jsdom/27.5.1: + resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.12 + jest-mock: 27.5.1 + jest-util: 27.5.1 + jsdom: 16.7.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + /jest-environment-node/27.5.1: + resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.12 + jest-mock: 27.5.1 + jest-util: 27.5.1 + + /jest-environment-node/28.1.3: + resolution: {integrity: sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/environment': 28.1.3 + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 16.11.59 + jest-mock: 28.1.3 + jest-util: 28.1.3 + dev: true + + /jest-environment-node/29.4.2: + resolution: {integrity: sha512-MLPrqUcOnNBc8zTOfqBbxtoa8/Ee8tZ7UFW7hRDQSUT+NGsvS96wlbHGTf+EFAT9KC3VNb7fWEM6oyvmxtE/9w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.4.2 + '@jest/fake-timers': 29.4.2 + '@jest/types': 29.4.2 + '@types/node': 18.13.0 + jest-mock: 29.4.2 + jest-util: 29.4.2 + dev: true + + /jest-get-type/27.5.1: + resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + /jest-get-type/28.0.2: + resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + + /jest-get-type/29.4.2: + resolution: {integrity: sha512-vERN30V5i2N6lqlFu4ljdTqQAgrkTFMC9xaIIfOPYBw04pufjXRty5RuXBiB1d72tGbURa/UgoiHB90ruOSivg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-haste-map/27.5.1: + resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/graceful-fs': 4.1.6 + '@types/node': 16.18.12 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.10 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + + /jest-haste-map/28.1.3: + resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@types/graceful-fs': 4.1.6 + '@types/node': 16.11.59 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.10 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + jest-worker: 28.1.3 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /jest-haste-map/29.4.2: + resolution: {integrity: sha512-WkUgo26LN5UHPknkezrBzr7lUtV1OpGsp+NfXbBwHztsFruS3gz+AMTTBcEklvi8uPzpISzYjdKXYZQJXBnfvw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.4.2 + '@types/graceful-fs': 4.1.6 + '@types/node': 18.13.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.10 + jest-regex-util: 29.4.2 + jest-util: 29.4.2 + jest-worker: 29.4.2 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /jest-jasmine2/27.5.1: + resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + 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': 16.18.12 + chalk: 4.1.2 + co: 4.6.0 + expect: 27.5.1 + is-generator-fn: 2.1.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.2 + transitivePeerDependencies: + - supports-color + + /jest-leak-detector/27.5.1: + resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + /jest-leak-detector/28.1.3: + resolution: {integrity: sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + dev: true + + /jest-leak-detector/29.4.2: + resolution: {integrity: sha512-Wa62HuRJmWXtX9F00nUpWlrbaH5axeYCdyRsOs/+Rb1Vb6+qWTlB5rKwCCRKtorM7owNwKsyJ8NRDUcZ8ghYUA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.2 + pretty-format: 29.4.2 + dev: true + + /jest-matcher-utils/27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 + + /jest-matcher-utils/28.1.3: + resolution: {integrity: sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 28.1.3 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + dev: true + + /jest-matcher-utils/29.4.2: + resolution: {integrity: sha512-EZaAQy2je6Uqkrm6frnxBIdaWtSYFoR8SVb2sNLAtldswlR/29JAgx+hy67llT3+hXBaLB0zAm5UfeqerioZyg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.4.2 + jest-get-type: 29.4.2 + pretty-format: 29.4.2 + dev: true + + /jest-message-util/27.5.1: + resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@babel/code-frame': 7.18.6 + '@jest/types': 27.5.1 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 27.5.1 + slash: 3.0.0 + stack-utils: 2.0.6 + + /jest-message-util/28.1.3: + resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/code-frame': 7.18.6 + '@jest/types': 28.1.3 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 28.1.3 + slash: 3.0.0 + stack-utils: 2.0.6 + + /jest-message-util/29.4.2: + resolution: {integrity: sha512-SElcuN4s6PNKpOEtTInjOAA8QvItu0iugkXqhYyguRvQoXapg5gN+9RQxLAkakChZA7Y26j6yUCsFWN+hlKD6g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.18.6 + '@jest/types': 29.4.2 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 29.4.2 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock/27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 16.18.12 + + /jest-mock/28.1.3: + resolution: {integrity: sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@types/node': 16.11.59 + dev: true + + /jest-mock/29.4.2: + resolution: {integrity: sha512-x1FSd4Gvx2yIahdaIKoBjwji6XpboDunSJ95RpntGrYulI1ByuYQCKN/P7hvk09JB74IonU3IPLdkutEWYt++g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.4.2 + '@types/node': 18.13.0 + jest-util: 29.4.2 + dev: true + + /jest-pnp-resolver/1.2.3_jest-resolve@27.5.1: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 27.5.1 + + /jest-pnp-resolver/1.2.3_jest-resolve@28.1.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 28.1.3 + dev: true + + /jest-pnp-resolver/1.2.3_jest-resolve@29.4.2: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.4.2 + dev: true + + /jest-regex-util/27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + /jest-regex-util/28.0.2: + resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + + /jest-regex-util/29.4.2: + resolution: {integrity: sha512-XYZXOqUl1y31H6VLMrrUL1ZhXuiymLKPz0BO1kEeR5xER9Tv86RZrjTm74g5l9bPJQXA/hyLdaVPN/sdqfteig==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies/27.5.1: + resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + jest-regex-util: 27.5.1 + jest-snapshot: 27.5.1 + transitivePeerDependencies: + - supports-color + + /jest-resolve-dependencies/28.1.3: + resolution: {integrity: sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + jest-regex-util: 28.0.2 + jest-snapshot: 28.1.3 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve-dependencies/29.4.2: + resolution: {integrity: sha512-6pL4ptFw62rjdrPk7rRpzJYgcRqRZNsZTF1VxVTZMishbO6ObyWvX57yHOaNGgKoADtAHRFYdHQUEvYMJATbDg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.4.2 + jest-snapshot: 29.4.2 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve/27.5.1: + resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + jest-haste-map: 27.5.1 + jest-pnp-resolver: 1.2.3_jest-resolve@27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + resolve: 1.22.1 + resolve.exports: 1.1.1 + slash: 3.0.0 + + /jest-resolve/28.1.3: + resolution: {integrity: sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.10 + jest-haste-map: 28.1.3 + jest-pnp-resolver: 1.2.3_jest-resolve@28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 + resolve: 1.22.1 + resolve.exports: 1.1.1 + slash: 3.0.0 + dev: true + + /jest-resolve/29.4.2: + resolution: {integrity: sha512-RtKWW0mbR3I4UdkOrW7552IFGLYQ5AF9YrzD0FnIOkDu0rAMlA5/Y1+r7lhCAP4nXSBTaE7ueeqj6IOwZpgoqw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.10 + jest-haste-map: 29.4.2 + jest-pnp-resolver: 1.2.3_jest-resolve@29.4.2 + jest-util: 29.4.2 + jest-validate: 29.4.2 + resolve: 1.22.1 + resolve.exports: 2.0.0 + slash: 3.0.0 + dev: true + + /jest-runner/27.5.1: + resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + 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 + '@types/node': 16.18.12 + chalk: 4.1.2 + emittery: 0.8.1 + graceful-fs: 4.2.10 + 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.21 + throat: 6.0.2 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + /jest-runner/28.1.3: + resolution: {integrity: sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@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': 16.11.59 + chalk: 4.1.2 + emittery: 0.10.2 + graceful-fs: 4.2.10 + 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 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runner/29.4.2: + resolution: {integrity: sha512-wqwt0drm7JGjwdH+x1XgAl+TFPH7poowMguPQINYxaukCqlczAcNLJiK+OLxUxQAEWMdy+e6nHZlFHO5s7EuRg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.4.2 + '@jest/environment': 29.4.2 + '@jest/test-result': 29.4.2 + '@jest/transform': 29.4.2 + '@jest/types': 29.4.2 + '@types/node': 18.13.0 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.10 + jest-docblock: 29.4.2 + jest-environment-node: 29.4.2 + jest-haste-map: 29.4.2 + jest-leak-detector: 29.4.2 + jest-message-util: 29.4.2 + jest-resolve: 29.4.2 + jest-runtime: 29.4.2 + jest-util: 29.4.2 + jest-watcher: 29.4.2 + jest-worker: 29.4.2 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime/27.5.1: + resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + 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 + chalk: 4.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + execa: 5.1.1 + glob: 7.2.3 + graceful-fs: 4.2.10 + 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 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + /jest-runtime/28.1.3: + resolution: {integrity: sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + 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.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + execa: 5.1.1 + glob: 7.2.3 + graceful-fs: 4.2.10 + 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 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime/29.4.2: + resolution: {integrity: sha512-3fque9vtpLzGuxT9eZqhxi+9EylKK/ESfhClv4P7Y9sqJPs58LjVhTt8jaMp/pRO38agll1CkSu9z9ieTQeRrw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.4.2 + '@jest/fake-timers': 29.4.2 + '@jest/globals': 29.4.2 + '@jest/source-map': 29.4.2 + '@jest/test-result': 29.4.2 + '@jest/transform': 29.4.2 + '@jest/types': 29.4.2 + '@types/node': 18.13.0 + chalk: 4.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-haste-map: 29.4.2 + jest-message-util: 29.4.2 + jest-mock: 29.4.2 + jest-regex-util: 29.4.2 + jest-resolve: 29.4.2 + jest-snapshot: 29.4.2 + jest-util: 29.4.2 + semver: 7.3.8 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-serializer/27.5.1: + resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/node': 16.18.12 + graceful-fs: 4.2.10 + + /jest-snapshot/27.5.1: + resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@babel/core': 7.20.12 + '@babel/generator': 7.20.14 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__traverse': 7.18.3 + '@types/prettier': 2.7.2 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + chalk: 4.1.2 + expect: 27.5.1 + graceful-fs: 4.2.10 + 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 + natural-compare: 1.4.0 + pretty-format: 27.5.1 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + + /jest-snapshot/28.1.3: + resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/core': 7.20.12 + '@babel/generator': 7.20.14 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 + '@jest/expect-utils': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@types/babel__traverse': 7.18.3 + '@types/prettier': 2.7.2 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + chalk: 4.1.2 + expect: 28.1.3 + graceful-fs: 4.2.10 + 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: 28.1.3 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot/29.4.2: + resolution: {integrity: sha512-PdfubrSNN5KwroyMH158R23tWcAXJyx4pvSvWls1dHoLCaUhGul9rsL3uVjtqzRpkxlkMavQjGuWG1newPgmkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.20.12 + '@babel/generator': 7.20.14 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 + '@jest/expect-utils': 29.4.2 + '@jest/transform': 29.4.2 + '@jest/types': 29.4.2 + '@types/babel__traverse': 7.18.3 + '@types/prettier': 2.7.2 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 + chalk: 4.1.2 + expect: 29.4.2 + graceful-fs: 4.2.10 + jest-diff: 29.4.2 + jest-get-type: 29.4.2 + jest-haste-map: 29.4.2 + jest-matcher-utils: 29.4.2 + jest-message-util: 29.4.2 + jest-util: 29.4.2 + natural-compare: 1.4.0 + pretty-format: 29.4.2 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util/27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 16.18.12 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + + /jest-util/28.1.3: + resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@types/node': 16.11.59 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + + /jest-util/29.4.2: + resolution: {integrity: sha512-wKnm6XpJgzMUSRFB7YF48CuwdzuDIHenVuoIb1PLuJ6F+uErZsuDkU+EiExkChf6473XcawBrSfDSnXl+/YG4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.4.2 + '@types/node': 18.13.0 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + dev: true + + /jest-validate/27.5.1: + resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 27.5.1 + leven: 3.1.0 + pretty-format: 27.5.1 + + /jest-validate/28.1.3: + resolution: {integrity: sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 28.0.2 + leven: 3.1.0 + pretty-format: 28.1.3 + dev: true + + /jest-validate/29.4.2: + resolution: {integrity: sha512-tto7YKGPJyFbhcKhIDFq8B5od+eVWD/ySZ9Tvcp/NGCvYA4RQbuzhbwYWtIjMT5W5zA2W0eBJwu4HVw34d5G6Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.4.2 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.4.2 + leven: 3.1.0 + pretty-format: 29.4.2 + dev: true + + /jest-watch-typeahead/1.1.0_jest@27.5.1: + resolution: {integrity: sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + jest: ^27.0.0 || ^28.0.0 + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest: 27.5.1 + jest-regex-util: 28.0.2 + jest-watcher: 28.1.3 + slash: 4.0.0 + string-length: 5.0.1 + strip-ansi: 7.0.1 + dev: false + + /jest-watcher/27.5.1: + resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 16.18.12 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest-util: 27.5.1 + string-length: 4.0.2 + + /jest-watcher/28.1.3: + resolution: {integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 16.18.12 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.10.2 + jest-util: 28.1.3 + string-length: 4.0.2 + + /jest-watcher/29.4.2: + resolution: {integrity: sha512-onddLujSoGiMJt+tKutehIidABa175i/Ays+QvKxCqBwp7fvxP3ZhKsrIdOodt71dKxqk4sc0LN41mWLGIK44w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.4.2 + '@jest/types': 29.4.2 + '@types/node': 18.13.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.4.2 + string-length: 4.0.2 + dev: true + + /jest-worker/26.6.2: + resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 16.18.12 + merge-stream: 2.0.0 + supports-color: 7.2.0 + dev: false + + /jest-worker/27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 16.18.12 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + /jest-worker/28.1.3: + resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@types/node': 16.18.12 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + /jest-worker/29.4.2: + resolution: {integrity: sha512-VIuZA2hZmFyRbchsUCHEehoSf2HEl0YVF8SDJqtPnKorAaBuh42V8QsLnde0XP5F6TyCynGPEGgBOn3Fc+wZGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 18.13.0 + jest-util: 29.4.2 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest/27.5.1: + resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 27.5.1 + import-local: 3.1.0 + jest-cli: 27.5.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + /jest/27.5.1_ts-node@10.9.1: + resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 27.5.1_ts-node@10.9.1 + import-local: 3.1.0 + jest-cli: 27.5.1_ts-node@10.9.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest/28.1.0_@types+node@16.11.59: + resolution: {integrity: sha512-TZR+tHxopPhzw3c3560IJXZWLNHgpcz1Zh0w5A65vynLGNcg/5pZ+VildAd7+XGOu6jd58XMY/HNn0IkZIXVXg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 28.1.3 + import-local: 3.1.0 + jest-cli: 28.1.3_@types+node@16.11.59 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /jest/29.4.1: + resolution: {integrity: sha512-cknimw7gAXPDOmj0QqztlxVtBVCw2lYY9CeIE5N6kD+kET1H4H79HSNISJmijb1HF+qk+G+ploJgiDi5k/fRlg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.4.2 + '@jest/types': 29.4.2 + import-local: 3.1.0 + jest-cli: 29.4.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /js-base64/3.7.2: + resolution: {integrity: sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==} + + /js-base64/3.7.5: + resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} + dev: true + + /js-sdsl/4.3.0: + resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} + dev: false + + /js-sha3/0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + dev: true + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml/3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: false + + /jsbn/0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + dev: true + + /jsbn/1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + /jsdom/16.7.0: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.8.2 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.4.3 + domexception: 2.0.1 + escodegen: 2.0.0 + form-data: 3.0.1 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.2 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.2 + 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.7.0 + ws: 7.5.9 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + /jsesc/0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: false + + /jsesc/2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + /json-parse-even-better-errors/2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + /json-schema-traverse/1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: false + + /json-schema/0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: false + + /json-stringify-safe/5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: true + + /json-text-sequence/0.3.0: + resolution: {integrity: sha512-7khKIYPKwXQem4lWXfpIN/FEnhztCeRPSxH4qm3fVlqulwujrRDD54xAwDDn/qVKpFtV550+QAkcWJcufzqQuA==} + engines: {node: '>=10.18.0'} + dependencies: + '@sovpro/delimited-stream': 1.1.0 + dev: true + + /json5/1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: false + + /json5/2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + /jsonfile/6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.10 + dev: false + + /jsonpointer/5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + dev: false + + /jsprim/1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + dev: true + + /jsx-ast-utils/3.3.3: + resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.6 + object.assign: 4.1.4 + dev: false + + /keypair/1.0.4: + resolution: {integrity: sha512-zwhgOhhniaL7oxMgUMKKw5219PWWABMO+dgMnzJOQ2/5L3XJtTJGhW2PEXlxXj9zaccdReZJZ83+4NPhVfNVDg==} + dev: true + + /kind-of/6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: false + + /kleur/3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + /klona/2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + dev: false + + /language-subtag-registry/0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: false + + /language-tags/1.0.5: + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + dependencies: + language-subtag-registry: 0.3.22 + dev: false + + /leven/3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + /levn/0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + + /levn/0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: false + + /libp2p-crypto/0.19.7: + resolution: {integrity: sha512-Qb5o/3WFKF2j6mYSt4UBPyi2kbKl3jYV0podBJoJCw70DlpM5Xc+oh3fFY9ToSunu8aSQQ5GY8nutjXgX/uGRA==} + engines: {node: '>=12.0.0'} + dependencies: + err-code: 3.0.1 + is-typedarray: 1.0.0 + iso-random-stream: 2.0.2 + keypair: 1.0.4 + multiformats: 9.9.0 + node-forge: 0.10.0 + pem-jwk: 2.0.0 + protobufjs: 6.11.3 + secp256k1: 4.0.3 + uint8arrays: 3.1.1 + ursa-optional: 0.10.2 + dev: true + + /libp2p-crypto/0.20.0: + resolution: {integrity: sha512-WgIW9rYcWaO/5j2T6NW3R6Q46yvp2ZfFErqRMbi4/pOTL3T7+OROYpL/1iWVksWkXyurU/t2qFsIijWMxR5C4Q==} + engines: {node: '>=12.0.0'} + dependencies: + err-code: 3.0.1 + iso-random-stream: 2.0.2 + keypair: 1.0.4 + multiformats: 9.9.0 + noble-ed25519: 1.2.6 + noble-secp256k1: 1.2.14 + node-forge: 0.10.0 + pem-jwk: 2.0.0 + protobufjs: 6.11.3 + uint8arrays: 3.1.1 + ursa-optional: 0.10.2 + dev: true + + /libp2p-crypto/0.21.2: + resolution: {integrity: sha512-EXFrhSpiHtJ+/L8xXDvQNK5VjUMG51u878jzZcaT5XhuN/zFg6PWJFnl/qB2Y2j7eMWnvCRP7Kp+ua2H36cG4g==} + engines: {node: '>=12.0.0'} + dependencies: + '@noble/ed25519': 1.7.3 + '@noble/secp256k1': 1.7.1 + err-code: 3.0.1 + iso-random-stream: 2.0.2 + multiformats: 9.9.0 + node-forge: 1.3.1 + protobufjs: 6.11.3 + uint8arrays: 3.1.1 + dev: true + + /libp2p-interfaces/4.0.6_node-fetch@3.3.0: + resolution: {integrity: sha512-3KjzNEIWhi+VoOamLvgKKUE/xqwxSw/JYqsBnfMhAWVRvRtosROtVT03wci2XbuuowCYw+/hEX1xKJIR1w5n0A==} + dependencies: + abortable-iterator: 3.0.2 + debug: 4.3.4 + err-code: 3.0.1 + it-length-prefixed: 5.0.3 + it-pipe: 1.1.0 + it-pushable: 1.4.2 + libp2p-crypto: 0.21.2 + multiaddr: 10.0.1_node-fetch@3.3.0 + multiformats: 9.9.0 + p-queue: 6.6.2 + peer-id: 0.16.0 + protobufjs: 6.11.3 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - node-fetch + - supports-color + dev: true + + /libp2p-mplex/0.10.7: + resolution: {integrity: sha512-21VV0DZWuOsHgitWy1GZD1M/kki3a/hVoAJ5QC48p01JNSK5W8gxRiZtq7cCGJ/xNpbQxvMlMtS5eq8CFRlysg==} + dependencies: + abortable-iterator: 3.0.2 + bl: 5.1.0 + debug: 4.3.4 + err-code: 3.0.1 + it-pipe: 1.1.0 + it-pushable: 1.4.2 + varint: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /libp2p-utils/0.4.1_node-fetch@3.3.0: + resolution: {integrity: sha512-kq/US2unamiyY+YwP47dO1uqpAdcbdYI2Fzi9JIEhjfPBaD1MR/uyQ/YP7ABthl3EaxAjIQYd1TVp85d6QKAtQ==} + dependencies: + abortable-iterator: 3.0.2 + debug: 4.3.4 + err-code: 3.0.1 + ip-address: 8.1.0 + is-loopback-addr: 1.0.1 + multiaddr: 10.0.1_node-fetch@3.3.0 + private-ip: 2.3.4 + transitivePeerDependencies: + - node-fetch + - supports-color + dev: true + + /libp2p-websockets/0.16.2_node-fetch@3.3.0: + resolution: {integrity: sha512-QGfo8jX1Ks16yi8C67CCyMW7k9cfCYiQ0lzKVJBud0fV3ymbMO2L8gzU6iXUUZTHILo8ka26zKhwQ4lmUMI+nA==} + dependencies: + abortable-iterator: 3.0.2 + class-is: 1.1.0 + debug: 4.3.4 + err-code: 3.0.1 + ipfs-utils: 9.0.14 + it-ws: 4.0.0 + libp2p-utils: 0.4.1_node-fetch@3.3.0 + mafmt: 10.0.0_node-fetch@3.3.0 + multiaddr: 10.0.1_node-fetch@3.3.0 + multiaddr-to-uri: 8.0.0_node-fetch@3.3.0 + p-defer: 3.0.0 + p-timeout: 4.1.0 + transitivePeerDependencies: + - bufferutil + - encoding + - node-fetch + - supports-color + - utf-8-validate + dev: true + + /libp2p/0.36.2_node-fetch@3.3.0: + resolution: {integrity: sha512-UpNYBMQVivMu56zoibdGitopv39uBBAybIBOEGWmFy/I2NnTVGUutLPrxo47AuN2kntYgo/TNJfW+PpswUgSaw==} + engines: {node: '>=15.0.0'} + dependencies: + '@vascosantos/moving-average': 1.1.0 + abortable-iterator: 3.0.2 + aggregate-error: 3.1.0 + any-signal: 3.0.1 + bignumber.js: 9.1.1 + class-is: 1.1.0 + datastore-core: 7.0.3 + debug: 4.3.4 + err-code: 3.0.1 + es6-promisify: 7.0.0 + events: 3.3.0 + hashlru: 2.3.0 + interface-datastore: 6.1.1 + it-all: 1.0.6 + it-buffer: 0.1.3 + it-drain: 1.0.5 + it-filter: 1.0.3 + it-first: 1.0.7 + it-foreach: 0.1.1 + it-handshake: 2.0.0 + it-length-prefixed: 5.0.3 + it-map: 1.0.6 + it-merge: 1.0.4 + it-pipe: 1.1.0 + it-sort: 1.0.1 + it-take: 1.0.2 + libp2p-crypto: 0.21.2 + libp2p-interfaces: 4.0.6_node-fetch@3.3.0 + libp2p-utils: 0.4.1_node-fetch@3.3.0 + mafmt: 10.0.0_node-fetch@3.3.0 + merge-options: 3.0.4 + mortice: 2.0.1 + multiaddr: 10.0.1_node-fetch@3.3.0 + multiformats: 9.9.0 + multistream-select: 3.0.2 + mutable-proxy: 1.0.0 + nat-api: 0.3.1 + node-forge: 1.3.1 + p-any: 3.0.0 + p-fifo: 1.0.0 + p-retry: 4.6.2 + p-settle: 4.1.1 + peer-id: 0.16.0 + private-ip: 2.3.4 + protobufjs: 6.11.3 + retimer: 3.0.0 + sanitize-filename: 1.6.3 + set-delayed-interval: 1.0.0 + streaming-iterables: 6.2.0 + timeout-abort-controller: 3.0.0 + uint8arrays: 3.1.1 + varint: 6.0.0 + wherearewe: 1.0.2 + xsalsa20: 1.2.0 + transitivePeerDependencies: + - node-fetch + - supports-color + dev: true + + /libp2p/0.42.2: + resolution: {integrity: sha512-arTOCJEEmAFw5HjlXdULVAFs7Y/dWZmgX/qN4SzuxtSkB0pa+fqn/DIbIfpBi2BuY+QozvnARPF1xJtSdqfqJQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + '@achingbrain/nat-port-mapper': 1.0.7 + '@libp2p/crypto': 1.0.8_uint8arraylist@2.4.3 + '@libp2p/interface-address-manager': 2.0.4 + '@libp2p/interface-connection': 3.0.8 + '@libp2p/interface-connection-encrypter': 3.0.6 + '@libp2p/interface-connection-manager': 1.3.7 + '@libp2p/interface-content-routing': 2.0.1 + '@libp2p/interface-dht': 2.0.1 + '@libp2p/interface-libp2p': 1.1.1 + '@libp2p/interface-metrics': 4.0.5 + '@libp2p/interface-peer-discovery': 1.0.5 + '@libp2p/interface-peer-id': 2.0.1 + '@libp2p/interface-peer-info': 1.0.8 + '@libp2p/interface-peer-routing': 1.0.7 + '@libp2p/interface-peer-store': 1.2.8 + '@libp2p/interface-pubsub': 3.0.6 + '@libp2p/interface-registrar': 2.0.8 + '@libp2p/interface-stream-muxer': 3.0.5 + '@libp2p/interface-transport': 2.1.1 + '@libp2p/interfaces': 3.3.1 + '@libp2p/logger': 2.0.5 + '@libp2p/multistream-select': 3.1.2 + '@libp2p/peer-collections': 3.0.0 + '@libp2p/peer-id': 2.0.1 + '@libp2p/peer-id-factory': 2.0.1 + '@libp2p/peer-record': 5.0.0 + '@libp2p/peer-store': 6.0.0 + '@libp2p/tracked-map': 3.0.2 + '@libp2p/utils': 3.0.4 + '@multiformats/mafmt': 11.0.3 + '@multiformats/multiaddr': 11.3.0 + abortable-iterator: 4.0.2 + any-signal: 3.0.1 + datastore-core: 8.0.4 + err-code: 3.0.1 + events: 3.3.0 + hashlru: 2.3.0 + interface-datastore: 7.0.4 + it-all: 2.0.0 + it-drain: 2.0.0 + it-filter: 2.0.0 + it-first: 2.0.0 + it-foreach: 1.0.0 + it-handshake: 4.1.2 + it-length-prefixed: 8.0.4 + it-map: 2.0.0 + it-merge: 2.0.0 + it-pair: 2.0.3 + it-pipe: 2.0.5 + it-sort: 2.0.0 + it-stream-types: 1.0.5 + merge-options: 3.0.4 + multiformats: 11.0.1 + node-forge: 1.3.1 + p-fifo: 1.0.0 + p-retry: 5.1.2 + p-settle: 5.1.0 + private-ip: 3.0.0 + protons-runtime: 4.0.2_uint8arraylist@2.4.3 + rate-limiter-flexible: 2.4.1 + retimer: 3.0.0 + sanitize-filename: 1.6.3 + set-delayed-interval: 1.0.0 + timeout-abort-controller: 3.0.0 + uint8arraylist: 2.4.3 + uint8arrays: 4.0.3 + wherearewe: 2.0.1 + xsalsa20: 1.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /lilconfig/2.0.6: + resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} + engines: {node: '>=10'} + dev: false + + /lines-and-columns/1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /loader-runner/4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: false + + /loader-utils/2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + dev: false + + /loader-utils/3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} + dev: false + + /locate-path/3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: false + + /locate-path/5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + + /locate-path/6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: false + + /lodash.debounce/4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: false + + /lodash.memoize/4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: false + + /lodash.sortby/4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: false + + /lodash.uniq/4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: false + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /loglevel/1.8.0: + resolution: {integrity: sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==} + engines: {node: '>= 0.6.0'} + dev: true + + /loglevel/1.8.1: + resolution: {integrity: sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==} + engines: {node: '>= 0.6.0'} + + /long/4.0.0: + resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + dev: true + + /long/5.2.1: + resolution: {integrity: sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==} + dev: false + + /longbits/1.1.0: + resolution: {integrity: sha512-22U2exkkYy7sr7nuQJYx2NEZ2kEMsC69+BxM5h8auLvkVIJa+LwAB5mFIExnuW2dFuYXFOWsFMKXjaWiq/htYQ==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + byte-access: 1.0.1 + uint8arraylist: 2.4.3 + dev: false + + /loose-envify/1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: false + + /lower-case/2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.5.0 + dev: false + + /lru-cache/5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /lz-string/1.4.4: + resolution: {integrity: sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==} + hasBin: true + dev: false + + /mafmt/10.0.0_node-fetch@3.3.0: + resolution: {integrity: sha512-K1bziJOXcnepfztu+2Xy9FLKVLaFMDuspmiyJIYRxnO0WOxFSV7XKSdMxMrVZxcvg1+YjlTIvSGTImUHU2k4Aw==} + dependencies: + multiaddr: 10.0.1_node-fetch@3.3.0 + transitivePeerDependencies: + - node-fetch + - supports-color + dev: true + + /magic-string/0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + dev: false + + /magic-string/0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /make-dir/3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.0 + + /make-error/1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /makeerror/1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + + /mdn-data/2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: false + + /mdn-data/2.0.4: + resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} + dev: false + + /media-typer/0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: false + + /memfs/3.0.4: + resolution: {integrity: sha512-OcZEzwX9E5AoY8SXjuAvw0DbIAYwUzV/I236I8Pqvrlv7sL/Y0E9aRCon05DhaV8pg1b32uxj76RgW0s5xjHBA==} + dependencies: + fast-extend: 1.0.2 + fs-monkey: 0.3.3 + + /memfs/3.4.13: + resolution: {integrity: sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.3 + dev: false + + /merge-descriptors/1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: false + + /merge-options/3.0.4: + resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} + engines: {node: '>=10'} + dependencies: + is-plain-obj: 2.1.0 + + /merge-stream/2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: false + + /methods/1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: false + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mime-db/1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types/2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /mime/1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + /mimic-fn/2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + /min-indent/1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: false + + /mini-css-extract-plugin/2.7.2_webpack@5.75.0: + resolution: {integrity: sha512-EdlUizq13o0Pd+uCp+WO/JpkLvHRVGt97RqfeGhXqAcorYo1ypJSpkV+WDT0vY/kmh/p7wRdJNJtuyK540PXDw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + schema-utils: 4.0.0 + webpack: 5.75.0 + dev: false + + /minimalistic-assert/1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + /minimalistic-crypto-utils/1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch/5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimist/1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /mkdirp/0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + + /mortice/2.0.1: + resolution: {integrity: sha512-9gsXmjq+5LZmXDIoyC/crf2i/7CUwDGSBEwSEsr1i/WfKmJ6DVt38B5kg6BE/WF/1/yfGJYiB1Wyiu423iI3nQ==} + dependencies: + nanoid: 3.3.4 + observable-webworkers: 1.0.0 + p-queue: 6.6.2 + promise-timeout: 1.3.0 + dev: true + + /mortice/3.0.1: + resolution: {integrity: sha512-eyDUsl1nCR9+JtNksKnaESLP9MgAXCA4w1LTtsmOSQNsThnv++f36rrBu5fC/fdGIwTJZmbiaR/QewptH93pYA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + nanoid: 4.0.1 + observable-webworkers: 2.0.1 + p-queue: 7.3.4 + p-timeout: 6.1.1 + dev: false + + /ms/2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /multiaddr-to-uri/7.0.0_node-fetch@3.3.0: + resolution: {integrity: sha512-VbscDpLcbV0m25tJqfnZSfbjVUuNlPa4BbD5l/7me1t0lc3SWI0XAoO5E/PNJF0e1qUlbdq7yjVFEQjUT+9r0g==} + deprecated: This module is deprecated, please upgrade to @multiformats/multiaddr-to-uri + dependencies: + multiaddr: 9.0.2_node-fetch@3.3.0 + transitivePeerDependencies: + - node-fetch + - supports-color + dev: true + + /multiaddr-to-uri/8.0.0_node-fetch@3.3.0: + resolution: {integrity: sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA==} + deprecated: This module is deprecated, please upgrade to @multiformats/multiaddr-to-uri + dependencies: + multiaddr: 10.0.1_node-fetch@3.3.0 + transitivePeerDependencies: + - node-fetch + - supports-color + dev: true + + /multiaddr/10.0.1_node-fetch@3.3.0: + resolution: {integrity: sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg==} + deprecated: This module is deprecated, please upgrade to @multiformats/multiaddr + dependencies: + dns-over-http-resolver: 1.2.3_node-fetch@3.3.0 + err-code: 3.0.1 + is-ip: 3.1.0 + multiformats: 9.9.0 + uint8arrays: 3.1.1 + varint: 6.0.0 + transitivePeerDependencies: + - node-fetch + - supports-color + dev: true + + /multiaddr/9.0.2_node-fetch@3.3.0: + resolution: {integrity: sha512-YFaEb9t4yXSbaGksSEdg+Kn2U02s7w4wXUgyEMQmPxFJj7CfVHY10WOsScAX/rK6Soa15S1zXYadqH9TtlVreQ==} + deprecated: This module is deprecated, please upgrade to @multiformats/multiaddr + dependencies: + cids: 1.1.9 + dns-over-http-resolver: 1.2.3_node-fetch@3.3.0 + err-code: 3.0.1 + is-ip: 3.1.0 + multibase: 4.0.6 + uint8arrays: 2.1.10 + varint: 6.0.0 + transitivePeerDependencies: + - node-fetch + - supports-color + dev: true + + /multibase/4.0.6: + resolution: {integrity: sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==} + engines: {node: '>=12.0.0', npm: '>=6.0.0'} + deprecated: This module has been superseded by the multiformats module + dependencies: + '@multiformats/base-x': 4.0.1 + dev: true + + /multicast-dns/7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + dependencies: + dns-packet: 5.4.0 + thunky: 1.1.0 + dev: false + + /multicodec/3.2.1: + resolution: {integrity: sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==} + deprecated: This module has been superseded by the multiformats module + dependencies: + uint8arrays: 3.1.1 + varint: 6.0.0 + dev: true + + /multiformats/10.0.3: + resolution: {integrity: sha512-K2yGSmstS/oEmYiEIieHb53jJCaqp4ERPDQAYrm5sV3UUrVDZeshJQCK6GHAKyIGufU1vAcbS0PdAAZmC7Tzcw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false + + /multiformats/11.0.1: + resolution: {integrity: sha512-atWruyH34YiknSdL5yeIir00EDlJRpHzELYQxG7Iy29eCyL+VrZHpPrX5yqlik3jnuqpLpRKVZ0SGVb9UzKaSA==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + /multiformats/9.6.5: + resolution: {integrity: sha512-vMwf/FUO+qAPvl3vlSZEgEVFY/AxeZq5yg761ScF3CZsXgmTi/HGkicUiNN0CI4PW8FiY2P0OLklOcmQjdQJhw==} + dev: true + + /multiformats/9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + dev: true + + /multihashes/4.0.3: + resolution: {integrity: sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==} + engines: {node: '>=12.0.0', npm: '>=6.0.0'} + dependencies: + multibase: 4.0.6 + uint8arrays: 3.1.1 + varint: 5.0.2 + dev: true + + /multihashing-async/2.1.4: + resolution: {integrity: sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg==} + engines: {node: '>=12.0.0', npm: '>=6.0.0'} + dependencies: + blakejs: 1.2.1 + err-code: 3.0.1 + js-sha3: 0.8.0 + multihashes: 4.0.3 + murmurhash3js-revisited: 3.0.0 + uint8arrays: 3.1.1 + dev: true + + /multistream-select/3.0.2: + resolution: {integrity: sha512-ICGA8DAviZj6Xo1NkaRV3J38M+tFDoWiGtO1ksluyMnskAsdGjAzocg806OzpQPivNGWWboX3CrFT2Tk4UdYXA==} + dependencies: + abortable-iterator: 3.0.2 + bl: 5.1.0 + debug: 4.3.4 + err-code: 3.0.1 + it-first: 1.0.7 + it-handshake: 2.0.0 + it-length-prefixed: 5.0.3 + it-pipe: 1.1.0 + it-reader: 3.0.0 + p-defer: 3.0.0 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /murmurhash3js-revisited/3.0.0: + resolution: {integrity: sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==} + engines: {node: '>=8.0.0'} + dev: true + + /mutable-proxy/1.0.0: + resolution: {integrity: sha512-4OvNRr1DJpy2QuDUV74m+BWZ//n4gG4bmd21MzDSPqHEidIDWqwyOjcadU1LBMO3vXYGurVKjfBrxrSQIHFu9A==} + engines: {node: '>=6.X.X', npm: '>=3.X.X'} + dev: true + + /nan/2.17.0: + resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} + dev: true + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /nanoid/4.0.1: + resolution: {integrity: sha512-udKGtCCUafD3nQtJg9wBhRP3KMbPglUsgV5JVsXhvyBs/oefqb4sqMEhKBBgqZncYowu58p1prsZQBYvAj/Gww==} + engines: {node: ^14 || ^16 || >=18} + hasBin: true + dev: false + + /nat-api/0.3.1: + resolution: {integrity: sha512-5cyLugEkXnKSKSvVjKjxxPMLDnkwY3boZLbATWwiGJ4T/3UvIpiQmzb2RqtxxEFcVo/7PwsHPGN0MosopONO8Q==} + engines: {node: '>=10.0.0'} + dependencies: + async: 3.2.4 + debug: 4.3.4 + default-gateway: 6.0.3 + request: 2.88.2 + unordered-array-remove: 1.0.2 + xml2js: 0.1.14 + transitivePeerDependencies: + - supports-color + dev: true + + /native-abort-controller/1.0.4_abort-controller@3.0.0: + resolution: {integrity: sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ==} + peerDependencies: + abort-controller: '*' + dependencies: + abort-controller: 3.0.0 + dev: true + + /native-fetch/3.0.0_hmwa7nplpltavckpkeobtw6pv4: + resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} + peerDependencies: + node-fetch: '*' + dependencies: + node-fetch: /@achingbrain/node-fetch/2.6.7 + dev: true + + /native-fetch/3.0.0_node-fetch@2.6.9: + resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} + peerDependencies: + node-fetch: '*' + dependencies: + node-fetch: 2.6.9 + dev: true + + /native-fetch/3.0.0_node-fetch@3.3.0: + resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} + peerDependencies: + node-fetch: '*' + dependencies: + node-fetch: 3.3.0 + dev: true + + /native-fetch/4.0.2_undici@5.18.0: + resolution: {integrity: sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg==} + peerDependencies: + undici: '*' + dependencies: + undici: 5.18.0 + + /natural-compare-lite/1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: false + + /natural-compare/1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + /negotiator/0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: false + + /neo-async/2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: false + + /netmask/2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + + /no-case/3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.5.0 + dev: false + + /noble-ed25519/1.2.6: + resolution: {integrity: sha512-zfnWqg9FVMp8CnzUpAjbt1nDXpDjCvxYiCXdnW1mY8zQHw/6twUlkFm14VPdojVzc0kcd+i9zT79+26GcNbsuQ==} + deprecated: Switch to namespaced @noble/ed25519 for security and feature updates + dev: true + + /noble-secp256k1/1.2.14: + resolution: {integrity: sha512-GSCXyoZBUaaPwVWdYncMEmzlSUjF9J/YeEHpklYJCyg8wPuJP3NzDx0BkiwArzINkdX2HJHvUJhL6vVWPOQQcg==} + deprecated: Switch to namespaced @noble/secp256k1 for security and feature updates + dev: true + + /node-addon-api/2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + dev: true + + /node-domexception/1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: true + + /node-fetch/2.6.9: + resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-fetch/3.3.0: + resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: true + + /node-forge/0.10.0: + resolution: {integrity: sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==} + engines: {node: '>= 6.0.0'} + dev: true + + /node-forge/1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + /node-gyp-build/4.6.0: + resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} + hasBin: true + dev: true + + /node-int64/0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + /node-releases/2.0.10: + resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + /normalize-range/0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: false + + /normalize-url/6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: false + + /npm-run-path/4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + + /nth-check/1.0.2: + resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} + dependencies: + boolbase: 1.0.0 + dev: false + + /nth-check/2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: false + + /nwsapi/2.2.2: + resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} + + /oauth-sign/0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + dev: true + + /object-assign/4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: false + + /object-hash/3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: false + + /object-inspect/1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + + /object-is/1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + dev: false + + /object-keys/1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: false + + /object.assign/4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: false + + /object.entries/1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + dev: false + + /object.fromentries/2.0.6: + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + dev: false + + /object.getownpropertydescriptors/2.1.5: + resolution: {integrity: sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==} + engines: {node: '>= 0.8'} + dependencies: + array.prototype.reduce: 1.0.5 + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + dev: false + + /object.hasown/1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + dependencies: + define-properties: 1.2.0 + es-abstract: 1.21.1 + dev: false + + /object.values/1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + dev: false + + /observable-fns/0.6.1: + resolution: {integrity: sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==} + + /observable-webworkers/1.0.0: + resolution: {integrity: sha512-+cECwCR8IEh8UY5nefQVLO9Cydqpk1izO+o7BABmKjXfJZyEOzBWY3ss5jbOPM6KmEa9aQExvAtTW6tVTOsNAQ==} + dev: true + + /observable-webworkers/2.0.1: + resolution: {integrity: sha512-JI1vB0u3pZjoQKOK1ROWzp0ygxSi7Yb0iR+7UNsw4/Zn4cQ0P3R7XL38zac/Dy2tEA7Lg88/wIJTjF8vYXZ0uw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dev: false + + /obuf/1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + dev: false + + /on-finished/2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: false + + /on-headers/1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: false + + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime/5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + + /open/8.4.1: + resolution: {integrity: sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: false + + /opener/1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + dev: true + + /optionator/0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.3 + + /optionator/0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: false + + /p-any/3.0.0: + resolution: {integrity: sha512-5rqbqfsRWNb0sukt0awwgJMlaep+8jV45S15SKKB34z4UuzjcofIfnriCBhWjZP2jbVtjt9yRl7buB6RlKsu9w==} + engines: {node: '>=10'} + dependencies: + p-cancelable: 2.1.1 + p-some: 5.0.0 + dev: true + + /p-cancelable/2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + dev: true + + /p-defer/3.0.0: + resolution: {integrity: sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==} + engines: {node: '>=8'} + + /p-defer/4.0.0: + resolution: {integrity: sha512-Vb3QRvQ0Y5XnF40ZUWW7JfLogicVh/EnA5gBIvKDJoYpeI82+1E3AlB9yOcKFS0AhHrWVnAQO39fbR0G99IVEQ==} + engines: {node: '>=12'} + dev: false + + /p-fifo/1.0.0: + resolution: {integrity: sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==} + dependencies: + fast-fifo: 1.1.0 + p-defer: 3.0.0 + + /p-finally/1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: true + + /p-limit/2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + + /p-limit/3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + + /p-limit/4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: false + + /p-locate/3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + dev: false + + /p-locate/4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + + /p-locate/5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: false + + /p-queue/6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + dev: true + + /p-queue/7.3.4: + resolution: {integrity: sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==} + engines: {node: '>=12'} + dependencies: + eventemitter3: 4.0.7 + p-timeout: 5.1.0 + dev: false + + /p-reflect/2.1.0: + resolution: {integrity: sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg==} + engines: {node: '>=8'} + dev: true + + /p-reflect/3.1.0: + resolution: {integrity: sha512-3sG3UlpisPSaX+o7u2q01hIQmrpkvdl5GSO1ZwL7pfc5kHB2bPF0eFNCfYTrW1/LTUdgmPwBAvmT0Zr8eSmaAQ==} + engines: {node: '>=12'} + dev: false + + /p-retry/4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + + /p-retry/5.1.2: + resolution: {integrity: sha512-couX95waDu98NfNZV+i/iLt+fdVxmI7CbrrdC2uDWfPdUAApyxT4wmDlyOtR5KtTDmkDO0zDScDjDou9YHhd9g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + '@types/retry': 0.12.1 + retry: 0.13.1 + dev: false + + /p-settle/4.1.1: + resolution: {integrity: sha512-6THGh13mt3gypcNMm0ADqVNCcYa3BK6DWsuJWFCuEKP1rpY+OKGp7gaZwVmLspmic01+fsg/fN57MfvDzZ/PuQ==} + engines: {node: '>=10'} + dependencies: + p-limit: 2.3.0 + p-reflect: 2.1.0 + dev: true + + /p-settle/5.1.0: + resolution: {integrity: sha512-ujR6UFfh09ziOKyC5aaJak5ZclsjlLw57SYtFZg6yllMofyygnaibQRZ4jf6QPWqoOCGUXyb1cxUKELeAyKO7g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + p-reflect: 3.1.0 + dev: false + + /p-some/5.0.0: + resolution: {integrity: sha512-Js5XZxo6vHjB9NOYAzWDYAIyyiPvva0DWESAIWIK7uhSpGsyg5FwUPxipU/SOQx5x9EqhOh545d1jo6cVkitig==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + p-cancelable: 2.1.1 + dev: true + + /p-timeout/3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + dependencies: + p-finally: 1.0.0 + dev: true + + /p-timeout/4.1.0: + resolution: {integrity: sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw==} + engines: {node: '>=10'} + dev: true + + /p-timeout/5.1.0: + resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} + engines: {node: '>=12'} + dev: false + + /p-timeout/6.1.1: + resolution: {integrity: sha512-yqz2Wi4fiFRpMmK0L2pGAU49naSUaP23fFIQL2Y6YT+qDGPoFwpvgQM/wzc6F8JoenUkIlAFa4Ql7NguXBxI7w==} + engines: {node: '>=14.16'} + dev: false + + /p-try/2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + /pako/1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + /param-case/3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + dependencies: + dot-case: 3.0.4 + tslib: 2.5.0 + dev: false + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: false + + /parse-duration/1.0.2: + resolution: {integrity: sha512-Dg27N6mfok+ow1a2rj/nRjtCfaKrHUZV2SJpEn/s8GaVUSlf4GGRCRP1c13Hj+wfPKVMrFDqLMLITkYKgKxyyg==} + dev: true + + /parse-json/5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.18.6 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + /parse5/6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + /parseurl/1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: false + + /pascal-case/3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.5.0 + dev: false + + /path-browserify/1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + /path-exists/3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + dev: false + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-to-regexp/0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: false + + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: false + + /peer-id/0.15.4: + resolution: {integrity: sha512-MDoBIMZYwQIAHaZQUwsIcvoFgdbIl5GtZMwSkXpIYvc5v0TSDv+u8WsTKrKt2Vv28tHFFDJQdVzu3T4qTPzK+w==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + class-is: 1.1.0 + libp2p-crypto: 0.20.0 + minimist: 1.2.8 + multiformats: 9.9.0 + protobufjs: 6.11.3 + uint8arrays: 3.1.1 + dev: true + + /peer-id/0.16.0: + resolution: {integrity: sha512-EmL7FurFUduU9m1PS9cfJ5TAuCvxKQ7DKpfx3Yj6IKWyBRtosriFuOag/l3ni/dtPgPLwiA4R9IvpL7hsDLJuQ==} + engines: {node: '>=15.0.0'} + dependencies: + class-is: 1.1.0 + libp2p-crypto: 0.21.2 + multiformats: 9.9.0 + protobufjs: 6.11.3 + uint8arrays: 3.1.1 + dev: true + + /pem-jwk/2.0.0: + resolution: {integrity: sha512-rFxu7rVoHgQ5H9YsP50dDWf0rHjreVA2z0yPiWr5WdH/UHb29hKtF7h6l8vNd1cbYR1t0QL+JKhW55a2ZV4KtA==} + engines: {node: '>=5.10.0'} + hasBin: true + dependencies: + asn1.js: 5.4.1 + dev: true + + /performance-now/2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + /picocolors/0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + dev: false + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pify/2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: false + + /pirates/4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + + /pkg-dir/4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + + /pkg-up/3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + dependencies: + find-up: 3.0.0 + dev: false + + /platform/1.3.6: + resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + + /portfinder/1.0.32: + resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} + engines: {node: '>= 0.12.0'} + dependencies: + async: 2.6.4 + debug: 3.2.7 + mkdirp: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: true + + /postcss-attribute-case-insensitive/5.0.2_postcss@8.4.21: + resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-browser-comments/4.0.0_jrpp4geoaqu5dz2gragkckznb4: + resolution: {integrity: sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==} + engines: {node: '>=8'} + peerDependencies: + browserslist: '>=4' + postcss: '>=8' + dependencies: + browserslist: 4.21.5 + postcss: 8.4.21 + dev: false + + /postcss-calc/8.2.4_postcss@8.4.21: + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-clamp/4.1.0_postcss@8.4.21: + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-color-functional-notation/4.2.4_postcss@8.4.21: + resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-color-hex-alpha/8.0.4_postcss@8.4.21: + resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-color-rebeccapurple/7.1.1_postcss@8.4.21: + resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-colormin/5.3.0_postcss@8.4.21: + resolution: {integrity: sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.5 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-convert-values/5.1.3_postcss@8.4.21: + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.5 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-custom-media/8.0.2_postcss@8.4.21: + resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-custom-properties/12.1.11_postcss@8.4.21: + resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-custom-selectors/6.0.3_postcss@8.4.21: + resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-dir-pseudo-class/6.0.5_postcss@8.4.21: + resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-discard-comments/5.1.2_postcss@8.4.21: + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-discard-duplicates/5.1.0_postcss@8.4.21: + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-discard-empty/5.1.1_postcss@8.4.21: + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-discard-overridden/5.1.0_postcss@8.4.21: + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-double-position-gradients/3.1.2_postcss@8.4.21: + resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-env-function/4.0.6_postcss@8.4.21: + resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-flexbugs-fixes/5.0.2_postcss@8.4.21: + resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==} + peerDependencies: + postcss: ^8.1.4 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-focus-visible/6.0.4_postcss@8.4.21: + resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-focus-within/5.0.4_postcss@8.4.21: + resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-font-variant/5.0.0_postcss@8.4.21: + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-gap-properties/3.0.5_postcss@8.4.21: + resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-image-set-function/4.0.7_postcss@8.4.21: + resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-import/14.1.0_postcss@8.4.21: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 + dev: false + + /postcss-initial/4.0.1_postcss@8.4.21: + resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-js/4.0.1_postcss@8.4.21: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.21 + dev: false + + /postcss-lab-function/4.2.1_postcss@8.4.21: + resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-load-config/3.1.4_postcss@8.4.21: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.0.6 + postcss: 8.4.21 + yaml: 1.10.2 + dev: false + + /postcss-loader/6.2.1_6jdsrmfenkuhhw3gx4zvjlznce: + resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + dependencies: + cosmiconfig: 7.1.0 + klona: 2.0.6 + postcss: 8.4.21 + semver: 7.3.8 + webpack: 5.75.0 + dev: false + + /postcss-logical/5.0.4_postcss@8.4.21: + resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-media-minmax/5.0.0_postcss@8.4.21: + resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-merge-longhand/5.1.7_postcss@8.4.21: + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1_postcss@8.4.21 + dev: false + + /postcss-merge-rules/5.1.3_postcss@8.4.21: + resolution: {integrity: sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.5 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-minify-font-values/5.1.0_postcss@8.4.21: + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-gradients/5.1.1_postcss@8.4.21: + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-params/5.1.4_postcss@8.4.21: + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.5 + cssnano-utils: 3.1.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-minify-selectors/5.2.1_postcss@8.4.21: + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-modules-extract-imports/3.0.0_postcss@8.4.21: + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-modules-local-by-default/4.0.0_postcss@8.4.21: + resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-modules-scope/3.0.0_postcss@8.4.21: + resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-modules-values/4.0.0_postcss@8.4.21: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.21 + postcss: 8.4.21 + dev: false + + /postcss-nested/6.0.0_postcss@8.4.21: + resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-nesting/10.2.0_postcss@8.4.21: + resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.1.1_wajs5nedgkikc5pcuwett7legi + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-normalize-charset/5.1.0_postcss@8.4.21: + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-normalize-display-values/5.1.0_postcss@8.4.21: + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-positions/5.1.1_postcss@8.4.21: + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-repeat-style/5.1.1_postcss@8.4.21: + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-string/5.1.0_postcss@8.4.21: + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-timing-functions/5.1.0_postcss@8.4.21: + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-unicode/5.1.1_postcss@8.4.21: + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.5 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-url/5.1.0_postcss@8.4.21: + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + normalize-url: 6.1.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize-whitespace/5.1.1_postcss@8.4.21: + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-normalize/10.0.1_jrpp4geoaqu5dz2gragkckznb4: + resolution: {integrity: sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==} + engines: {node: '>= 12'} + peerDependencies: + browserslist: '>= 4' + postcss: '>= 8' + dependencies: + '@csstools/normalize.css': 12.0.0 + browserslist: 4.21.5 + postcss: 8.4.21 + postcss-browser-comments: 4.0.0_jrpp4geoaqu5dz2gragkckznb4 + sanitize.css: 13.0.0 + dev: false + + /postcss-opacity-percentage/1.1.3_postcss@8.4.21: + resolution: {integrity: sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-ordered-values/5.1.3_postcss@8.4.21: + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-utils: 3.1.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-overflow-shorthand/3.0.4_postcss@8.4.21: + resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-page-break/3.0.4_postcss@8.4.21: + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-place/7.0.5_postcss@8.4.21: + resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-preset-env/7.8.3_postcss@8.4.21: + resolution: {integrity: sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-cascade-layers': 1.1.1_postcss@8.4.21 + '@csstools/postcss-color-function': 1.1.1_postcss@8.4.21 + '@csstools/postcss-font-format-keywords': 1.0.1_postcss@8.4.21 + '@csstools/postcss-hwb-function': 1.0.2_postcss@8.4.21 + '@csstools/postcss-ic-unit': 1.0.1_postcss@8.4.21 + '@csstools/postcss-is-pseudo-class': 2.0.7_postcss@8.4.21 + '@csstools/postcss-nested-calc': 1.0.0_postcss@8.4.21 + '@csstools/postcss-normalize-display-values': 1.0.1_postcss@8.4.21 + '@csstools/postcss-oklab-function': 1.1.1_postcss@8.4.21 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 + '@csstools/postcss-stepped-value-functions': 1.0.1_postcss@8.4.21 + '@csstools/postcss-text-decoration-shorthand': 1.0.0_postcss@8.4.21 + '@csstools/postcss-trigonometric-functions': 1.0.2_postcss@8.4.21 + '@csstools/postcss-unset-value': 1.0.2_postcss@8.4.21 + autoprefixer: 10.4.13_postcss@8.4.21 + browserslist: 4.21.5 + css-blank-pseudo: 3.0.3_postcss@8.4.21 + css-has-pseudo: 3.0.4_postcss@8.4.21 + css-prefers-color-scheme: 6.0.3_postcss@8.4.21 + cssdb: 7.4.1 + postcss: 8.4.21 + postcss-attribute-case-insensitive: 5.0.2_postcss@8.4.21 + postcss-clamp: 4.1.0_postcss@8.4.21 + postcss-color-functional-notation: 4.2.4_postcss@8.4.21 + postcss-color-hex-alpha: 8.0.4_postcss@8.4.21 + postcss-color-rebeccapurple: 7.1.1_postcss@8.4.21 + postcss-custom-media: 8.0.2_postcss@8.4.21 + postcss-custom-properties: 12.1.11_postcss@8.4.21 + postcss-custom-selectors: 6.0.3_postcss@8.4.21 + postcss-dir-pseudo-class: 6.0.5_postcss@8.4.21 + postcss-double-position-gradients: 3.1.2_postcss@8.4.21 + postcss-env-function: 4.0.6_postcss@8.4.21 + postcss-focus-visible: 6.0.4_postcss@8.4.21 + postcss-focus-within: 5.0.4_postcss@8.4.21 + postcss-font-variant: 5.0.0_postcss@8.4.21 + postcss-gap-properties: 3.0.5_postcss@8.4.21 + postcss-image-set-function: 4.0.7_postcss@8.4.21 + postcss-initial: 4.0.1_postcss@8.4.21 + postcss-lab-function: 4.2.1_postcss@8.4.21 + postcss-logical: 5.0.4_postcss@8.4.21 + postcss-media-minmax: 5.0.0_postcss@8.4.21 + postcss-nesting: 10.2.0_postcss@8.4.21 + postcss-opacity-percentage: 1.1.3_postcss@8.4.21 + postcss-overflow-shorthand: 3.0.4_postcss@8.4.21 + postcss-page-break: 3.0.4_postcss@8.4.21 + postcss-place: 7.0.5_postcss@8.4.21 + postcss-pseudo-class-any-link: 7.1.6_postcss@8.4.21 + postcss-replace-overflow-wrap: 4.0.0_postcss@8.4.21 + postcss-selector-not: 6.0.1_postcss@8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-pseudo-class-any-link/7.1.6_postcss@8.4.21: + resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-reduce-initial/5.1.1_postcss@8.4.21: + resolution: {integrity: sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.5 + caniuse-api: 3.0.0 + postcss: 8.4.21 + dev: false + + /postcss-reduce-transforms/5.1.0_postcss@8.4.21: + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + dev: false + + /postcss-replace-overflow-wrap/4.0.0_postcss@8.4.21: + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + dependencies: + postcss: 8.4.21 + dev: false + + /postcss-selector-not/6.0.1_postcss@8.4.21: + resolution: {integrity: sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-selector-parser/6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: false + + /postcss-svgo/5.1.0_postcss@8.4.21: + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + dev: false + + /postcss-unique-selectors/5.1.1_postcss@8.4.21: + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-value-parser/4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: false + + /postcss/7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + dev: false + + /postcss/8.4.21: + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /prelude-ls/1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + + /prelude-ls/1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: false + + /pretty-bytes/5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + dev: false + + /pretty-error/4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + dev: false + + /pretty-format/27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + /pretty-format/28.1.3: + resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/schemas': 28.1.3 + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 18.2.0 + + /pretty-format/29.4.2: + resolution: {integrity: sha512-qKlHR8yFVCbcEWba0H0TOC8dnLlO4vPlyEjRPw31FZ2Rupy9nLa8ZLbYny8gWEl8CkEhJqAE6IzdNELTBVcBEg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.2 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /private-ip/2.3.4: + resolution: {integrity: sha512-ts/YFVwfBeLq61f9+KsOhXW6RH0wvY0gU50R6QZYzgFhggyyLK6WDFeYdjfi/HMnBm2hecLvsR3PB3JcRxDk+A==} + dependencies: + ip-regex: 4.3.0 + ipaddr.js: 2.0.1 + is-ip: 3.1.0 + netmask: 2.0.2 + dev: true + + /private-ip/3.0.0: + resolution: {integrity: sha512-HkMBs4nMtrP+cvcw0bDi2BAZIGgiKI4Zq8Oc+dMqNBpHS8iGL4+WO/pRtc8Bwnv9rjnV0QwMDwEBymFtqv7Kww==} + engines: {node: '>=14.16'} + dependencies: + '@chainsafe/is-ip': 2.0.1 + ip-regex: 5.0.0 + ipaddr.js: 2.0.1 + netmask: 2.0.2 + dev: false + + /process-nextick-args/2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + + /process/0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: false + + /promise-timeout/1.3.0: + resolution: {integrity: sha512-5yANTE0tmi5++POym6OgtFmwfDvOXABD9oj/jLQr5GPEyuNEb7jH4wbbANJceJid49jwhi1RddxnhnEAb/doqg==} + dev: true + + /promise/8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + dependencies: + asap: 2.0.6 + dev: false + + /prompts/2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + /prop-types/15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: false + + /protobufjs/6.11.3: + resolution: {integrity: sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==} + hasBin: true + requiresBuild: true + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/long': 4.0.2 + '@types/node': 18.13.0 + long: 4.0.0 + dev: true + + /protobufjs/7.2.2: + resolution: {integrity: sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==} + engines: {node: '>=12.0.0'} + requiresBuild: true + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 18.13.0 + long: 5.2.1 + dev: false + + /protons-runtime/4.0.2_uint8arraylist@2.4.3: + resolution: {integrity: sha512-R4N6qKHgz8T2Gl45CTcZfITzXPQY9ym8lbLb4VyFMS4ag1KusCRZwkQXTBRhxQ+93ck3K3aDhK1wIk98AMtNyw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + peerDependencies: + uint8arraylist: ^2.3.2 + dependencies: + protobufjs: 7.2.2 + uint8arraylist: 2.4.3 + dev: false + + /proxy-addr/2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + dev: false + + /psl/1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + + /punycode/2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + /q/1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + dev: false + + /qs/6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + + /qs/6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + dev: true + + /querystringify/2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: false + + /quick-lru/5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: false + + /raf/3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + dependencies: + performance-now: 2.1.0 + dev: false + + /randombytes/2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + + /randomfill/1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + /range-parser/1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: false + + /rate-limiter-flexible/2.4.1: + resolution: {integrity: sha512-dgH4T44TzKVO9CLArNto62hJOwlWJMLUjVVr/ii0uUzZXEXthDNr7/yefW5z/1vvHAfycc1tnuiYyNJ8CTRB3g==} + dev: false + + /raw-body/2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: false + + /react-app-polyfill/3.0.0: + resolution: {integrity: sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==} + engines: {node: '>=14'} + dependencies: + core-js: 3.27.2 + object-assign: 4.1.1 + promise: 8.3.0 + raf: 3.4.1 + regenerator-runtime: 0.13.11 + whatwg-fetch: 3.6.2 + dev: false + + /react-dev-utils/12.0.1_f3a4zrasoaotz7gdk64fcmlkrm: + resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=2.7' + webpack: '>=4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/code-frame': 7.18.6 + address: 1.2.2 + browserslist: 4.21.5 + chalk: 4.1.2 + cross-spawn: 7.0.3 + detect-port-alt: 1.1.6 + escape-string-regexp: 4.0.0 + filesize: 8.0.7 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.2_f3a4zrasoaotz7gdk64fcmlkrm + global-modules: 2.0.0 + globby: 11.1.0 + gzip-size: 6.0.0 + immer: 9.0.19 + is-root: 2.1.0 + loader-utils: 3.2.1 + open: 8.4.1 + pkg-up: 3.1.0 + prompts: 2.4.2 + react-error-overlay: 6.0.11 + recursive-readdir: 2.2.3 + shell-quote: 1.8.0 + strip-ansi: 6.0.1 + text-table: 0.2.0 + typescript: 4.9.5 + webpack: 5.75.0 + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + dev: false + + /react-dom/18.2.0_react@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false + + /react-error-overlay/6.0.11: + resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} + dev: false + + /react-is/16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: false + + /react-is/17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + /react-is/18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + /react-native-fetch-api/2.0.0: + resolution: {integrity: sha512-GOA8tc1EVYLnHvma/TU9VTgLOyralO7eATRuCDchQveXW9Fr9vXygyq9iwqmM7YRZ8qRJfEt9xOS7OYMdJvRFw==} + dependencies: + p-defer: 3.0.0 + dev: true + + /react-native-fetch-api/3.0.0: + resolution: {integrity: sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==} + dependencies: + p-defer: 3.0.0 + dev: true + + /react-refresh/0.11.0: + resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==} + engines: {node: '>=0.10.0'} + dev: false + + /react-scripts/5.0.1_72im5qx3m2npzev2b5222y6sne: + resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==} + engines: {node: '>=14.0.0'} + hasBin: true + peerDependencies: + eslint: '*' + react: '>= 16' + typescript: ^3.2.1 || ^4 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.20.12 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.10_unmakpayn7vcxadrrsbqlrpehy + '@svgr/webpack': 5.5.0 + babel-jest: 27.5.1_@babel+core@7.20.12 + babel-loader: 8.3.0_la66t7xldg4uecmyawueag5wkm + babel-plugin-named-asset-import: 0.3.8_@babel+core@7.20.12 + babel-preset-react-app: 10.0.1 + bfj: 7.0.2 + browserslist: 4.21.5 + camelcase: 6.3.0 + case-sensitive-paths-webpack-plugin: 2.4.0 + css-loader: 6.7.3_webpack@5.75.0 + css-minimizer-webpack-plugin: 3.4.1_webpack@5.75.0 + dotenv: 10.0.0 + dotenv-expand: 5.1.0 + eslint: 8.34.0 + eslint-config-react-app: 7.0.1_i3tuwedbyjkyv7x6vb4ybywusi + eslint-webpack-plugin: 3.2.0_tuobyd7hv2iyslumy6tj4ngzsq + file-loader: 6.2.0_webpack@5.75.0 + fs-extra: 10.1.0 + html-webpack-plugin: 5.5.0_webpack@5.75.0 + identity-obj-proxy: 3.0.0 + jest: 27.5.1 + jest-resolve: 27.5.1 + jest-watch-typeahead: 1.1.0_jest@27.5.1 + mini-css-extract-plugin: 2.7.2_webpack@5.75.0 + postcss: 8.4.21 + postcss-flexbugs-fixes: 5.0.2_postcss@8.4.21 + postcss-loader: 6.2.1_6jdsrmfenkuhhw3gx4zvjlznce + postcss-normalize: 10.0.1_jrpp4geoaqu5dz2gragkckznb4 + postcss-preset-env: 7.8.3_postcss@8.4.21 + prompts: 2.4.2 + react: 18.2.0 + react-app-polyfill: 3.0.0 + react-dev-utils: 12.0.1_f3a4zrasoaotz7gdk64fcmlkrm + react-refresh: 0.11.0 + resolve: 1.22.1 + resolve-url-loader: 4.0.0 + sass-loader: 12.6.0_webpack@5.75.0 + semver: 7.3.8 + source-map-loader: 3.0.2_webpack@5.75.0 + style-loader: 3.3.1_webpack@5.75.0 + tailwindcss: 3.2.6_postcss@8.4.21 + terser-webpack-plugin: 5.3.6_webpack@5.75.0 + typescript: 4.9.5 + webpack: 5.75.0 + webpack-dev-server: 4.11.1_webpack@5.75.0 + webpack-manifest-plugin: 4.1.1_webpack@5.75.0 + workbox-webpack-plugin: 6.5.4_webpack@5.75.0 + optionalDependencies: + fsevents: 2.3.2 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - '@parcel/css' + - '@swc/core' + - '@types/babel__core' + - '@types/webpack' + - bufferutil + - canvas + - clean-css + - csso + - debug + - esbuild + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - fibers + - node-notifier + - node-sass + - rework + - rework-visit + - sass + - sass-embedded + - sockjs-client + - supports-color + - ts-node + - type-fest + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-hot-middleware + - webpack-plugin-serve + dev: false + + /react/18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + + /read-cache/1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: false + + /readable-stream/2.3.7: + resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + + /readable-stream/3.6.0: + resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: false + + /receptacle/1.3.2: + resolution: {integrity: sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==} + dependencies: + ms: 2.1.3 + + /recursive-readdir/2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} + dependencies: + minimatch: 3.1.2 + dev: false + + /redent/3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: false + + /regenerate-unicode-properties/10.1.0: + resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: false + + /regenerate/1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: false + + /regenerator-runtime/0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: false + + /regenerator-transform/0.15.1: + resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} + dependencies: + '@babel/runtime': 7.20.13 + dev: false + + /regex-parser/2.2.11: + resolution: {integrity: sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==} + dev: false + + /regexp.prototype.flags/1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + dev: false + + /regexpp/3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: false + + /regexpu-core/5.3.0: + resolution: {integrity: sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.0 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: false + + /regjsparser/0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: false + + /relateurl/0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + dev: false + + /renderkid/3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + dev: false + + /request/2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + dependencies: + aws-sign2: 0.7.0 + aws4: 1.12.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + dev: true + + /require-directory/2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + /require-from-string/2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: false + + /requires-port/1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + /resolve-cwd/3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: false + + /resolve-from/5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + /resolve-url-loader/4.0.0: + resolution: {integrity: sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==} + engines: {node: '>=8.9'} + peerDependencies: + rework: 1.0.1 + rework-visit: 1.0.0 + peerDependenciesMeta: + rework: + optional: true + rework-visit: + optional: true + dependencies: + adjust-sourcemap-loader: 4.0.0 + convert-source-map: 1.9.0 + loader-utils: 2.0.4 + postcss: 7.0.39 + source-map: 0.6.1 + dev: false + + /resolve.exports/1.1.1: + resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} + engines: {node: '>=10'} + + /resolve.exports/2.0.0: + resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} + engines: {node: '>=10'} + dev: true + + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.11.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /resolve/2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + hasBin: true + dependencies: + is-core-module: 2.11.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: false + + /retimer/2.0.0: + resolution: {integrity: sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg==} + dev: true + + /retimer/3.0.0: + resolution: {integrity: sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==} + + /retry/0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: false + + /rimraf/3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + + /rollup-plugin-terser/7.0.2_rollup@2.79.1: + resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser + peerDependencies: + rollup: ^2.0.0 + dependencies: + '@babel/code-frame': 7.18.6 + jest-worker: 26.6.2 + rollup: 2.79.1 + serialize-javascript: 4.0.0 + terser: 5.16.3 + dev: false + + /rollup/2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: false + + /rollup/3.15.0: + resolution: {integrity: sha512-F9hrCAhnp5/zx/7HYmftvsNBkMfLfk/dXUh73hPSM2E3CRgap65orDNJbLetoiUFwSAk6iHPLvBrZ5iHYvzqsg==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: false + + /rxjs/7.5.5: + resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} + dependencies: + tslib: 2.5.0 + + /rxjs/7.8.0: + resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} + dependencies: + tslib: 2.5.0 + dev: true + + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + /safe-buffer/5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + /safe-regex-test/1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-regex: 1.1.4 + dev: false + + /safer-buffer/2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + /sanitize-filename/1.6.3: + resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} + dependencies: + truncate-utf8-bytes: 1.0.2 + + /sanitize.css/13.0.0: + resolution: {integrity: sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==} + dev: false + + /sass-loader/12.6.0_webpack@5.75.0: + resolution: {integrity: sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + dependencies: + klona: 2.0.6 + neo-async: 2.6.2 + webpack: 5.75.0 + dev: false + + /sax/1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + + /saxes/5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + dependencies: + xmlchars: 2.2.0 + + /scheduler/0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /schema-utils/2.7.0: + resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + + /schema-utils/2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + + /schema-utils/3.1.1: + resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + + /schema-utils/4.0.0: + resolution: {integrity: sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==} + engines: {node: '>= 12.13.0'} + dependencies: + '@types/json-schema': 7.0.11 + ajv: 8.12.0 + ajv-formats: 2.1.1_ajv@8.12.0 + ajv-keywords: 5.1.0_ajv@8.12.0 + dev: false + + /secp256k1/4.0.3: + resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + elliptic: 6.5.4 + node-addon-api: 2.0.2 + node-gyp-build: 4.6.0 + dev: true + + /secure-compare/3.0.1: + resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} + dev: true + + /select-hose/2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + dev: false + + /selfsigned/2.1.1: + resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==} + engines: {node: '>=10'} + dependencies: + node-forge: 1.3.1 + dev: false + + /semver/6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + + /semver/7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /send/0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /serialize-javascript/4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + dependencies: + randombytes: 2.1.0 + dev: false + + /serialize-javascript/6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + dependencies: + randombytes: 2.1.0 + dev: false + + /serve-index/1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: false + + /serve-static/1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + dev: false + + /set-delayed-interval/1.0.0: + resolution: {integrity: sha512-29fhAwuZlLcuBnW/EwxvLcg2D3ELX+VBDNhnavs3YYkab72qmrcSeQNVdzl8EcPPahGQXhBM6MKdPLCQGMDakw==} + + /setprototypeof/1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: false + + /setprototypeof/1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: false + + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /shell-quote/1.8.0: + resolution: {integrity: sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==} + dev: false + + /side-channel/1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + object-inspect: 1.12.3 + + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + /sisteransi/1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + /slash/4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: false + + /sockjs/0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + dev: false + + /source-list-map/2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + dev: false + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map-loader/3.0.2_webpack@5.75.0: + resolution: {integrity: sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + abab: 2.0.6 + iconv-lite: 0.6.3 + source-map-js: 1.0.2 + webpack: 5.75.0 + dev: false + + /source-map-support/0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map-support/0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + /source-map/0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + /source-map/0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + dependencies: + whatwg-url: 7.1.0 + dev: false + + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + dev: false + + /spdy-transport/3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + dependencies: + debug: 4.3.4 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.0 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + dev: false + + /spdy/4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + dependencies: + debug: 4.3.4 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /sprintf-js/1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + /sprintf-js/1.1.2: + resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} + + /sshpk/1.17.0: + resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + + /stable/0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + + /stack-utils/2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + + /stackframe/1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + dev: false + + /statuses/1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false + + /statuses/2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: false + + /stop-iteration-iterator/1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.5 + dev: false + + /stream-to-it/0.2.4: + resolution: {integrity: sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==} + dependencies: + get-iterator: 1.0.2 + dev: true + + /streaming-iterables/6.2.0: + resolution: {integrity: sha512-3AYC8oB60WyD1ic7uHmN/vm2oRGzRnQ3XFBl/bFMDi1q1+nc5/vjMmiE4vroIya3jG59t87VpyAj/iXYxyw9AA==} + engines: {node: '>=10'} + dev: true + + /streamsearch/1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + /string-length/4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + /string-length/5.0.1: + resolution: {integrity: sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==} + engines: {node: '>=12.20'} + dependencies: + char-regex: 2.0.1 + strip-ansi: 7.0.1 + dev: false + + /string-natural-compare/3.0.1: + resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} + dev: false + + /string-width/4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string.prototype.matchall/4.0.8: + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + get-intrinsic: 1.2.0 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + regexp.prototype.flags: 1.4.3 + side-channel: 1.0.4 + dev: false + + /string.prototype.trimend/1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + dev: false + + /string.prototype.trimstart/1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.1 + dev: false + + /string_decoder/1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + + /string_decoder/1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + + /stringify-object/3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + dev: false + + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi/7.0.1: + resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: false + + /strip-bom/3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: false + + /strip-bom/4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + /strip-comments/2.0.1: + resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} + engines: {node: '>=10'} + dev: false + + /strip-final-newline/2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + /strip-indent/3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: false + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + /style-loader/3.3.1_webpack@5.75.0: + resolution: {integrity: sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + webpack: 5.75.0 + dev: false + + /stylehacks/5.1.1_postcss@8.4.21: + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + browserslist: 4.21.5 + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: false + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + + /supports-color/8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + + /supports-hyperlinks/2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /svg-parser/2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + dev: false + + /svgo/1.3.2: + resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==} + engines: {node: '>=4.0.0'} + deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. + hasBin: true + dependencies: + chalk: 2.4.2 + coa: 2.0.2 + css-select: 2.1.0 + css-select-base-adapter: 0.1.1 + css-tree: 1.0.0-alpha.37 + csso: 4.2.0 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + object.values: 1.1.6 + sax: 1.2.4 + stable: 0.1.8 + unquote: 1.1.1 + util.promisify: 1.0.1 + dev: false + + /svgo/2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: false + + /symbol-tree/3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + /tailwindcss/3.2.6_postcss@8.4.21: + resolution: {integrity: sha512-BfgQWZrtqowOQMC2bwaSNe7xcIjdDEgixWGYOd6AL0CbKHJlvhfdbINeAW76l1sO+1ov/MJ93ODJ9yluRituIw==} + engines: {node: '>=12.13.0'} + hasBin: true + peerDependencies: + postcss: ^8.0.9 + dependencies: + arg: 5.0.2 + chokidar: 3.5.3 + color-name: 1.1.4 + detective: 5.2.1 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.2.12 + glob-parent: 6.0.2 + is-glob: 4.0.3 + lilconfig: 2.0.6 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-import: 14.1.0_postcss@8.4.21 + postcss-js: 4.0.1_postcss@8.4.21 + postcss-load-config: 3.1.4_postcss@8.4.21 + postcss-nested: 6.0.0_postcss@8.4.21 + postcss-selector-parser: 6.0.11 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.1 + transitivePeerDependencies: + - ts-node + dev: false + + /tapable/1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + dev: false + + /tapable/2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: false + + /tar-stream/2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.0 + + /temp-dir/2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + dev: false + + /tempy/0.6.0: + resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} + engines: {node: '>=10'} + dependencies: + is-stream: 2.0.1 + temp-dir: 2.0.0 + type-fest: 0.16.0 + unique-string: 2.0.0 + dev: false + + /terminal-link/2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + + /terser-webpack-plugin/5.3.6_webpack@5.75.0: + resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true dependencies: - '@jest/schemas': 28.1.3 - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 18.2.0 + '@jridgewell/trace-mapping': 0.3.17 + jest-worker: 27.5.1 + schema-utils: 3.1.1 + serialize-javascript: 6.0.1 + terser: 5.16.3 + webpack: 5.75.0 + dev: false - /private-ip/2.3.4: - resolution: {integrity: sha512-ts/YFVwfBeLq61f9+KsOhXW6RH0wvY0gU50R6QZYzgFhggyyLK6WDFeYdjfi/HMnBm2hecLvsR3PB3JcRxDk+A==} + /terser/5.16.3: + resolution: {integrity: sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==} + engines: {node: '>=10'} + hasBin: true dependencies: - ip-regex: 4.3.0 - ipaddr.js: 2.0.1 - is-ip: 3.1.0 - netmask: 2.0.2 + '@jridgewell/source-map': 0.3.2 + acorn: 8.8.2 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: false + + /test-exclude/6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + /text-table/0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: false + + /threads/1.7.0: + resolution: {integrity: sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ==} + dependencies: + callsites: 3.1.0 + debug: 4.3.4 + is-observable: 2.1.0 + observable-fns: 0.6.1 + optionalDependencies: + tiny-worker: 2.3.0 + transitivePeerDependencies: + - supports-color + + /throat/6.0.2: + resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} + + /thunky/1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + dev: false + + /timeout-abort-controller/1.1.1: + resolution: {integrity: sha512-BsF9i3NAJag6T0ZEjki9j654zoafI2X6ayuNd6Tp8+Ul6Tr5s4jo973qFeiWrRSweqvskC+AHDKUmIW4b7pdhQ==} + dependencies: + abort-controller: 3.0.0 + retimer: 2.0.0 + dev: true + + /timeout-abort-controller/3.0.0: + resolution: {integrity: sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==} + dependencies: + retimer: 3.0.0 + + /tiny-worker/2.3.0: + resolution: {integrity: sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==} + requiresBuild: true + dependencies: + esm: 3.2.25 + optional: true + + /tmpl/1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + /to-fast-properties/2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /toidentifier/1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: false + + /tough-cookie/2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + dependencies: + psl: 1.9.0 + punycode: 2.3.0 + dev: true + + /tough-cookie/4.1.2: + resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.0 + universalify: 0.2.0 + url-parse: 1.5.10 + + /tr46/0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: true + + /tr46/1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + dependencies: + punycode: 2.3.0 + dev: false + + /tr46/2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + dependencies: + punycode: 2.3.0 + + /truncate-utf8-bytes/1.0.2: + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + dependencies: + utf8-byte-length: 1.0.4 + + /tryer/1.0.1: + resolution: {integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==} + dev: false + + /ts-jest/27.1.5_cnngzrja2umb46xxazlucyx2qu: + resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@types/jest': ^27.0.0 + babel-jest: '>=27.0.0 <28' + esbuild: '*' + jest: ^27.0.0 + typescript: '>=3.8 <5.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/jest': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 27.5.1 + jest-util: 27.5.1 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.3.8 + typescript: 4.9.5 + yargs-parser: 20.2.9 + dev: true + + /ts-jest/27.1.5_ddylxr3wxksmlyjpihqkkowegi: + resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@types/jest': ^27.0.0 + babel-jest: '>=27.0.0 <28' + esbuild: '*' + jest: ^27.0.0 + typescript: '>=3.8 <5.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/jest': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.20.12 + '@types/jest': 29.4.0 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.4.1 + jest-util: 27.5.1 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.3.8 + typescript: 4.9.5 + yargs-parser: 20.2.9 + dev: true + + /ts-jest/27.1.5_g4n3hsjlbmz4ag5o32ytojordu: + resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@types/jest': ^27.0.0 + babel-jest: '>=27.0.0 <28' + esbuild: '*' + jest: ^27.0.0 + typescript: '>=3.8 <5.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/jest': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 27.5.1_ts-node@10.9.1 + jest-util: 27.5.1 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.3.8 + typescript: 4.7.4 + yargs-parser: 20.2.9 + dev: true + + /ts-jest/28.0.2_m4pn7vsromlf5ffrouypoapnnq: + resolution: {integrity: sha512-IOZMb3D0gx6IHO9ywPgiQxJ3Zl4ECylEFwoVpENB55aTn5sdO0Ptyx/7noNBxAaUff708RqQL4XBNxxOVjY0vQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@types/jest': ^27.0.0 + babel-jest: ^28.0.0 + esbuild: '*' + jest: ^28.0.0 + typescript: '>=4.3' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/jest': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.20.12 + '@types/jest': 28.1.0 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 28.1.0_@types+node@16.11.59 + jest-util: 28.1.3 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.3.8 + typescript: 4.9.5 + yargs-parser: 20.2.9 + dev: true + + /ts-jest/29.0.5_ecv55cdbauq6znr7ci2lzguwra: + resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.20.12 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.4.1 + jest-util: 29.4.2 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.3.8 + typescript: 4.9.5 + yargs-parser: 21.1.1 + dev: true + + /ts-node/10.9.1_hjximzan7wcxvjcbhhc47yzr2e: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 16.11.59 + acorn: 8.8.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.7.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true - /promise-timeout/1.3.0: - resolution: {integrity: sha512-5yANTE0tmi5++POym6OgtFmwfDvOXABD9oj/jLQr5GPEyuNEb7jH4wbbANJceJid49jwhi1RddxnhnEAb/doqg==} + /ts-pattern/3.3.3: + resolution: {integrity: sha512-Z5EFi6g6wyX3uDFHqxF5W5c5h663oZg9O6aOiAT7fqNu0HPSfCxtHzrQ7SblTy738Mrg2Ezorky8H5aUOm8Pvg==} - /prompts/2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + /tsconfck/2.0.2_typescript@4.9.5: + resolution: {integrity: sha512-H3DWlwKpow+GpVLm/2cpmok72pwRr1YFROV3YzAmvzfGFiC1zEM/mc9b7+1XnrxuXtEbhJ7xUSIqjPFbedp7aQ==} + engines: {node: ^14.13.1 || ^16 || >=18, pnpm: ^7.18.0} + hasBin: true + peerDependencies: + typescript: ^4.3.5 + peerDependenciesMeta: + typescript: + optional: true dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 + typescript: 4.9.5 + dev: true - /protobufjs/6.11.3: - resolution: {integrity: sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==} - requiresBuild: true + /tsconfig-paths/3.14.1: + resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/long': 4.0.2 - '@types/node': 18.7.11 - long: 4.0.0 - - /psl/1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: false - /punycode/2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} - engines: {node: '>=6'} + /tslib/1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: false - /qs/6.5.3: - resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} - engines: {node: '>=0.6'} + /tslib/2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - /randombytes/2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + /tsutils/3.21.0_typescript@4.9.5: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: - safe-buffer: 5.2.1 + tslib: 1.14.1 + typescript: 4.9.5 + dev: false - /randomfill/1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + /tunnel-agent/0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: - randombytes: 2.1.0 safe-buffer: 5.2.1 + dev: true - /react-is/17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - - /react-is/18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + /tweetnacl/0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + dev: true - /react-native-fetch-api/2.0.0: - resolution: {integrity: sha512-GOA8tc1EVYLnHvma/TU9VTgLOyralO7eATRuCDchQveXW9Fr9vXygyq9iwqmM7YRZ8qRJfEt9xOS7OYMdJvRFw==} + /type-check/0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} dependencies: - p-defer: 3.0.0 + prelude-ls: 1.1.2 - /readable-stream/3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} - engines: {node: '>= 6'} + /type-check/0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 + prelude-ls: 1.2.1 + dev: false - /receptacle/1.3.2: - resolution: {integrity: sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==} - dependencies: - ms: 2.1.3 + /type-detect/4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} - /request/2.88.2: - resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} - engines: {node: '>= 6'} - dependencies: - aws-sign2: 0.7.0 - aws4: 1.11.0 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - har-validator: 5.1.5 - http-signature: 1.2.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - oauth-sign: 0.9.0 - performance-now: 2.1.0 - qs: 6.5.3 - safe-buffer: 5.2.1 - tough-cookie: 2.5.0 - tunnel-agent: 0.6.0 - uuid: 3.4.0 + /type-fest/0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + dev: false - /require-directory/2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} + /type-fest/0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: false - /resolve-cwd/3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - dependencies: - resolve-from: 5.0.0 + /type-fest/0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} - /resolve-from/5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} + /type-is/1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: false - /resolve.exports/1.1.0: - resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} - engines: {node: '>=10'} + /typed-array-length/1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.10 + dev: false - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + /typedarray-to-buffer/3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: - is-core-module: 2.10.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 + is-typedarray: 1.0.0 - /retimer/2.0.0: - resolution: {integrity: sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg==} + /typescript/4.7.4: + resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} + engines: {node: '>=4.2.0'} + hasBin: true dev: true - /retimer/3.0.0: - resolution: {integrity: sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==} - - /retry/0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} + /typescript/4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true - /rimraf/3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + /uint8-varint/1.0.4: + resolution: {integrity: sha512-FHnaReHRIM7kHe/Ms0I2KGkuSY4o7ouhUJGJeiFEuYWGvBt4Y64+BJ3mV6DqmyYtYTZj4Pz8K/BmViSNFLRrVw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - glob: 7.2.3 + byte-access: 1.0.1 + longbits: 1.1.0 + uint8arraylist: 2.4.3 + uint8arrays: 4.0.3 + dev: false - /rxjs/7.5.6: - resolution: {integrity: sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==} + /uint8arraylist/2.4.3: + resolution: {integrity: sha512-oEVZr4/GrH87K0kjNce6z8pSCzLEPqHNLNR5sj8cJOySrTP8Vb/pMIbZKLJGhQKxm1TiZ31atNrpn820Pyqpow==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - tslib: 2.4.0 - - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - /safe-buffer/5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - /safer-buffer/2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + uint8arrays: 4.0.3 + dev: false - /sanitize-filename/1.6.3: - resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} + /uint8arrays/2.1.10: + resolution: {integrity: sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A==} dependencies: - truncate-utf8-bytes: 1.0.2 + multiformats: 9.9.0 + dev: true - /sax/1.2.4: - resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + /uint8arrays/3.1.1: + resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + dependencies: + multiformats: 9.9.0 + dev: true - /secp256k1/4.0.3: - resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} - engines: {node: '>=10.0.0'} - requiresBuild: true + /uint8arrays/4.0.3: + resolution: {integrity: sha512-b+aKlI2oTnxnfeSQWV1sMacqSNxqhtXySaH6bflvONGxF8V/fT3ZlYH7z2qgGfydsvpVo4JUgM/Ylyfl2YouCg==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - elliptic: 6.5.4 - node-addon-api: 2.0.2 - node-gyp-build: 4.5.0 + multiformats: 11.0.1 - /semver/6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + /unbox-primitive/1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: false - /semver/7.3.7: - resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} - engines: {node: '>=10'} + /undici/5.18.0: + resolution: {integrity: sha512-1iVwbhonhFytNdg0P4PqyIAXbdlVZVebtPDvuM36m66mRw4OGrCm2MYynJv/UENFLdP13J1nPVQzVE2zTs1OeA==} + engines: {node: '>=12.18'} dependencies: - lru-cache: 6.0.0 + busboy: 1.6.0 - /set-delayed-interval/1.0.0: - resolution: {integrity: sha512-29fhAwuZlLcuBnW/EwxvLcg2D3ELX+VBDNhnavs3YYkab72qmrcSeQNVdzl8EcPPahGQXhBM6MKdPLCQGMDakw==} + /unicode-canonical-property-names-ecmascript/2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: false - /shebang-command/2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + /unicode-match-property-ecmascript/2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} dependencies: - shebang-regex: 3.0.0 + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: false - /shebang-regex/3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + /unicode-match-property-value-ecmascript/2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: false - /shiki/0.10.1: - resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} + /unicode-property-aliases-ecmascript/2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: false + + /union/0.5.0: + resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} + engines: {node: '>= 0.8.0'} dependencies: - jsonc-parser: 3.1.0 - vscode-oniguruma: 1.6.2 - vscode-textmate: 5.2.0 + qs: 6.11.0 dev: true - /signal-exit/3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - /sisteransi/1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - /slash/3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + /unique-string/2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} - - /source-map-support/0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 + crypto-random-string: 2.0.0 + dev: false - /source-map/0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} + /universalify/0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} - /sprintf-js/1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + /universalify/2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: false - /sprintf-js/1.1.2: - resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} + /unordered-array-remove/1.0.2: + resolution: {integrity: sha512-45YsfD6svkgaCBNyvD+dFHm4qFX9g3wRSIVgWVPtm2OCnphvPxzJoe20ATsiNpNJrmzHifnxm+BN5F7gFT/4gw==} + dev: true - /sshpk/1.17.0: - resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} - engines: {node: '>=0.10.0'} - dependencies: - asn1: 0.2.6 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 + /unpipe/1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: false - /stable/0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - dev: true + /unquote/1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + dev: false - /stack-utils/2.0.5: - resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} - engines: {node: '>=10'} + /upath/1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + dev: false + + /update-browserslist-db/1.0.10_browserslist@4.21.5: + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' dependencies: - escape-string-regexp: 2.0.0 + browserslist: 4.21.5 + escalade: 3.1.1 + picocolors: 1.0.0 - /stream-to-it/0.2.4: - resolution: {integrity: sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==} + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - get-iterator: 1.0.2 + punycode: 2.3.0 - /streaming-iterables/6.2.0: - resolution: {integrity: sha512-3AYC8oB60WyD1ic7uHmN/vm2oRGzRnQ3XFBl/bFMDi1q1+nc5/vjMmiE4vroIya3jG59t87VpyAj/iXYxyw9AA==} - engines: {node: '>=10'} + /url-join/4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + dev: true - /string-length/4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} + /url-parse/1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 + querystringify: 2.2.0 + requires-port: 1.0.0 - /string-width/4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + /ursa-optional/0.10.2: + resolution: {integrity: sha512-TKdwuLboBn7M34RcvVTuQyhvrA8gYKapuVdm0nBP0mnBc7oECOfUQZrY91cefL3/nm64ZyrejSRrhTVdX7NG/A==} + engines: {node: '>=4'} + requiresBuild: true dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 + bindings: 1.5.0 + nan: 2.17.0 + dev: true - /string_decoder/1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 + /utf8-byte-length/1.0.4: + resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==} - /strip-ansi/6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + /util-deprecate/1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /util.promisify/1.0.1: + resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} dependencies: - ansi-regex: 5.0.1 + define-properties: 1.2.0 + es-abstract: 1.21.1 + has-symbols: 1.0.3 + object.getownpropertydescriptors: 2.1.5 + dev: false - /strip-bom/4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} + /utila/0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + dev: false - /strip-final-newline/2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} + /utils-merge/1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: false - /strip-json-comments/3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} + /uuid/3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + dev: true - /supports-color/5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 + /uuid/8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true - /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 + /v8-compile-cache-lib/3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true - /supports-color/8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + /v8-to-istanbul/8.1.1: + resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} + engines: {node: '>=10.12.0'} dependencies: - has-flag: 4.0.0 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + source-map: 0.7.4 - /supports-hyperlinks/2.2.0: - resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} - engines: {node: '>=8'} + /v8-to-istanbul/9.0.1: + resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} + engines: {node: '>=10.12.0'} dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 + '@jridgewell/trace-mapping': 0.3.17 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + dev: true - /supports-preserve-symlinks-flag/1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + /varint/5.0.2: + resolution: {integrity: sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==} + dev: true - /tar-stream/2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.0 + /varint/6.0.0: + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} - /terminal-link/2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} + /vary/1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: false + + /verror/1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.2.0 + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + dev: true - /test-exclude/6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} + /vite-plugin-replace/0.1.1_vite@4.0.4: + resolution: {integrity: sha512-v+okl3JNt2pf1jDYijw+WPVt6h9FWa/atTi+qnSFBqmKThLTDhlesx0r3bh+oFPmxRJmis5tNx9HtN6lGFoqWg==} + peerDependencies: + vite: ^2 dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 + vite: 4.0.4_@types+node@16.11.59 + dev: true - /threads/1.7.0: - resolution: {integrity: sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ==} + /vite-tsconfig-paths/4.0.3_egung5nfepmolqa7uavvqho3gq: + resolution: {integrity: sha512-gRO2Q/tOkV+9kMht5tz90+IaEKvW2zCnvwJV3tp2ruPNZOTM5rF+yXorJT4ggmAMYEaJ3nyXjx5P5jY5FwiZ+A==} + peerDependencies: + vite: '>2.0.0-0' dependencies: - callsites: 3.1.0 debug: 4.3.4 - is-observable: 2.1.0 - observable-fns: 0.6.1 - optionalDependencies: - tiny-worker: 2.3.0 + globrex: 0.1.2 + tsconfck: 2.0.2_typescript@4.9.5 + vite: 4.0.4_@types+node@16.11.59 transitivePeerDependencies: - supports-color + - typescript + dev: true - /timeout-abort-controller/1.1.1: - resolution: {integrity: sha512-BsF9i3NAJag6T0ZEjki9j654zoafI2X6ayuNd6Tp8+Ul6Tr5s4jo973qFeiWrRSweqvskC+AHDKUmIW4b7pdhQ==} + /vite/4.0.4_@types+node@16.11.59: + resolution: {integrity: sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true dependencies: - abort-controller: 3.0.0 - retimer: 2.0.0 + '@types/node': 16.11.59 + esbuild: 0.16.17 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 3.15.0 + optionalDependencies: + fsevents: 2.3.2 dev: true - /timeout-abort-controller/3.0.0: - resolution: {integrity: sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA==} + /w3c-hr-time/1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + deprecated: Use your platform's native performance.now() and performance.timeOrigin. dependencies: - retimer: 3.0.0 + browser-process-hrtime: 1.0.0 - /tiny-worker/2.3.0: - resolution: {integrity: sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==} - requiresBuild: true + /w3c-xmlserializer/2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} dependencies: - esm: 3.2.25 - optional: true + xml-name-validator: 3.0.0 - /tmpl/1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - - /to-fast-properties/2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} + /walker/1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 - /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + /watchpack/2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} dependencies: - is-number: 7.0.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.10 + dev: false - /tough-cookie/2.5.0: - resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} - engines: {node: '>=0.8'} + /wbuf/1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} dependencies: - psl: 1.9.0 - punycode: 2.1.1 + minimalistic-assert: 1.0.1 + dev: false - /truncate-utf8-bytes/1.0.2: - resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + /web-streams-polyfill/3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: true + + /web-vitals/2.1.4: + resolution: {integrity: sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==} + dev: false + + /webidl-conversions/3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: true + + /webidl-conversions/4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: false + + /webidl-conversions/5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + + /webidl-conversions/6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + + /webpack-dev-middleware/5.3.3_webpack@5.75.0: + resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 dependencies: - utf8-byte-length: 1.0.4 + colorette: 2.0.19 + memfs: 3.4.13 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.0.0 + webpack: 5.75.0 + dev: false - /ts-jest/27.1.5_rl5xm3oiydas7snsul2pa47p2m: - resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /webpack-dev-server/4.11.1_webpack@5.75.0: + resolution: {integrity: sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==} + engines: {node: '>= 12.13.0'} hasBin: true peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@types/jest': ^27.0.0 - babel-jest: '>=27.0.0 <28' - esbuild: '*' - jest: ^27.0.0 - typescript: '>=3.8 <5.0' + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' peerDependenciesMeta: - '@babel/core': - optional: true - '@types/jest': - optional: true - babel-jest: - optional: true - esbuild: + webpack-cli: optional: true dependencies: - '@babel/core': 7.18.13 - '@types/jest': 27.5.2 - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - jest: 28.1.3 - jest-util: 27.5.1 - json5: 2.2.1 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.3.7 - typescript: 4.7.4 - yargs-parser: 20.2.9 + '@types/bonjour': 3.5.10 + '@types/connect-history-api-fallback': 1.3.5 + '@types/express': 4.17.17 + '@types/serve-index': 1.9.1 + '@types/serve-static': 1.15.0 + '@types/sockjs': 0.3.33 + '@types/ws': 8.5.4 + ansi-html-community: 0.0.8 + bonjour-service: 1.1.0 + chokidar: 3.5.3 + colorette: 2.0.19 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.18.2 + graceful-fs: 4.2.10 + html-entities: 2.3.3 + http-proxy-middleware: 2.0.6_@types+express@4.17.17 + ipaddr.js: 2.0.1 + open: 8.4.1 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.0.0 + selfsigned: 2.1.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack: 5.75.0 + webpack-dev-middleware: 5.3.3_webpack@5.75.0 + ws: 8.12.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: false + + /webpack-manifest-plugin/4.1.1_webpack@5.75.0: + resolution: {integrity: sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==} + engines: {node: '>=12.22.0'} + peerDependencies: + webpack: ^4.44.2 || ^5.47.0 + dependencies: + tapable: 2.2.1 + webpack: 5.75.0 + webpack-sources: 2.3.1 + dev: false + + /webpack-sources/1.4.3: + resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + dev: false + + /webpack-sources/2.3.1: + resolution: {integrity: sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==} + engines: {node: '>=10.13.0'} + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + dev: false - /ts-jest/28.0.8_wnrrwh7x4gcdskobbfqnvknnyi: - resolution: {integrity: sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /webpack-sources/3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: false + + /webpack/5.75.0: + resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==} + engines: {node: '>=10.13.0'} hasBin: true peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/types': ^28.0.0 - babel-jest: ^28.0.0 - esbuild: '*' - jest: ^28.0.0 - typescript: '>=4.3' + webpack-cli: '*' peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: + webpack-cli: optional: true dependencies: - '@babel/core': 7.18.13 - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - jest: 28.1.3 - jest-util: 28.1.3 - json5: 2.2.1 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.3.7 - typescript: 4.7.4 - yargs-parser: 21.1.1 - dev: true + '@types/eslint-scope': 3.7.4 + '@types/estree': 0.0.51 + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/wasm-edit': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + acorn: 8.8.2 + acorn-import-assertions: 1.8.0_acorn@8.8.2 + browserslist: 4.21.5 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.12.0 + es-module-lexer: 0.9.3 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.10 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.1.1 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.6_webpack@5.75.0 + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: false - /ts-node/10.9.1_leegklmkepybzc4ng4qys4ftou: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true + /websocket-driver/0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 18.7.14 - acorn: 8.8.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.7.4 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 dev: false - /ts-pattern/3.3.3: - resolution: {integrity: sha512-Z5EFi6g6wyX3uDFHqxF5W5c5h663oZg9O6aOiAT7fqNu0HPSfCxtHzrQ7SblTy738Mrg2Ezorky8H5aUOm8Pvg==} + /websocket-extensions/0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + dev: false - /tslib/2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + /whatwg-encoding/1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + dependencies: + iconv-lite: 0.4.24 - /tunnel-agent/0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + /whatwg-encoding/2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} dependencies: - safe-buffer: 5.2.1 + iconv-lite: 0.6.3 + dev: true - /tweetnacl/0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + /whatwg-fetch/3.6.2: + resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==} + dev: false - /type-detect/4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} + /whatwg-mimetype/2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - /type-fest/0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + /whatwg-url/5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: true + + /whatwg-url/7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: false + + /whatwg-url/8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} engines: {node: '>=10'} + dependencies: + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 - /typedoc/0.22.18_typescript@4.7.4: - resolution: {integrity: sha512-NK9RlLhRUGMvc6Rw5USEYgT4DVAUFk7IF7Q6MYfpJ88KnTZP7EneEa4RcP+tX1auAcz7QT1Iy0bUSZBYYHdoyA==} - engines: {node: '>= 12.10.0'} - hasBin: true - peerDependencies: - typescript: 4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x || 4.5.x || 4.6.x || 4.7.x + /wherearewe/1.0.2: + resolution: {integrity: sha512-HyLZ7n1Yox+w1qWaFEgP/sMs5D7ka2UXmoVNaY0XzbEHLGljo4ScBchYm6cWRYNO33tmFX3Mgg4BiZkDOjihyw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} dependencies: - glob: 8.0.3 - lunr: 2.3.9 - marked: 4.0.19 - minimatch: 5.1.0 - shiki: 0.10.1 - typescript: 4.7.4 + is-electron: 2.2.1 dev: true - /typescript/4.7.4: - resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} - engines: {node: '>=4.2.0'} + /wherearewe/2.0.1: + resolution: {integrity: sha512-XUguZbDxCA2wBn2LoFtcEhXL6AXo+hVjGonwhSTTTU9SzbWG8Xu3onNIpzf9j/mYUcJQ0f+m37SzG77G851uFw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + dependencies: + is-electron: 2.2.1 + dev: false - /uint8arrays/2.1.10: - resolution: {integrity: sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A==} + /which-boxed-primitive/1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: - multiformats: 9.9.0 - dev: true + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: false - /uint8arrays/3.1.0: - resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + /which-collection/1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: - multiformats: 9.9.0 + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: false - /unordered-array-remove/1.0.2: - resolution: {integrity: sha512-45YsfD6svkgaCBNyvD+dFHm4qFX9g3wRSIVgWVPtm2OCnphvPxzJoe20ATsiNpNJrmzHifnxm+BN5F7gFT/4gw==} + /which-typed-array/1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + dev: false - /update-browserslist-db/1.0.5_browserslist@4.21.3: - resolution: {integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==} + /which/1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.3 - escalade: 3.1.1 - picocolors: 1.0.0 + isexe: 2.0.0 + dev: false - /uri-js/4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true dependencies: - punycode: 2.1.1 + isexe: 2.0.0 - /ursa-optional/0.10.2: - resolution: {integrity: sha512-TKdwuLboBn7M34RcvVTuQyhvrA8gYKapuVdm0nBP0mnBc7oECOfUQZrY91cefL3/nm64ZyrejSRrhTVdX7NG/A==} - engines: {node: '>=4'} - requiresBuild: true + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + + /workbox-background-sync/6.5.4: + resolution: {integrity: sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==} dependencies: - bindings: 1.5.0 - nan: 2.16.0 + idb: 7.1.1 + workbox-core: 6.5.4 + dev: false - /utf8-byte-length/1.0.4: - resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==} + /workbox-broadcast-update/6.5.4: + resolution: {integrity: sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==} + dependencies: + workbox-core: 6.5.4 + dev: false - /util-deprecate/1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + /workbox-build/6.5.4: + resolution: {integrity: sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==} + engines: {node: '>=10.0.0'} + dependencies: + '@apideck/better-ajv-errors': 0.3.6_ajv@8.12.0 + '@babel/core': 7.20.12 + '@babel/preset-env': 7.20.2_@babel+core@7.20.12 + '@babel/runtime': 7.20.13 + '@rollup/plugin-babel': 5.3.1_3dsfpkpoyvuuxyfgdbpn4j4uzm + '@rollup/plugin-node-resolve': 11.2.1_rollup@2.79.1 + '@rollup/plugin-replace': 2.4.2_rollup@2.79.1 + '@surma/rollup-plugin-off-main-thread': 2.2.3 + ajv: 8.12.0 + common-tags: 1.8.2 + fast-json-stable-stringify: 2.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + lodash: 4.17.21 + pretty-bytes: 5.6.0 + rollup: 2.79.1 + rollup-plugin-terser: 7.0.2_rollup@2.79.1 + source-map: 0.8.0-beta.0 + stringify-object: 3.3.0 + strip-comments: 2.0.1 + tempy: 0.6.0 + upath: 1.2.0 + workbox-background-sync: 6.5.4 + workbox-broadcast-update: 6.5.4 + workbox-cacheable-response: 6.5.4 + workbox-core: 6.5.4 + workbox-expiration: 6.5.4 + workbox-google-analytics: 6.5.4 + workbox-navigation-preload: 6.5.4 + workbox-precaching: 6.5.4 + workbox-range-requests: 6.5.4 + workbox-recipes: 6.5.4 + workbox-routing: 6.5.4 + workbox-strategies: 6.5.4 + workbox-streams: 6.5.4 + workbox-sw: 6.5.4 + workbox-window: 6.5.4 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + dev: false - /uuid/3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + /workbox-cacheable-response/6.5.4: + resolution: {integrity: sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==} + dependencies: + workbox-core: 6.5.4 + dev: false - /uuid/8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + /workbox-core/6.5.4: + resolution: {integrity: sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==} + dev: false - /v8-compile-cache-lib/3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + /workbox-expiration/6.5.4: + resolution: {integrity: sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==} + dependencies: + idb: 7.1.1 + workbox-core: 6.5.4 dev: false - /v8-to-istanbul/9.0.1: - resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} - engines: {node: '>=10.12.0'} + /workbox-google-analytics/6.5.4: + resolution: {integrity: sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==} dependencies: - '@jridgewell/trace-mapping': 0.3.15 - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.8.0 + workbox-background-sync: 6.5.4 + workbox-core: 6.5.4 + workbox-routing: 6.5.4 + workbox-strategies: 6.5.4 + dev: false - /varint/5.0.2: - resolution: {integrity: sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==} + /workbox-navigation-preload/6.5.4: + resolution: {integrity: sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==} + dependencies: + workbox-core: 6.5.4 + dev: false - /varint/6.0.0: - resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + /workbox-precaching/6.5.4: + resolution: {integrity: sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==} + dependencies: + workbox-core: 6.5.4 + workbox-routing: 6.5.4 + workbox-strategies: 6.5.4 + dev: false - /verror/1.10.0: - resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} - engines: {'0': node >=0.6.0} + /workbox-range-requests/6.5.4: + resolution: {integrity: sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==} dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 + workbox-core: 6.5.4 + dev: false - /vscode-oniguruma/1.6.2: - resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==} - dev: true + /workbox-recipes/6.5.4: + resolution: {integrity: sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==} + dependencies: + workbox-cacheable-response: 6.5.4 + workbox-core: 6.5.4 + workbox-expiration: 6.5.4 + workbox-precaching: 6.5.4 + workbox-routing: 6.5.4 + workbox-strategies: 6.5.4 + dev: false - /vscode-textmate/5.2.0: - resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} - dev: true + /workbox-routing/6.5.4: + resolution: {integrity: sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==} + dependencies: + workbox-core: 6.5.4 + dev: false - /walker/1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + /workbox-strategies/6.5.4: + resolution: {integrity: sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==} dependencies: - makeerror: 1.0.12 + workbox-core: 6.5.4 + dev: false - /web-streams-polyfill/3.2.1: - resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} - engines: {node: '>= 8'} + /workbox-streams/6.5.4: + resolution: {integrity: sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==} + dependencies: + workbox-core: 6.5.4 + workbox-routing: 6.5.4 + dev: false - /wherearewe/1.0.2: - resolution: {integrity: sha512-HyLZ7n1Yox+w1qWaFEgP/sMs5D7ka2UXmoVNaY0XzbEHLGljo4ScBchYm6cWRYNO33tmFX3Mgg4BiZkDOjihyw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + /workbox-sw/6.5.4: + resolution: {integrity: sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==} + dev: false + + /workbox-webpack-plugin/6.5.4_webpack@5.75.0: + resolution: {integrity: sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==} + engines: {node: '>=10.0.0'} + peerDependencies: + webpack: ^4.4.0 || ^5.9.0 dependencies: - is-electron: 2.2.1 + fast-json-stable-stringify: 2.1.0 + pretty-bytes: 5.6.0 + upath: 1.2.0 + webpack: 5.75.0 + webpack-sources: 1.4.3 + workbox-build: 6.5.4 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + dev: false - /which/2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} + /workbox-window/6.5.4: + resolution: {integrity: sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==} dependencies: - isexe: 2.0.0 + '@types/trusted-types': 2.0.2 + workbox-core: 6.5.4 + dev: false /wrap-ansi/7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} @@ -4405,12 +15376,21 @@ packages: /wrappy/1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /write-file-atomic/3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + /write-file-atomic/4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 + dev: true /ws/7.5.9: resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} @@ -4424,21 +15404,67 @@ packages: utf-8-validate: optional: true + /ws/8.12.0: + resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /xml-name-validator/3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + /xml2js/0.1.14: resolution: {integrity: sha512-pbdws4PPPNc1HPluSUKamY4GWMk592K7qwcj6BExbVOhhubub8+pMda/ql68b6L3luZs/OGjGSB5goV7SnmgnA==} dependencies: sax: 1.2.4 + dev: true + + /xml2js/0.4.23: + resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} + engines: {node: '>=4.0.0'} + dependencies: + sax: 1.2.4 + xmlbuilder: 11.0.1 + dev: false + + /xmlbuilder/11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + dev: false + + /xmlchars/2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} /xsalsa20/1.2.0: resolution: {integrity: sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w==} + /xtend/4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: false + /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} + /yallist/3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + /yaml/1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: false + /yargs-parser/20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -4446,10 +15472,11 @@ packages: /yargs-parser/21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + dev: true - /yargs/17.5.1: - resolution: {integrity: sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==} - engines: {node: '>=12'} + /yargs/16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} dependencies: cliui: 7.0.4 escalade: 3.1.1 @@ -4457,13 +15484,31 @@ packages: require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 + yargs-parser: 20.2.9 + + /yargs/17.6.2: + resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 yargs-parser: 21.1.1 + dev: true /yn/3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} - dev: false + dev: true /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + + /yocto-queue/1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: false diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..b5bac564c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "lib": ["es2015", "dom"], + "outDir": "./dist/", + "target": "ESNext", + "module": "ESNext", + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "allowJs": true, + "declaration": true, + "moduleResolution": "nodenext" + } +} diff --git a/typedoc.json b/typedoc.json deleted file mode 100644 index 7e0dce5b7..000000000 --- a/typedoc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "readme": "./typedoc.md", - "theme": "default", - "out": "docs", - "excludePrivate": true, - "entryPoints": ["packages/fluence-js/src/index.ts"] -} diff --git a/typedoc.md b/typedoc.md deleted file mode 100644 index 5916cd78e..000000000 --- a/typedoc.md +++ /dev/null @@ -1,16 +0,0 @@ -# Fluence JS - -To start developing applications with Fluence JS refer to the official [documentation](https://fluence.dev/docs/build/fluence-js/) - -Fluence JS is an implementation of the Fluence protocol for JavaScript-based environments. It can connect browsers, Node.js applications, and so on to the Fluence p2p network. - -Similar to the [Rust Fluence Peer implementation](https://github.com/fluencelabs/fluence) it includes: - -- Peer-to-peer communication layer (via [js-libp2p](https://github.com/libp2p/js-libp2p)) -- [Aqua VM](https://github.com/fluencelabs/aquavm) -- Builtin services - -Fluence JS can call services and functions on the Fluence network, and expose new APIs to the p2p network directly from TypeScript and JavaScript. -[Aqua language](https://github.com/fluencelabs/aqua) uses Fluence JS as a compilation target, and they are designed to [work in tandem](https://fluence.dev/docs/build/fluence-js/in-depth#understanding-the-aqua-compiler-output). - -Fluence JS can be used with any framework of your choice \(or even without frameworks\).