From 2790782810a50356219ee20784be4ae020547b87 Mon Sep 17 00:00:00 2001 From: DaevMithran <61043607+DaevMithran@users.noreply.github.com> Date: Tue, 31 Jan 2023 18:50:51 +0530 Subject: [PATCH] feat!: Release V2 registrar (#77) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * build: Add cheqd sdk official beta package (#22) * chore(release): 1.1.3-develop.1 [skip ci] ## [1.1.3-develop.1](https://github.com/cheqd/did-registrar/compare/1.1.2...1.1.3-develop.1) (2022-10-26) * feat: integrate v2 protos && support resource creation * feat: Support deactivate did tx * feat: Create address from mnemonic * feat: Support mnemonic secret && Update validation and swagger * build: Upgade cheqd sdk * chore(release): 1.2.0-develop.1 [skip ci] ## [1.2.0-develop.1](https://github.com/cheqd/did-registrar/compare/1.1.3-develop.1...1.2.0-develop.1) (2023-01-03) ### Features * Create address from mnemonic ([f706427](https://github.com/cheqd/did-registrar/commit/f7064272b95d7486e97aa6293ef8122823128923)) * integrate v2 protos && support resource creation ([53d9f20](https://github.com/cheqd/did-registrar/commit/53d9f2065e2163a2958e4b505458b68c3b32a5c6)) * Integrate v2protos ([#53](https://github.com/cheqd/did-registrar/issues/53)) ([4b416a1](https://github.com/cheqd/did-registrar/commit/4b416a18d6174dd06edc9f20b2ffe99c2056f38e)) * Support deactivate did tx ([ea4b28f](https://github.com/cheqd/did-registrar/commit/ea4b28f7a42f666e75f377595a79ac443dec39ac)) * Support mnemonic secret && Update validation and swagger ([c5bafed](https://github.com/cheqd/did-registrar/commit/c5bafed3f294637f3389789d21740d25634951f9)) * feat: Support Client managed secret mode (#66) * feat: Update payload type * feat: Support signing response * build: Fix linting error * feat: Add node-cache * feat: Update signature type * feat: Update resource creation * feat: Update helper method * feat: Update swagger * build: Upgrade cheqd sdk * fix: rpc urls * feat: Update error handling * lint: Fix swagger linting errors * chore(release): 1.2.0-develop.2 [skip ci] ## [1.2.0-develop.2](https://github.com/cheqd/did-registrar/compare/1.2.0-develop.1...1.2.0-develop.2) (2023-01-25) ### Features * Support Client managed secret mode ([#66](https://github.com/cheqd/did-registrar/issues/66)) ([a8fe2b4](https://github.com/cheqd/did-registrar/commit/a8fe2b493abda38e967ab9af30f1b4f51ae61f8c)) * fix: Env change (#67) * chore(release): 1.2.0-develop.3 [skip ci] ## [1.2.0-develop.3](https://github.com/cheqd/did-registrar/compare/1.2.0-develop.2...1.2.0-develop.3) (2023-01-25) ### Bug Fixes * Env change ([#67](https://github.com/cheqd/did-registrar/issues/67)) ([c3dcef9](https://github.com/cheqd/did-registrar/commit/c3dcef99c2c598f05d8502af724beef3034f0d92)) * feat: Upgrade sdk && refactor * feat: Remove internal secret mode * feat!: Refactor code according to latest sdk * chore(release): 2.0.0-develop.1 [skip ci] ## [2.0.0-develop.1](https://github.com/cheqd/did-registrar/compare/1.2.0-develop.3...2.0.0-develop.1) (2023-01-30) ### ⚠ BREAKING CHANGES * Refactor code according to latest sdk ### Features * Refactor code according to latest sdk ([efcc992](https://github.com/cheqd/did-registrar/commit/efcc9923ec8285a082caf09020c5cbfb453746e6)) * Remove internal secret mode ([1978583](https://github.com/cheqd/did-registrar/commit/1978583e434c08b6e31e37f6d2342d9df09f138d)) * Upgrade sdk && refactor ([8854932](https://github.com/cheqd/did-registrar/commit/8854932a8b8cf33d5aef5ab19770a8052b197846)) * fix: DID Document validation (#73) * fix: DID Document validation * feat: Update error handling * fix: Deactivate DID bug * chore(release): 2.0.0-develop.2 [skip ci] ## [2.0.0-develop.2](https://github.com/cheqd/did-registrar/compare/2.0.0-develop.1...2.0.0-develop.2) (2023-01-31) ### Bug Fixes * DID Document validation ([#73](https://github.com/cheqd/did-registrar/issues/73)) ([c963e78](https://github.com/cheqd/did-registrar/commit/c963e78535aa3c63901b865db9705e7c29da7d49)) * docs: Update Readme (#74) * docs: Update Readme * feat: Update swagger * chore(release): 2.0.0-develop.3 [skip ci] ## [2.0.0-develop.3](https://github.com/cheqd/did-registrar/compare/2.0.0-develop.2...2.0.0-develop.3) (2023-01-31) --------- Co-authored-by: semantic-release-bot --- .github/workflows/release.yml | 2 +- CHANGELOG.md | 49 + Dockerfile | 8 +- README.md | 43 +- env.example | 5 +- package-lock.json | 1950 ++++++++++++--------------------- package.json | 10 +- src/app.ts | 13 +- src/controllers/cheqd.ts | 40 +- src/controllers/did.ts | 302 +++-- src/controllers/resource.ts | 120 ++ src/controllers/store.ts | 51 + src/helpers/helpers.ts | 73 +- src/helpers/response.ts | 195 ++++ src/service/cheqd.ts | 95 +- src/types/constants.ts | 16 + src/types/environment.d.ts | 6 +- src/types/types.ts | 76 +- swagger.json | 412 ++++--- 19 files changed, 1889 insertions(+), 1577 deletions(-) create mode 100644 src/controllers/resource.ts create mode 100644 src/controllers/store.ts create mode 100644 src/helpers/response.ts create mode 100644 src/types/constants.ts diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 960794e..4d52e82 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,7 +51,7 @@ jobs: id: set-version run: | VERSION=$( git describe --tags ${{ github.sha }}) - echo ::set-output name=VERSION::"$VERSION" + echo "VERSION=$VERSION" >> "$GITHUB_OUTPUT" release-docker: diff --git a/CHANGELOG.md b/CHANGELOG.md index 04aca06..24a46fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,54 @@ # Changelog +## [2.0.0-develop.3](https://github.com/cheqd/did-registrar/compare/2.0.0-develop.2...2.0.0-develop.3) (2023-01-31) + +## [2.0.0-develop.2](https://github.com/cheqd/did-registrar/compare/2.0.0-develop.1...2.0.0-develop.2) (2023-01-31) + + +### Bug Fixes + +* DID Document validation ([#73](https://github.com/cheqd/did-registrar/issues/73)) ([c963e78](https://github.com/cheqd/did-registrar/commit/c963e78535aa3c63901b865db9705e7c29da7d49)) + +## [2.0.0-develop.1](https://github.com/cheqd/did-registrar/compare/1.2.0-develop.3...2.0.0-develop.1) (2023-01-30) + + +### ⚠ BREAKING CHANGES + +* Refactor code according to latest sdk + +### Features + +* Refactor code according to latest sdk ([efcc992](https://github.com/cheqd/did-registrar/commit/efcc9923ec8285a082caf09020c5cbfb453746e6)) +* Remove internal secret mode ([1978583](https://github.com/cheqd/did-registrar/commit/1978583e434c08b6e31e37f6d2342d9df09f138d)) +* Upgrade sdk && refactor ([8854932](https://github.com/cheqd/did-registrar/commit/8854932a8b8cf33d5aef5ab19770a8052b197846)) + +## [1.2.0-develop.3](https://github.com/cheqd/did-registrar/compare/1.2.0-develop.2...1.2.0-develop.3) (2023-01-25) + + +### Bug Fixes + +* Env change ([#67](https://github.com/cheqd/did-registrar/issues/67)) ([c3dcef9](https://github.com/cheqd/did-registrar/commit/c3dcef99c2c598f05d8502af724beef3034f0d92)) + +## [1.2.0-develop.2](https://github.com/cheqd/did-registrar/compare/1.2.0-develop.1...1.2.0-develop.2) (2023-01-25) + + +### Features + +* Support Client managed secret mode ([#66](https://github.com/cheqd/did-registrar/issues/66)) ([a8fe2b4](https://github.com/cheqd/did-registrar/commit/a8fe2b493abda38e967ab9af30f1b4f51ae61f8c)) + +## [1.2.0-develop.1](https://github.com/cheqd/did-registrar/compare/1.1.3-develop.1...1.2.0-develop.1) (2023-01-03) + + +### Features + +* Create address from mnemonic ([f706427](https://github.com/cheqd/did-registrar/commit/f7064272b95d7486e97aa6293ef8122823128923)) +* integrate v2 protos && support resource creation ([53d9f20](https://github.com/cheqd/did-registrar/commit/53d9f2065e2163a2958e4b505458b68c3b32a5c6)) +* Integrate v2protos ([#53](https://github.com/cheqd/did-registrar/issues/53)) ([4b416a1](https://github.com/cheqd/did-registrar/commit/4b416a18d6174dd06edc9f20b2ffe99c2056f38e)) +* Support deactivate did tx ([ea4b28f](https://github.com/cheqd/did-registrar/commit/ea4b28f7a42f666e75f377595a79ac443dec39ac)) +* Support mnemonic secret && Update validation and swagger ([c5bafed](https://github.com/cheqd/did-registrar/commit/c5bafed3f294637f3389789d21740d25634951f9)) + +## [1.1.3-develop.1](https://github.com/cheqd/did-registrar/compare/1.1.2...1.1.3-develop.1) (2022-10-26) + ## [1.1.5](https://github.com/cheqd/did-registrar/compare/1.1.4...1.1.5) (2022-11-29) ## [1.1.4](https://github.com/cheqd/did-registrar/compare/1.1.3...1.1.4) (2022-11-09) diff --git a/Dockerfile b/Dockerfile index d20c9cf..37c7d23 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,8 +32,8 @@ COPY --from=builder /home/node/app/dist . ARG NODE_ENV=production ARG NPM_CONFIG_LOGLEVEL=warn ARG PORT=3000 -ARG FEE_PAYER_ADDRESS -ARG FEE_PAYER_MNEMONIC +ARG FEE_PAYER_TESTNET_MNEMONIC +ARG FEE_PAYER_MAINNET_MNEMONIC # NPM environment variables ENV NODE_ENV ${NODE_ENV} @@ -41,8 +41,8 @@ ENV NPM_CONFIG_LOGLEVEL ${NPM_CONFIG_LOGLEVEL} ENV PORT ${PORT} # App-specific environment variables -ENV FEE_PAYER_ADDRESS ${FEE_PAYER_ADDRESS} -ENV FEE_PAYER_MNEMONIC ${FEE_PAYER_MNEMONIC} +ENV FEE_PAYER_TESTNET_MNEMONIC ${FEE_PAYER_TESTNET_MNEMONIC} +ENV FEE_PAYER_MAINNET_MNEMONIC ${FEE_PAYER_MAINNET_MNEMONIC} # Install pre-requisites RUN npm install swagger-ui-express@4.5.0 && \ diff --git a/README.md b/README.md index ddda82a..6170ea1 100644 --- a/README.md +++ b/README.md @@ -14,16 +14,55 @@ The purpose of this service is to provide a [Universal Registrar driver](https:/ - `/create` - `/update` +- `/deactivate` +- `/create-resource` - `/api-docs` ## 🧑‍💻🛠 Developer Guide ### Setup -To build and run in Docker, use the [Dockerfile](Dockerfile) provided. +#### Environment variable configuration + +Environment variables needed for the Registrar are + +1. `FEE_PAYER_TESTNET_MNEMONIC` : The cosmos payer mnemonic for the Cheqd Mainnet +2. `FEE_PAYER_MAINNET_MNEMONIC` : The cosmos payer mnemonic for the Cheqd Tesnet, By default it's the Testnet Faucet +3. `LOCAL_STORE_TTL` (default: `600`): The time in seconds for the registrar to store data in cache +4. `PORT` (default: `3000`): The port number + + +Clone the repository + +```bash +git clone git@github.com:cheqd/did-registrar.git +cd did-registrar +``` + +*** + +### Running a DID Registrar Using Docker + +Build Docker container image using Dockerfile: + +```bash +docker build --target cheqd-did-registrar . --tag did-registrar:local +``` + +Run the Docker container (modify according to your own build tags and other desired parameters): + +```bash +docker run -it did-registrar:local +``` + +*** + +### Running a DID Registrar Locally ```bash -docker build -t cheqd-did-registrar . +npm install +npm run build +npm start ``` ## 🐞 Bug reports & 🤔 feature requests diff --git a/env.example b/env.example index 49072fb..e8f5674 100644 --- a/env.example +++ b/env.example @@ -1,3 +1,4 @@ -FEE_PAYER_ADDRESS=cheqd1ew***********u7tc98v -FEE_PAYER_MNEMONIC= +FEE_PAYER_MAINNET_MNEMONIC= +FEE_PAYER_TESTNET_MNEMONIC= PORT=3000 +LOCAL_STORE_TTL=600 diff --git a/package-lock.json b/package-lock.json index ebf1a72..41d20cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,22 @@ { "name": "@cheqd/did-registrar", - "version": "1.1.4", + "version": "2.0.0-develop.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@cheqd/did-registrar", - "version": "1.1.4", + "version": "2.0.0-develop.3", "license": "Apache-2.0", "dependencies": { - "@cheqd/sdk": "npm:@daevm/cheqd-sdk@^1.3.5", - "@cheqd/ts-proto": "^1.0.15", + "@cheqd/sdk": "2.0.0", + "@cheqd/ts-proto": "^2.0.0-develop.1", "@cosmjs/proto-signing": "^0.29.4", "dotenv": "^16.0.3", "express": "^4.18.2", "express-validator": "^6.14.2", "helmet": "^6.0.1", + "node-cache": "^5.1.2", "node-fetch": "^3.3.0", "swagger-ui-express": "^4.6.0" }, @@ -31,6 +32,7 @@ "@types/node": "^18.11.9", "@types/node-fetch": "^2.6.2", "@types/swagger-ui-express": "^4.1.3", + "@types/uuid": "^9.0.0", "@typescript-eslint/eslint-plugin": "^5.45.0", "@typescript-eslint/parser": "^5.45.0", "conventional-changelog-conventionalcommits": "^5.0.0", @@ -150,84 +152,31 @@ } }, "node_modules/@cheqd/sdk": { - "name": "@daevm/cheqd-sdk", - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@daevm/cheqd-sdk/-/cheqd-sdk-1.3.5.tgz", - "integrity": "sha512-QGHgtbcy3fxSxZX1pTPVH0OaPOE5FbGxUex3VnkcVHWEdYfSr+CQq9Jkhykxgn2jIM1zVELBO/u2DHnaPK74iw==", - "dependencies": { - "@cheqd/ts-proto": "^1.0.12", - "@cosmjs/amino": "^0.28.11", - "@cosmjs/encoding": "^0.28.11", - "@cosmjs/math": "^0.28.11", - "@cosmjs/proto-signing": "^0.28.10", - "@cosmjs/stargate": "^0.28.13", - "@cosmjs/tendermint-rpc": "^0.28.10", - "@cosmjs/utils": "^0.28.11", - "@stablelib/ed25519": "^1.0.3", - "cosmjs-types": "^0.5.1", - "did-jwt": "^6.6.0", - "multiformats": "^9.7.1", - "uint8arrays": "^3.1.0", - "uuid": "^8.3.2" - } - }, - "node_modules/@cheqd/sdk/node_modules/@cosmjs/proto-signing": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.28.13.tgz", - "integrity": "sha512-nSl/2ZLsUJYz3Ad0RY3ihZUgRHIow2OnYqKsESMu+3RA/jTi9bDYhiBu8mNMHI0xrEJry918B2CyI56pOUHdPQ==", - "dependencies": { - "@cosmjs/amino": "0.28.13", - "@cosmjs/crypto": "0.28.13", - "@cosmjs/encoding": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/utils": "0.28.13", - "cosmjs-types": "^0.4.0", - "long": "^4.0.0" - } - }, - "node_modules/@cheqd/sdk/node_modules/@cosmjs/proto-signing/node_modules/cosmjs-types": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.4.1.tgz", - "integrity": "sha512-I7E/cHkIgoJzMNQdFF0YVqPlaTqrqKHrskuSTIqlEyxfB5Lf3WKCajSXVK2yHOfOFfSux/RxEdpMzw/eO4DIog==", - "dependencies": { - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } - }, - "node_modules/@cheqd/sdk/node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/@cheqd/sdk/node_modules/protobufjs": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", - "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", - "hasInstallScript": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@cheqd/sdk/-/sdk-2.0.0.tgz", + "integrity": "sha512-upETPipHtQxQWheBIRvQ+ERBoutzV5cfqd2ayEqvVvnm6HrYrZzKoNQu3U8nRv3kRtjNUKx47Oxqcnu2kKdTqA==", "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.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" + "@cheqd/ts-proto": "^2.0.0-develop.1", + "@cosmjs/amino": "^0.29.4", + "@cosmjs/encoding": "^0.29.4", + "@cosmjs/math": "^0.29.4", + "@cosmjs/proto-signing": "^0.29.4", + "@cosmjs/stargate": "^0.29.4", + "@cosmjs/tendermint-rpc": "^0.29.4", + "@cosmjs/utils": "^0.29.4", + "@stablelib/ed25519": "^1.0.3", + "cosmjs-types": "^0.5.2", + "did-jwt": "^6.9.0", + "did-resolver": "^4.0.1", + "file-type": "^16.5.4", + "multiformats": "^9.9.0", + "uuid": "^9.0.0" } }, "node_modules/@cheqd/ts-proto": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@cheqd/ts-proto/-/ts-proto-1.0.15.tgz", - "integrity": "sha512-S2/tomBAuNSMMkFfeNjLI7fJ5ckZLXODFV398lK0j3x4MDianLPJGV6WRR0W/eFva5B32OP3mRaCEw4H8ZRKEA==", + "version": "2.0.0-develop.1", + "resolved": "https://registry.npmjs.org/@cheqd/ts-proto/-/ts-proto-2.0.0-develop.1.tgz", + "integrity": "sha512-+dsHyZABC1spbkTjO1dGJOF20sHUumnDIoKGZtrWiu15iIa9vg2IAgKKVyLc7aBs04dxVs/888KN03zAWJvyJQ==", "dependencies": { "long": "^5.2.1", "protobufjs": "~7.1.1" @@ -283,34 +232,34 @@ } }, "node_modules/@cosmjs/amino": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.28.13.tgz", - "integrity": "sha512-IHnH2zGwaY69qT4mVAavr/pfzx6YE+ud1NHJbvVePlbGiz68CXTi5LHR+K0lrKB5mQ7E+ZErWz2mw5U/x+V1wQ==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.29.5.tgz", + "integrity": "sha512-Qo8jpC0BiziTSUqpkNatBcwtKNhCovUnFul9SlT/74JUCdLYaeG5hxr3q1cssQt++l4LvlcpF+OUXL48XjNjLw==", "dependencies": { - "@cosmjs/crypto": "0.28.13", - "@cosmjs/encoding": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/utils": "0.28.13" + "@cosmjs/crypto": "^0.29.5", + "@cosmjs/encoding": "^0.29.5", + "@cosmjs/math": "^0.29.5", + "@cosmjs/utils": "^0.29.5" } }, "node_modules/@cosmjs/crypto": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.28.13.tgz", - "integrity": "sha512-ynKfM0q/tMBQMHJby6ad8lR3gkgBKaelQhIsCZTjClsnuC7oYT9y3ThSZCUWr7Pa9h0J8ahU2YV2oFWFVWJQzQ==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.29.5.tgz", + "integrity": "sha512-2bKkaLGictaNL0UipQCL6C1afaisv6k8Wr/GCLx9FqiyFkh9ZgRHDyetD64ZsjnWV/N/D44s/esI+k6oPREaiQ==", "dependencies": { - "@cosmjs/encoding": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/utils": "0.28.13", + "@cosmjs/encoding": "^0.29.5", + "@cosmjs/math": "^0.29.5", + "@cosmjs/utils": "^0.29.5", "@noble/hashes": "^1", "bn.js": "^5.2.0", - "elliptic": "^6.5.3", + "elliptic": "^6.5.4", "libsodium-wrappers": "^0.7.6" } }, "node_modules/@cosmjs/encoding": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.28.13.tgz", - "integrity": "sha512-jtXbAYtV77rLHxoIrjGFsvgGjeTKttuHRv6cvuy3toCZzY7JzTclKH5O2g36IIE4lXwD9xwuhGJ2aa6A3dhNkA==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.29.5.tgz", + "integrity": "sha512-G4rGl/Jg4dMCw5u6PEZHZcoHnUBlukZODHbm/wcL4Uu91fkn5jVo5cXXZcvs4VCkArVGrEj/52eUgTZCmOBGWQ==", "dependencies": { "base64-js": "^1.3.0", "bech32": "^1.1.4", @@ -318,142 +267,71 @@ } }, "node_modules/@cosmjs/json-rpc": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.28.13.tgz", - "integrity": "sha512-fInSvg7x9P6p+GWqet+TMhrMTM3OWWdLJOGS5w2ryubMjgpR1rLiAx77MdTNkArW+/6sUwku0sN4veM4ENQu6A==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.29.5.tgz", + "integrity": "sha512-C78+X06l+r9xwdM1yFWIpGl03LhB9NdM1xvZpQHwgCOl0Ir/WV8pw48y3Ez2awAoUBRfTeejPe4KvrE6NoIi/w==", "dependencies": { - "@cosmjs/stream": "0.28.13", + "@cosmjs/stream": "^0.29.5", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/math": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.28.13.tgz", - "integrity": "sha512-PDpL8W/kbyeWi0mQ2OruyqE8ZUAdxPs1xCbDX3WXJwy2oU+X2UTbkuweJHVpS9CIqmZulBoWQAmlf6t6zr1N/g==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.29.5.tgz", + "integrity": "sha512-2GjKcv+A9f86MAWYLUkjhw1/WpRl2R1BTb3m9qPG7lzMA7ioYff9jY5SPCfafKdxM4TIQGxXQlYGewQL16O68Q==", "dependencies": { "bn.js": "^5.2.0" } }, "node_modules/@cosmjs/proto-signing": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.29.4.tgz", - "integrity": "sha512-GdLOhMd54LZgG+kHf7uAWGYDT628yVhXPMWaG/1i3f3Kq4VsZgFBwJhhziM5kWblmFjBOhooGRwLrBnOxMusCg==", - "dependencies": { - "@cosmjs/amino": "^0.29.4", - "@cosmjs/crypto": "^0.29.4", - "@cosmjs/encoding": "^0.29.4", - "@cosmjs/math": "^0.29.4", - "@cosmjs/utils": "^0.29.4", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.29.5.tgz", + "integrity": "sha512-QRrS7CiKaoETdgIqvi/7JC2qCwCR7lnWaUsTzh/XfRy3McLkEd+cXbKAW3cygykv7IN0VAEIhZd2lyIfT8KwNA==", + "dependencies": { + "@cosmjs/amino": "^0.29.5", + "@cosmjs/crypto": "^0.29.5", + "@cosmjs/encoding": "^0.29.5", + "@cosmjs/math": "^0.29.5", + "@cosmjs/utils": "^0.29.5", "cosmjs-types": "^0.5.2", "long": "^4.0.0" } }, - "node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/amino": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.29.4.tgz", - "integrity": "sha512-FBjaJ4oUKFtH34O7XjUk370x8sF7EbXD29miXrm0Rl5GEtEORJgQwutXQllHo5gBkpOxC+ZQ40CibXhPzH7G7A==", - "dependencies": { - "@cosmjs/crypto": "^0.29.4", - "@cosmjs/encoding": "^0.29.4", - "@cosmjs/math": "^0.29.4", - "@cosmjs/utils": "^0.29.4" - } - }, - "node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/crypto": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.29.4.tgz", - "integrity": "sha512-PmSxoFl/Won7kHZv3PQUUgdmEiAMqdY7XnEnVh9PbU7Hht6uo7PQ+M0eIGW3NIXYKmn6oVExER+xOfLfq4YNGw==", - "dependencies": { - "@cosmjs/encoding": "^0.29.4", - "@cosmjs/math": "^0.29.4", - "@cosmjs/utils": "^0.29.4", - "@noble/hashes": "^1", - "bn.js": "^5.2.0", - "elliptic": "^6.5.4", - "libsodium-wrappers": "^0.7.6" - } - }, - "node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/encoding": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.29.4.tgz", - "integrity": "sha512-nlwCh4j+kIqEcwNu8AFSmqXGj0bvF4nLC3J1X0eJyJenlgJBiiAGjYp3nxMf/ZjKkZP65Fq7MXVtAYs3K8xvvQ==", - "dependencies": { - "base64-js": "^1.3.0", - "bech32": "^1.1.4", - "readonly-date": "^1.0.0" - } - }, - "node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/math": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.29.4.tgz", - "integrity": "sha512-IvT1Cj3qOMGqz7v5FxdDCBEIDL2k9m5rufrkuD4oL9kS79ebnhA0lquX6ApPubUohTXl+5PnLo02W8HEH6Stkg==", - "dependencies": { - "bn.js": "^5.2.0" - } - }, - "node_modules/@cosmjs/proto-signing/node_modules/@cosmjs/utils": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.29.4.tgz", - "integrity": "sha512-X1pZWRHDbTPLa6cYW0NHvtig+lSxOdLAX7K/xp67ywBy2knnDOyzz1utGTOowmiM98XuV9quK/BWePKkJOaHpQ==" - }, "node_modules/@cosmjs/proto-signing/node_modules/long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, "node_modules/@cosmjs/socket": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.28.13.tgz", - "integrity": "sha512-lavwGxQ5VdeltyhpFtwCRVfxeWjH5D5mmN7jgx9nuCf3XSFbTcOYxrk2pQ4usenu1Q1KZdL4Yl5RCNrJuHD9Ug==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.29.5.tgz", + "integrity": "sha512-5VYDupIWbIXq3ftPV1LkS5Ya/T7Ol/AzWVhNxZ79hPe/mBfv1bGau/LqIYOm2zxGlgm9hBHOTmWGqNYDwr9LNQ==", "dependencies": { - "@cosmjs/stream": "0.28.13", + "@cosmjs/stream": "^0.29.5", "isomorphic-ws": "^4.0.1", "ws": "^7", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/stargate": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.28.13.tgz", - "integrity": "sha512-dVBMazDz8/eActHsRcZjDHHptOBMqvibj5CFgEtZBp22gP6ASzoAUXTlkSVk5FBf4sfuUHoff6st134/+PGMAg==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.29.5.tgz", + "integrity": "sha512-hjEv8UUlJruLrYGJcUZXM/CziaINOKwfVm2BoSdUnNTMxGvY/jC1ABHKeZUYt9oXHxEJ1n9+pDqzbKc8pT0nBw==", "dependencies": { "@confio/ics23": "^0.6.8", - "@cosmjs/amino": "0.28.13", - "@cosmjs/encoding": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/proto-signing": "0.28.13", - "@cosmjs/stream": "0.28.13", - "@cosmjs/tendermint-rpc": "0.28.13", - "@cosmjs/utils": "0.28.13", - "cosmjs-types": "^0.4.0", + "@cosmjs/amino": "^0.29.5", + "@cosmjs/encoding": "^0.29.5", + "@cosmjs/math": "^0.29.5", + "@cosmjs/proto-signing": "^0.29.5", + "@cosmjs/stream": "^0.29.5", + "@cosmjs/tendermint-rpc": "^0.29.5", + "@cosmjs/utils": "^0.29.5", + "cosmjs-types": "^0.5.2", "long": "^4.0.0", "protobufjs": "~6.11.3", "xstream": "^11.14.0" } }, - "node_modules/@cosmjs/stargate/node_modules/@cosmjs/proto-signing": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.28.13.tgz", - "integrity": "sha512-nSl/2ZLsUJYz3Ad0RY3ihZUgRHIow2OnYqKsESMu+3RA/jTi9bDYhiBu8mNMHI0xrEJry918B2CyI56pOUHdPQ==", - "dependencies": { - "@cosmjs/amino": "0.28.13", - "@cosmjs/crypto": "0.28.13", - "@cosmjs/encoding": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/utils": "0.28.13", - "cosmjs-types": "^0.4.0", - "long": "^4.0.0" - } - }, - "node_modules/@cosmjs/stargate/node_modules/cosmjs-types": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.4.1.tgz", - "integrity": "sha512-I7E/cHkIgoJzMNQdFF0YVqPlaTqrqKHrskuSTIqlEyxfB5Lf3WKCajSXVK2yHOfOFfSux/RxEdpMzw/eO4DIog==", - "dependencies": { - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } - }, "node_modules/@cosmjs/stargate/node_modules/long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", @@ -485,77 +363,45 @@ } }, "node_modules/@cosmjs/stream": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.28.13.tgz", - "integrity": "sha512-AnjtfwT8NwPPkd3lhZhjOlOzT0Kn9bgEu2IPOZjQ1nmG2bplsr6TJmnwn0dJxHT7UGtex17h6whKB5N4wU37Wg==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.29.5.tgz", + "integrity": "sha512-TToTDWyH1p05GBtF0Y8jFw2C+4783ueDCmDyxOMM6EU82IqpmIbfwcdMOCAm0JhnyMh+ocdebbFvnX/sGKzRAA==", "dependencies": { "xstream": "^11.14.0" } }, "node_modules/@cosmjs/tendermint-rpc": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.28.13.tgz", - "integrity": "sha512-GB+ZmfuJIGQm0hsRtLYjeR3lOxF7Z6XyCBR0cX5AAYOZzSEBJjevPgUHD6tLn8zIhvzxaW3/VKnMB+WmlxdH4w==", - "dependencies": { - "@cosmjs/crypto": "0.28.13", - "@cosmjs/encoding": "0.28.13", - "@cosmjs/json-rpc": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/socket": "0.28.13", - "@cosmjs/stream": "0.28.13", - "@cosmjs/utils": "0.28.13", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.29.5.tgz", + "integrity": "sha512-ar80twieuAxsy0x2za/aO3kBr2DFPAXDmk2ikDbmkda+qqfXgl35l9CVAAjKRqd9d+cRvbQyb5M4wy6XQpEV6w==", + "dependencies": { + "@cosmjs/crypto": "^0.29.5", + "@cosmjs/encoding": "^0.29.5", + "@cosmjs/json-rpc": "^0.29.5", + "@cosmjs/math": "^0.29.5", + "@cosmjs/socket": "^0.29.5", + "@cosmjs/stream": "^0.29.5", + "@cosmjs/utils": "^0.29.5", "axios": "^0.21.2", "readonly-date": "^1.0.0", "xstream": "^11.14.0" } }, "node_modules/@cosmjs/utils": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.28.13.tgz", - "integrity": "sha512-dVeMBiyg+46x7XBZEfJK8yTihphbCFpjVYmLJVqmTsHfJwymQ65cpyW/C+V/LgWARGK8hWQ/aX9HM5Ao8QmMSg==" - }, - "node_modules/@esbuild/android-arm": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.16.tgz", - "integrity": "sha512-nyB6CH++2mSgx3GbnrJsZSxzne5K0HMyNIWafDHqYy7IwxFc4fd/CgHVZXr8Eh+Q3KbIAcAe3vGyqIPhGblvMQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.16.tgz", - "integrity": "sha512-SDLfP1uoB0HZ14CdVYgagllgrG7Mdxhkt4jDJOKl/MldKrkQ6vDJMZKl2+5XsEY/Lzz37fjgLQoJBGuAw/x8kQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.29.5.tgz", + "integrity": "sha512-m7h+RXDUxOzEOGt4P+3OVPX7PuakZT3GBmaM/Y2u+abN3xZkziykD/NvedYFvvCCdQo714XcGl33bwifS9FZPQ==" }, "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -570,9 +416,9 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -603,9 +449,9 @@ "dev": true }, "node_modules/@noble/hashes": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.3.tgz", - "integrity": "sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.4.tgz", + "integrity": "sha512-+PYsVPrTSqtVjatKt2A/Proukn2Yrz61OBThOCKErc5w2/r1Fh37vbDv0Eah7pyNltrmacjwTvdw3JoR+WE4TA==", "funding": [ { "type": "individual", @@ -693,9 +539,9 @@ } }, "node_modules/@octokit/graphql": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz", - "integrity": "sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.3.tgz", + "integrity": "sha512-VjhqOu2CHo2hwank1y2k8YcqF83zJW6upyP1+0l3wegvpq+4H31zOA5Rkyx76uJBUdJooUR5UnFyclBptzl86Q==", "dev": true, "dependencies": { "@octokit/request": "^6.0.0", @@ -1194,6 +1040,11 @@ "@stablelib/xchacha20": "^1.0.1" } }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -1279,9 +1130,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" }, "node_modules/@types/node-fetch": { "version": "2.6.2", @@ -1349,15 +1200,21 @@ "@types/serve-static": "*" } }, + "node_modules/@types/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-kr90f+ERiQtKWMz5rP32ltJ/BtULDI5RVO0uavn1HQUOwjx0R1h0rnDYNL0CepF1zL5bSY6FISAfd9tOdDhU5Q==", + "dev": true + }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.45.0.tgz", - "integrity": "sha512-CXXHNlf0oL+Yg021cxgOdMHNTXD17rHkq7iW6RFHoybdFgQBjU3yIXhhcPpGwr1CjZlo6ET8C6tzX5juQoXeGA==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.49.0.tgz", + "integrity": "sha512-IhxabIpcf++TBaBa1h7jtOWyon80SXPRLDq0dVz5SLFC/eW6tofkw/O7Ar3lkx5z5U6wzbKDrl2larprp5kk5Q==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/type-utils": "5.45.0", - "@typescript-eslint/utils": "5.45.0", + "@typescript-eslint/scope-manager": "5.49.0", + "@typescript-eslint/type-utils": "5.49.0", + "@typescript-eslint/utils": "5.49.0", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", @@ -1383,14 +1240,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.45.0.tgz", - "integrity": "sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.49.0.tgz", + "integrity": "sha512-veDlZN9mUhGqU31Qiv2qEp+XrJj5fgZpJ8PW30sHU+j/8/e5ruAhLaVDAeznS7A7i4ucb/s8IozpDtt9NqCkZg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/typescript-estree": "5.45.0", + "@typescript-eslint/scope-manager": "5.49.0", + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/typescript-estree": "5.49.0", "debug": "^4.3.4" }, "engines": { @@ -1410,13 +1267,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.45.0.tgz", - "integrity": "sha512-noDMjr87Arp/PuVrtvN3dXiJstQR1+XlQ4R1EvzG+NMgXi8CuMCXpb8JqNtFHKceVSQ985BZhfRdowJzbv4yKw==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.49.0.tgz", + "integrity": "sha512-clpROBOiMIzpbWNxCe1xDK14uPZh35u4QaZO1GddilEzoCLAEz4szb51rBpdgurs5k2YzPtJeTEN3qVbG+LRUQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/visitor-keys": "5.45.0" + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/visitor-keys": "5.49.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1427,13 +1284,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.45.0.tgz", - "integrity": "sha512-DY7BXVFSIGRGFZ574hTEyLPRiQIvI/9oGcN8t1A7f6zIs6ftbrU0nhyV26ZW//6f85avkwrLag424n+fkuoJ1Q==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.49.0.tgz", + "integrity": "sha512-eUgLTYq0tR0FGU5g1YHm4rt5H/+V2IPVkP0cBmbhRyEmyGe4XvJ2YJ6sYTmONfjmdMqyMLad7SB8GvblbeESZA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.45.0", - "@typescript-eslint/utils": "5.45.0", + "@typescript-eslint/typescript-estree": "5.49.0", + "@typescript-eslint/utils": "5.49.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -1454,9 +1311,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.45.0.tgz", - "integrity": "sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.49.0.tgz", + "integrity": "sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1467,13 +1324,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.45.0.tgz", - "integrity": "sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.49.0.tgz", + "integrity": "sha512-PBdx+V7deZT/3GjNYPVQv1Nc0U46dAHbIuOG8AZ3on3vuEKiPDwFE/lG1snN2eUB9IhF7EyF7K1hmTcLztNIsA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/visitor-keys": "5.45.0", + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/visitor-keys": "5.49.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1494,16 +1351,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.45.0.tgz", - "integrity": "sha512-OUg2JvsVI1oIee/SwiejTot2OxwU8a7UfTFMOdlhD2y+Hl6memUSL4s98bpUTo8EpVEr0lmwlU7JSu/p2QpSvA==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.49.0.tgz", + "integrity": "sha512-cPJue/4Si25FViIb74sHCLtM4nTSBXtLx1d3/QT6mirQ/c65bV8arBEebBJJizfq8W2YyMoPI/WWPFWitmNqnQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/typescript-estree": "5.45.0", + "@typescript-eslint/scope-manager": "5.49.0", + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/typescript-estree": "5.49.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -1520,12 +1377,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.45.0.tgz", - "integrity": "sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.49.0.tgz", + "integrity": "sha512-v9jBMjpNWyn8B6k/Mjt6VbUS4J1GvUlR4x3Y+ibnP1z7y7V4n0WRz+50DY6+Myj0UaXVSuUlHohO+eZ8IJEnkg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.45.0", + "@typescript-eslint/types": "5.49.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -1549,9 +1406,9 @@ } }, "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1956,6 +1813,14 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2133,9 +1998,9 @@ "dev": true }, "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, "dependencies": { "@types/parse-json": "^4.0.0", @@ -2254,9 +2119,9 @@ } }, "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", "dev": true, "dependencies": { "decamelize": "^1.1.0", @@ -2264,9 +2129,6 @@ }, "engines": { "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decamelize-keys/node_modules/map-obj": { @@ -2378,9 +2240,9 @@ } }, "node_modules/did-jwt": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/did-jwt/-/did-jwt-6.10.0.tgz", - "integrity": "sha512-qdWWh9TweX633lSb01KZQOmNJfHW7ETe4DsVB/wJvkAqQ54sbj2p+1LYp14OaGMLhkIbdjdwCbhMAD6iFamZmQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/did-jwt/-/did-jwt-6.11.0.tgz", + "integrity": "sha512-/qyYzo8v/xjwyt5x3tbknjQ2L15J1JzB+0cQK5/2SgnoOoclOmtEgZoRaxG1B73VMOgyZQYLBytRT4COUVhcpw==", "dependencies": { "@stablelib/ed25519": "^1.0.2", "@stablelib/random": "^1.0.1", @@ -2521,9 +2383,9 @@ } }, "node_modules/esbuild": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.16.tgz", - "integrity": "sha512-o6iS9zxdHrrojjlj6pNGC2NAg86ECZqIETswTM5KmJitq+R1YmahhWtMumeQp9lHqJaROGnsBi2RLawGnfo5ZQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", "dev": true, "hasInstallScript": true, "bin": { @@ -2533,146 +2395,34 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.15.16", - "@esbuild/linux-loong64": "0.15.16", - "esbuild-android-64": "0.15.16", - "esbuild-android-arm64": "0.15.16", - "esbuild-darwin-64": "0.15.16", - "esbuild-darwin-arm64": "0.15.16", - "esbuild-freebsd-64": "0.15.16", - "esbuild-freebsd-arm64": "0.15.16", - "esbuild-linux-32": "0.15.16", - "esbuild-linux-64": "0.15.16", - "esbuild-linux-arm": "0.15.16", - "esbuild-linux-arm64": "0.15.16", - "esbuild-linux-mips64le": "0.15.16", - "esbuild-linux-ppc64le": "0.15.16", - "esbuild-linux-riscv64": "0.15.16", - "esbuild-linux-s390x": "0.15.16", - "esbuild-netbsd-64": "0.15.16", - "esbuild-openbsd-64": "0.15.16", - "esbuild-sunos-64": "0.15.16", - "esbuild-windows-32": "0.15.16", - "esbuild-windows-64": "0.15.16", - "esbuild-windows-arm64": "0.15.16" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.16.tgz", - "integrity": "sha512-Vwkv/sT0zMSgPSVO3Jlt1pUbnZuOgtOQJkJkyyJFAlLe7BiT8e9ESzo0zQSx4c3wW4T6kGChmKDPMbWTgtliQA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.16.tgz", - "integrity": "sha512-lqfKuofMExL5niNV3gnhMUYacSXfsvzTa/58sDlBET/hCOG99Zmeh+lz6kvdgvGOsImeo6J9SW21rFCogNPLxg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.16.tgz", - "integrity": "sha512-wo2VWk/n/9V2TmqUZ/KpzRjCEcr00n7yahEdmtzlrfQ3lfMCf3Wa+0sqHAbjk3C6CKkR3WKK/whkMq5Gj4Da9g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.16.tgz", - "integrity": "sha512-fMXaUr5ou0M4WnewBKsspMtX++C1yIa3nJ5R2LSbLCfJT3uFdcRoU/NZjoM4kOMKyOD9Sa/2vlgN8G07K3SJnw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.16.tgz", - "integrity": "sha512-UzIc0xlRx5x9kRuMr+E3+hlSOxa/aRqfuMfiYBXu2jJ8Mzej4lGL7+o6F5hzhLqWfWm1GWHNakIdlqg1ayaTNQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.16.tgz", - "integrity": "sha512-8xyiYuGc0DLZphFQIiYaLHlfoP+hAN9RHbE+Ibh8EUcDNHAqbQgUrQg7pE7Bo00rXmQ5Ap6KFgcR0b4ALZls1g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.16.tgz", - "integrity": "sha512-iGijUTV+0kIMyUVoynK0v+32Oi8yyp0xwMzX69GX+5+AniNy/C/AL1MjFTsozRp/3xQPl7jVux/PLe2ds10/2w==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" } }, "node_modules/esbuild-linux-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.16.tgz", - "integrity": "sha512-tuSOjXdLw7VzaUj89fIdAaQT7zFGbKBcz4YxbWrOiXkwscYgE7HtTxUavreBbnRkGxKwr9iT/gmeJWNm4djy/g==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", "cpu": [ "x64" ], @@ -2685,198 +2435,6 @@ "node": ">=12" } }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.16.tgz", - "integrity": "sha512-XKcrxCEXDTOuoRj5l12tJnkvuxXBMKwEC5j0JISw3ziLf0j4zIwXbKbTmUrKFWbo6ZgvNpa7Y5dnbsjVvH39bQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.16.tgz", - "integrity": "sha512-mPYksnfHnemNrvjrDhZyixL/AfbJN0Xn9S34ZOHYdh6/jJcNd8iTsv3JwJoEvTJqjMggjMhGUPJAdjnFBHoH8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.16.tgz", - "integrity": "sha512-kSJO2PXaxfm0pWY39+YX+QtpFqyyrcp0ZeI8QPTrcFVQoWEPiPVtOfTZeS3ZKedfH+Ga38c4DSzmKMQJocQv6A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.16.tgz", - "integrity": "sha512-NimPikwkBY0yGABw6SlhKrtT35sU4O23xkhlrTT/O6lSxv3Pm5iSc6OYaqVAHWkLdVf31bF4UDVFO+D990WpAA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.16.tgz", - "integrity": "sha512-ty2YUHZlwFOwp7pR+J87M4CVrXJIf5ZZtU/umpxgVJBXvWjhziSLEQxvl30SYfUPq0nzeWKBGw5i/DieiHeKfw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.16.tgz", - "integrity": "sha512-VkZaGssvPDQtx4fvVdZ9czezmyWyzpQhEbSNsHZZN0BHvxRLOYAQ7sjay8nMQwYswP6O2KlZluRMNPYefFRs+w==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.16.tgz", - "integrity": "sha512-ElQ9rhdY51et6MJTWrCPbqOd/YuPowD7Cxx3ee8wlmXQQVW7UvQI6nSprJ9uVFQISqSF5e5EWpwWqXZsECLvXg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.16.tgz", - "integrity": "sha512-KgxMHyxMCT+NdLQE1zVJEsLSt2QQBAvJfmUGDmgEq8Fvjrf6vSKB00dVHUEDKcJwMID6CdgCpvYNt999tIYhqA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.16.tgz", - "integrity": "sha512-exSAx8Phj7QylXHlMfIyEfNrmqnLxFqLxdQF6MBHPdHAjT7fsKaX6XIJn+aQEFiOcE4X8e7VvdMCJ+WDZxjSRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.16.tgz", - "integrity": "sha512-zQgWpY5pUCSTOwqKQ6/vOCJfRssTvxFuEkpB4f2VUGPBpdddZfdj8hbZuFRdZRPIVHvN7juGcpgCA/XCF37mAQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.16.tgz", - "integrity": "sha512-HjW1hHRLSncnM3MBCP7iquatHVJq9l0S2xxsHHj4yzf4nm9TU4Z7k4NkeMlD/dHQ4jPlQQhwcMvwbJiOefSuZw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.16.tgz", - "integrity": "sha512-oCcUKrJaMn04Vxy9Ekd8x23O8LoU01+4NOkQ2iBToKgnGj5eo1vU9i27NQZ9qC8NFZgnQQZg5oZWAejmbsppNA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -2904,13 +2462,13 @@ } }, "node_modules/eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", + "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@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.10.0", @@ -2929,7 +2487,7 @@ "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", @@ -3354,6 +2912,22 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "dependencies": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -3537,9 +3111,9 @@ ] }, "node_modules/fs-extra": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.0.0.tgz", - "integrity": "sha512-4YxRvMi4P5C3WQTvdRfrv5UVqbISpqjORFQAW5QPiKAauaxNCwrEdIi6pG3tDFhKKpMen+enEhHIzB/tvIO+/w==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -3661,9 +3235,9 @@ } }, "node_modules/globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3903,10 +3477,29 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", - "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { "node": ">= 4" @@ -4010,9 +3603,9 @@ "dev": true }, "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -4175,14 +3768,10 @@ } }, "node_modules/js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true }, "node_modules/js-sha3": { "version": "0.8.0", @@ -4435,9 +4024,9 @@ } }, "node_modules/marked": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.3.tgz", - "integrity": "sha512-slWRdJkbTZ+PjkyJnE30Uid64eHwbwa1Q25INCAYfZlK4o6ylagBy/Le9eWntqJFoFT93ikUKMv47GZ4gTwHkw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.1.tgz", + "integrity": "sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==", "dev": true, "bin": { "marked": "bin/marked.js" @@ -4710,6 +4299,17 @@ "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", "dev": true }, + "node_modules/node-cache": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz", + "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==", + "dependencies": { + "clone": "2.x" + }, + "engines": { + "node": ">= 8.0.0" + } + }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -4782,9 +4382,9 @@ } }, "node_modules/npm": { - "version": "8.19.3", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.19.3.tgz", - "integrity": "sha512-0QjmyPtDxSyMWWD8I91QGbrgx9KzbV6C9FK1liEb/K0zppiZkr5KxXc990G+LzPwBHDfRjUBlO9T1qZ08vl9mA==", + "version": "8.19.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-8.19.2.tgz", + "integrity": "sha512-MWkISVv5f7iZbfNkry5/5YBqSYJEDAKSJdL+uzSQuyLg+hgLQUyZynu3SH6bOZlvR9ZvJYk2EiJO6B1r+ynwHg==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -4793,6 +4393,7 @@ "@npmcli/fs", "@npmcli/map-workspaces", "@npmcli/package-json", + "@npmcli/promise-spawn", "@npmcli/run-script", "abbrev", "archy", @@ -4863,12 +4464,13 @@ "dev": true, "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.6.3", + "@npmcli/arborist": "^5.6.2", "@npmcli/ci-detect": "^2.0.0", "@npmcli/config": "^4.2.1", "@npmcli/fs": "^2.1.0", "@npmcli/map-workspaces": "^2.0.3", "@npmcli/package-json": "^2.0.0", + "@npmcli/promise-spawn": "*", "@npmcli/run-script": "^4.2.1", "abbrev": "~1.1.1", "archy": "~1.0.0", @@ -4879,18 +4481,18 @@ "cli-table3": "^0.6.2", "columnify": "^1.6.0", "fastest-levenshtein": "^1.0.12", - "fs-minipass": "^2.1.0", + "fs-minipass": "*", "glob": "^8.0.1", "graceful-fs": "^4.2.10", - "hosted-git-info": "^5.2.1", + "hosted-git-info": "^5.1.0", "ini": "^3.0.1", "init-package-json": "^3.0.2", "is-cidr": "^4.0.2", "json-parse-even-better-errors": "^2.3.1", "libnpmaccess": "^6.0.4", "libnpmdiff": "^4.0.5", - "libnpmexec": "^4.0.14", - "libnpmfund": "^3.0.5", + "libnpmexec": "^4.0.13", + "libnpmfund": "^3.0.4", "libnpmhook": "^8.0.4", "libnpmorg": "^4.0.4", "libnpmpack": "^4.1.3", @@ -4899,7 +4501,7 @@ "libnpmteam": "^4.0.4", "libnpmversion": "^3.0.7", "make-fetch-happen": "^10.2.0", - "minimatch": "^5.1.0", + "minimatch": "*", "minipass": "^3.1.6", "minipass-pipeline": "^1.2.4", "mkdirp": "^1.0.4", @@ -4941,7 +4543,7 @@ "npx": "bin/npx-cli.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16" } }, "node_modules/npm-run-path": { @@ -4979,7 +4581,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "5.6.3", + "version": "5.6.2", "dev": true, "inBundle": true, "license": "ISC", @@ -4997,7 +4599,6 @@ "bin-links": "^3.0.3", "cacache": "^16.1.3", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^5.2.1", "json-parse-even-better-errors": "^2.3.1", "json-stringify-nice": "^1.1.4", "minimatch": "^5.1.0", @@ -5809,7 +5410,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/hosted-git-info": { - "version": "5.2.1", + "version": "5.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -6085,12 +5686,12 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "4.0.14", + "version": "4.0.13", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^5.6.3", + "@npmcli/arborist": "^5.6.2", "@npmcli/ci-detect": "^2.0.0", "@npmcli/fs": "^2.1.1", "@npmcli/run-script": "^4.2.0", @@ -6110,12 +5711,12 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "3.0.5", + "version": "3.0.4", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^5.6.3" + "@npmcli/arborist": "^5.6.2" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" @@ -7615,6 +7216,18 @@ "node": ">=8" } }, + "node_modules/peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -7717,9 +7330,9 @@ } }, "node_modules/prettier": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", - "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", + "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -7773,9 +7386,9 @@ } }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true, "engines": { "node": ">=6" @@ -8039,6 +7652,34 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readonly-date": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/readonly-date/-/readonly-date-1.0.0.tgz", @@ -8626,7 +8267,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -8634,8 +8274,7 @@ "node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/string-width": { "version": "4.2.3", @@ -8705,6 +8344,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8743,9 +8398,9 @@ } }, "node_modules/swagger-ui-dist": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.15.5.tgz", - "integrity": "sha512-V3eIa28lwB6gg7/wfNvAbjwJYmDXy1Jo1POjyTzlB6wPcHiGlRxq39TSjYGVjQrUSAzpv+a7nzp7mDxgNy57xA==" + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.14.3.tgz", + "integrity": "sha512-Y7Sta24I9r+G6dX3ZTIq9Psr55cDC3myCB0E00ZnVkB0Wn3cO77NdLXSM0f90WZh9VpgTetKpMPR3n2VqKr+lQ==" }, "node_modules/swagger-ui-express": { "version": "4.6.0", @@ -8873,6 +8528,22 @@ "node": ">=0.6" } }, + "node_modules/token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -8955,9 +8626,9 @@ } }, "node_modules/typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -8968,9 +8639,9 @@ } }, "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.3.tgz", + "integrity": "sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==", "dev": true, "optional": true, "bin": { @@ -9041,8 +8712,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utils-merge": { "version": "1.0.1", @@ -9053,9 +8723,9 @@ } }, "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", "bin": { "uuid": "dist/bin/uuid" } @@ -9351,82 +9021,31 @@ } }, "@cheqd/sdk": { - "version": "npm:@daevm/cheqd-sdk@1.3.5", - "resolved": "https://registry.npmjs.org/@daevm/cheqd-sdk/-/cheqd-sdk-1.3.5.tgz", - "integrity": "sha512-QGHgtbcy3fxSxZX1pTPVH0OaPOE5FbGxUex3VnkcVHWEdYfSr+CQq9Jkhykxgn2jIM1zVELBO/u2DHnaPK74iw==", - "requires": { - "@cheqd/ts-proto": "^1.0.12", - "@cosmjs/amino": "^0.28.11", - "@cosmjs/encoding": "^0.28.11", - "@cosmjs/math": "^0.28.11", - "@cosmjs/proto-signing": "^0.28.10", - "@cosmjs/stargate": "^0.28.13", - "@cosmjs/tendermint-rpc": "^0.28.10", - "@cosmjs/utils": "^0.28.11", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@cheqd/sdk/-/sdk-2.0.0.tgz", + "integrity": "sha512-upETPipHtQxQWheBIRvQ+ERBoutzV5cfqd2ayEqvVvnm6HrYrZzKoNQu3U8nRv3kRtjNUKx47Oxqcnu2kKdTqA==", + "requires": { + "@cheqd/ts-proto": "^2.0.0-develop.1", + "@cosmjs/amino": "^0.29.4", + "@cosmjs/encoding": "^0.29.4", + "@cosmjs/math": "^0.29.4", + "@cosmjs/proto-signing": "^0.29.4", + "@cosmjs/stargate": "^0.29.4", + "@cosmjs/tendermint-rpc": "^0.29.4", + "@cosmjs/utils": "^0.29.4", "@stablelib/ed25519": "^1.0.3", - "cosmjs-types": "^0.5.1", - "did-jwt": "^6.6.0", - "multiformats": "^9.7.1", - "uint8arrays": "^3.1.0", - "uuid": "^8.3.2" - }, - "dependencies": { - "@cosmjs/proto-signing": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.28.13.tgz", - "integrity": "sha512-nSl/2ZLsUJYz3Ad0RY3ihZUgRHIow2OnYqKsESMu+3RA/jTi9bDYhiBu8mNMHI0xrEJry918B2CyI56pOUHdPQ==", - "requires": { - "@cosmjs/amino": "0.28.13", - "@cosmjs/crypto": "0.28.13", - "@cosmjs/encoding": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/utils": "0.28.13", - "cosmjs-types": "^0.4.0", - "long": "^4.0.0" - }, - "dependencies": { - "cosmjs-types": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.4.1.tgz", - "integrity": "sha512-I7E/cHkIgoJzMNQdFF0YVqPlaTqrqKHrskuSTIqlEyxfB5Lf3WKCajSXVK2yHOfOFfSux/RxEdpMzw/eO4DIog==", - "requires": { - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } - } - } - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "protobufjs": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", - "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", - "requires": { - "@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.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - } - } + "cosmjs-types": "^0.5.2", + "did-jwt": "^6.9.0", + "did-resolver": "^4.0.1", + "file-type": "^16.5.4", + "multiformats": "^9.9.0", + "uuid": "^9.0.0" } }, "@cheqd/ts-proto": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@cheqd/ts-proto/-/ts-proto-1.0.15.tgz", - "integrity": "sha512-S2/tomBAuNSMMkFfeNjLI7fJ5ckZLXODFV398lK0j3x4MDianLPJGV6WRR0W/eFva5B32OP3mRaCEw4H8ZRKEA==", + "version": "2.0.0-develop.1", + "resolved": "https://registry.npmjs.org/@cheqd/ts-proto/-/ts-proto-2.0.0-develop.1.tgz", + "integrity": "sha512-+dsHyZABC1spbkTjO1dGJOF20sHUumnDIoKGZtrWiu15iIa9vg2IAgKKVyLc7aBs04dxVs/888KN03zAWJvyJQ==", "requires": { "long": "^5.2.1", "protobufjs": "~7.1.1" @@ -9476,34 +9095,34 @@ } }, "@cosmjs/amino": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.28.13.tgz", - "integrity": "sha512-IHnH2zGwaY69qT4mVAavr/pfzx6YE+ud1NHJbvVePlbGiz68CXTi5LHR+K0lrKB5mQ7E+ZErWz2mw5U/x+V1wQ==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.29.5.tgz", + "integrity": "sha512-Qo8jpC0BiziTSUqpkNatBcwtKNhCovUnFul9SlT/74JUCdLYaeG5hxr3q1cssQt++l4LvlcpF+OUXL48XjNjLw==", "requires": { - "@cosmjs/crypto": "0.28.13", - "@cosmjs/encoding": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/utils": "0.28.13" + "@cosmjs/crypto": "^0.29.5", + "@cosmjs/encoding": "^0.29.5", + "@cosmjs/math": "^0.29.5", + "@cosmjs/utils": "^0.29.5" } }, "@cosmjs/crypto": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.28.13.tgz", - "integrity": "sha512-ynKfM0q/tMBQMHJby6ad8lR3gkgBKaelQhIsCZTjClsnuC7oYT9y3ThSZCUWr7Pa9h0J8ahU2YV2oFWFVWJQzQ==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.29.5.tgz", + "integrity": "sha512-2bKkaLGictaNL0UipQCL6C1afaisv6k8Wr/GCLx9FqiyFkh9ZgRHDyetD64ZsjnWV/N/D44s/esI+k6oPREaiQ==", "requires": { - "@cosmjs/encoding": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/utils": "0.28.13", + "@cosmjs/encoding": "^0.29.5", + "@cosmjs/math": "^0.29.5", + "@cosmjs/utils": "^0.29.5", "@noble/hashes": "^1", "bn.js": "^5.2.0", - "elliptic": "^6.5.3", + "elliptic": "^6.5.4", "libsodium-wrappers": "^0.7.6" } }, "@cosmjs/encoding": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.28.13.tgz", - "integrity": "sha512-jtXbAYtV77rLHxoIrjGFsvgGjeTKttuHRv6cvuy3toCZzY7JzTclKH5O2g36IIE4lXwD9xwuhGJ2aa6A3dhNkA==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.29.5.tgz", + "integrity": "sha512-G4rGl/Jg4dMCw5u6PEZHZcoHnUBlukZODHbm/wcL4Uu91fkn5jVo5cXXZcvs4VCkArVGrEj/52eUgTZCmOBGWQ==", "requires": { "base64-js": "^1.3.0", "bech32": "^1.1.4", @@ -9511,84 +9130,36 @@ } }, "@cosmjs/json-rpc": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.28.13.tgz", - "integrity": "sha512-fInSvg7x9P6p+GWqet+TMhrMTM3OWWdLJOGS5w2ryubMjgpR1rLiAx77MdTNkArW+/6sUwku0sN4veM4ENQu6A==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.29.5.tgz", + "integrity": "sha512-C78+X06l+r9xwdM1yFWIpGl03LhB9NdM1xvZpQHwgCOl0Ir/WV8pw48y3Ez2awAoUBRfTeejPe4KvrE6NoIi/w==", "requires": { - "@cosmjs/stream": "0.28.13", + "@cosmjs/stream": "^0.29.5", "xstream": "^11.14.0" } }, "@cosmjs/math": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.28.13.tgz", - "integrity": "sha512-PDpL8W/kbyeWi0mQ2OruyqE8ZUAdxPs1xCbDX3WXJwy2oU+X2UTbkuweJHVpS9CIqmZulBoWQAmlf6t6zr1N/g==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.29.5.tgz", + "integrity": "sha512-2GjKcv+A9f86MAWYLUkjhw1/WpRl2R1BTb3m9qPG7lzMA7ioYff9jY5SPCfafKdxM4TIQGxXQlYGewQL16O68Q==", "requires": { "bn.js": "^5.2.0" } }, "@cosmjs/proto-signing": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.29.4.tgz", - "integrity": "sha512-GdLOhMd54LZgG+kHf7uAWGYDT628yVhXPMWaG/1i3f3Kq4VsZgFBwJhhziM5kWblmFjBOhooGRwLrBnOxMusCg==", - "requires": { - "@cosmjs/amino": "^0.29.4", - "@cosmjs/crypto": "^0.29.4", - "@cosmjs/encoding": "^0.29.4", - "@cosmjs/math": "^0.29.4", - "@cosmjs/utils": "^0.29.4", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.29.5.tgz", + "integrity": "sha512-QRrS7CiKaoETdgIqvi/7JC2qCwCR7lnWaUsTzh/XfRy3McLkEd+cXbKAW3cygykv7IN0VAEIhZd2lyIfT8KwNA==", + "requires": { + "@cosmjs/amino": "^0.29.5", + "@cosmjs/crypto": "^0.29.5", + "@cosmjs/encoding": "^0.29.5", + "@cosmjs/math": "^0.29.5", + "@cosmjs/utils": "^0.29.5", "cosmjs-types": "^0.5.2", "long": "^4.0.0" }, "dependencies": { - "@cosmjs/amino": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.29.4.tgz", - "integrity": "sha512-FBjaJ4oUKFtH34O7XjUk370x8sF7EbXD29miXrm0Rl5GEtEORJgQwutXQllHo5gBkpOxC+ZQ40CibXhPzH7G7A==", - "requires": { - "@cosmjs/crypto": "^0.29.4", - "@cosmjs/encoding": "^0.29.4", - "@cosmjs/math": "^0.29.4", - "@cosmjs/utils": "^0.29.4" - } - }, - "@cosmjs/crypto": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.29.4.tgz", - "integrity": "sha512-PmSxoFl/Won7kHZv3PQUUgdmEiAMqdY7XnEnVh9PbU7Hht6uo7PQ+M0eIGW3NIXYKmn6oVExER+xOfLfq4YNGw==", - "requires": { - "@cosmjs/encoding": "^0.29.4", - "@cosmjs/math": "^0.29.4", - "@cosmjs/utils": "^0.29.4", - "@noble/hashes": "^1", - "bn.js": "^5.2.0", - "elliptic": "^6.5.4", - "libsodium-wrappers": "^0.7.6" - } - }, - "@cosmjs/encoding": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.29.4.tgz", - "integrity": "sha512-nlwCh4j+kIqEcwNu8AFSmqXGj0bvF4nLC3J1X0eJyJenlgJBiiAGjYp3nxMf/ZjKkZP65Fq7MXVtAYs3K8xvvQ==", - "requires": { - "base64-js": "^1.3.0", - "bech32": "^1.1.4", - "readonly-date": "^1.0.0" - } - }, - "@cosmjs/math": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.29.4.tgz", - "integrity": "sha512-IvT1Cj3qOMGqz7v5FxdDCBEIDL2k9m5rufrkuD4oL9kS79ebnhA0lquX6ApPubUohTXl+5PnLo02W8HEH6Stkg==", - "requires": { - "bn.js": "^5.2.0" - } - }, - "@cosmjs/utils": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.29.4.tgz", - "integrity": "sha512-X1pZWRHDbTPLa6cYW0NHvtig+lSxOdLAX7K/xp67ywBy2knnDOyzz1utGTOowmiM98XuV9quK/BWePKkJOaHpQ==" - }, "long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", @@ -9597,58 +9168,35 @@ } }, "@cosmjs/socket": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.28.13.tgz", - "integrity": "sha512-lavwGxQ5VdeltyhpFtwCRVfxeWjH5D5mmN7jgx9nuCf3XSFbTcOYxrk2pQ4usenu1Q1KZdL4Yl5RCNrJuHD9Ug==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.29.5.tgz", + "integrity": "sha512-5VYDupIWbIXq3ftPV1LkS5Ya/T7Ol/AzWVhNxZ79hPe/mBfv1bGau/LqIYOm2zxGlgm9hBHOTmWGqNYDwr9LNQ==", "requires": { - "@cosmjs/stream": "0.28.13", + "@cosmjs/stream": "^0.29.5", "isomorphic-ws": "^4.0.1", "ws": "^7", "xstream": "^11.14.0" } }, "@cosmjs/stargate": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.28.13.tgz", - "integrity": "sha512-dVBMazDz8/eActHsRcZjDHHptOBMqvibj5CFgEtZBp22gP6ASzoAUXTlkSVk5FBf4sfuUHoff6st134/+PGMAg==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.29.5.tgz", + "integrity": "sha512-hjEv8UUlJruLrYGJcUZXM/CziaINOKwfVm2BoSdUnNTMxGvY/jC1ABHKeZUYt9oXHxEJ1n9+pDqzbKc8pT0nBw==", "requires": { "@confio/ics23": "^0.6.8", - "@cosmjs/amino": "0.28.13", - "@cosmjs/encoding": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/proto-signing": "0.28.13", - "@cosmjs/stream": "0.28.13", - "@cosmjs/tendermint-rpc": "0.28.13", - "@cosmjs/utils": "0.28.13", - "cosmjs-types": "^0.4.0", + "@cosmjs/amino": "^0.29.5", + "@cosmjs/encoding": "^0.29.5", + "@cosmjs/math": "^0.29.5", + "@cosmjs/proto-signing": "^0.29.5", + "@cosmjs/stream": "^0.29.5", + "@cosmjs/tendermint-rpc": "^0.29.5", + "@cosmjs/utils": "^0.29.5", + "cosmjs-types": "^0.5.2", "long": "^4.0.0", "protobufjs": "~6.11.3", "xstream": "^11.14.0" }, "dependencies": { - "@cosmjs/proto-signing": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.28.13.tgz", - "integrity": "sha512-nSl/2ZLsUJYz3Ad0RY3ihZUgRHIow2OnYqKsESMu+3RA/jTi9bDYhiBu8mNMHI0xrEJry918B2CyI56pOUHdPQ==", - "requires": { - "@cosmjs/amino": "0.28.13", - "@cosmjs/crypto": "0.28.13", - "@cosmjs/encoding": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/utils": "0.28.13", - "cosmjs-types": "^0.4.0", - "long": "^4.0.0" - } - }, - "cosmjs-types": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.4.1.tgz", - "integrity": "sha512-I7E/cHkIgoJzMNQdFF0YVqPlaTqrqKHrskuSTIqlEyxfB5Lf3WKCajSXVK2yHOfOFfSux/RxEdpMzw/eO4DIog==", - "requires": { - "long": "^4.0.0", - "protobufjs": "~6.11.2" - } - }, "long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", @@ -9677,59 +9225,45 @@ } }, "@cosmjs/stream": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.28.13.tgz", - "integrity": "sha512-AnjtfwT8NwPPkd3lhZhjOlOzT0Kn9bgEu2IPOZjQ1nmG2bplsr6TJmnwn0dJxHT7UGtex17h6whKB5N4wU37Wg==", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.29.5.tgz", + "integrity": "sha512-TToTDWyH1p05GBtF0Y8jFw2C+4783ueDCmDyxOMM6EU82IqpmIbfwcdMOCAm0JhnyMh+ocdebbFvnX/sGKzRAA==", "requires": { "xstream": "^11.14.0" } }, "@cosmjs/tendermint-rpc": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.28.13.tgz", - "integrity": "sha512-GB+ZmfuJIGQm0hsRtLYjeR3lOxF7Z6XyCBR0cX5AAYOZzSEBJjevPgUHD6tLn8zIhvzxaW3/VKnMB+WmlxdH4w==", - "requires": { - "@cosmjs/crypto": "0.28.13", - "@cosmjs/encoding": "0.28.13", - "@cosmjs/json-rpc": "0.28.13", - "@cosmjs/math": "0.28.13", - "@cosmjs/socket": "0.28.13", - "@cosmjs/stream": "0.28.13", - "@cosmjs/utils": "0.28.13", + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.29.5.tgz", + "integrity": "sha512-ar80twieuAxsy0x2za/aO3kBr2DFPAXDmk2ikDbmkda+qqfXgl35l9CVAAjKRqd9d+cRvbQyb5M4wy6XQpEV6w==", + "requires": { + "@cosmjs/crypto": "^0.29.5", + "@cosmjs/encoding": "^0.29.5", + "@cosmjs/json-rpc": "^0.29.5", + "@cosmjs/math": "^0.29.5", + "@cosmjs/socket": "^0.29.5", + "@cosmjs/stream": "^0.29.5", + "@cosmjs/utils": "^0.29.5", "axios": "^0.21.2", "readonly-date": "^1.0.0", "xstream": "^11.14.0" } }, "@cosmjs/utils": { - "version": "0.28.13", - "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.28.13.tgz", - "integrity": "sha512-dVeMBiyg+46x7XBZEfJK8yTihphbCFpjVYmLJVqmTsHfJwymQ65cpyW/C+V/LgWARGK8hWQ/aX9HM5Ao8QmMSg==" - }, - "@esbuild/android-arm": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.16.tgz", - "integrity": "sha512-nyB6CH++2mSgx3GbnrJsZSxzne5K0HMyNIWafDHqYy7IwxFc4fd/CgHVZXr8Eh+Q3KbIAcAe3vGyqIPhGblvMQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.16.tgz", - "integrity": "sha512-SDLfP1uoB0HZ14CdVYgagllgrG7Mdxhkt4jDJOKl/MldKrkQ6vDJMZKl2+5XsEY/Lzz37fjgLQoJBGuAw/x8kQ==", - "dev": true, - "optional": true + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.29.5.tgz", + "integrity": "sha512-m7h+RXDUxOzEOGt4P+3OVPX7PuakZT3GBmaM/Y2u+abN3xZkziykD/NvedYFvvCCdQo714XcGl33bwifS9FZPQ==" }, "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -9738,9 +9272,9 @@ } }, "@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -9761,9 +9295,9 @@ "dev": true }, "@noble/hashes": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.3.tgz", - "integrity": "sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.4.tgz", + "integrity": "sha512-+PYsVPrTSqtVjatKt2A/Proukn2Yrz61OBThOCKErc5w2/r1Fh37vbDv0Eah7pyNltrmacjwTvdw3JoR+WE4TA==" }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -9827,9 +9361,9 @@ } }, "@octokit/graphql": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz", - "integrity": "sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.3.tgz", + "integrity": "sha512-VjhqOu2CHo2hwank1y2k8YcqF83zJW6upyP1+0l3wegvpq+4H31zOA5Rkyx76uJBUdJooUR5UnFyclBptzl86Q==", "dev": true, "requires": { "@octokit/request": "^6.0.0", @@ -10253,6 +9787,11 @@ "@stablelib/xchacha20": "^1.0.1" } }, + "@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, "@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -10334,9 +9873,9 @@ "dev": true }, "@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" }, "@types/node-fetch": { "version": "2.6.2", @@ -10404,15 +9943,21 @@ "@types/serve-static": "*" } }, + "@types/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-kr90f+ERiQtKWMz5rP32ltJ/BtULDI5RVO0uavn1HQUOwjx0R1h0rnDYNL0CepF1zL5bSY6FISAfd9tOdDhU5Q==", + "dev": true + }, "@typescript-eslint/eslint-plugin": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.45.0.tgz", - "integrity": "sha512-CXXHNlf0oL+Yg021cxgOdMHNTXD17rHkq7iW6RFHoybdFgQBjU3yIXhhcPpGwr1CjZlo6ET8C6tzX5juQoXeGA==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.49.0.tgz", + "integrity": "sha512-IhxabIpcf++TBaBa1h7jtOWyon80SXPRLDq0dVz5SLFC/eW6tofkw/O7Ar3lkx5z5U6wzbKDrl2larprp5kk5Q==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/type-utils": "5.45.0", - "@typescript-eslint/utils": "5.45.0", + "@typescript-eslint/scope-manager": "5.49.0", + "@typescript-eslint/type-utils": "5.49.0", + "@typescript-eslint/utils": "5.49.0", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", @@ -10422,53 +9967,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.45.0.tgz", - "integrity": "sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.49.0.tgz", + "integrity": "sha512-veDlZN9mUhGqU31Qiv2qEp+XrJj5fgZpJ8PW30sHU+j/8/e5ruAhLaVDAeznS7A7i4ucb/s8IozpDtt9NqCkZg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/typescript-estree": "5.45.0", + "@typescript-eslint/scope-manager": "5.49.0", + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/typescript-estree": "5.49.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.45.0.tgz", - "integrity": "sha512-noDMjr87Arp/PuVrtvN3dXiJstQR1+XlQ4R1EvzG+NMgXi8CuMCXpb8JqNtFHKceVSQ985BZhfRdowJzbv4yKw==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.49.0.tgz", + "integrity": "sha512-clpROBOiMIzpbWNxCe1xDK14uPZh35u4QaZO1GddilEzoCLAEz4szb51rBpdgurs5k2YzPtJeTEN3qVbG+LRUQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/visitor-keys": "5.45.0" + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/visitor-keys": "5.49.0" } }, "@typescript-eslint/type-utils": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.45.0.tgz", - "integrity": "sha512-DY7BXVFSIGRGFZ574hTEyLPRiQIvI/9oGcN8t1A7f6zIs6ftbrU0nhyV26ZW//6f85avkwrLag424n+fkuoJ1Q==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.49.0.tgz", + "integrity": "sha512-eUgLTYq0tR0FGU5g1YHm4rt5H/+V2IPVkP0cBmbhRyEmyGe4XvJ2YJ6sYTmONfjmdMqyMLad7SB8GvblbeESZA==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.45.0", - "@typescript-eslint/utils": "5.45.0", + "@typescript-eslint/typescript-estree": "5.49.0", + "@typescript-eslint/utils": "5.49.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.45.0.tgz", - "integrity": "sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.49.0.tgz", + "integrity": "sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.45.0.tgz", - "integrity": "sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.49.0.tgz", + "integrity": "sha512-PBdx+V7deZT/3GjNYPVQv1Nc0U46dAHbIuOG8AZ3on3vuEKiPDwFE/lG1snN2eUB9IhF7EyF7K1hmTcLztNIsA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/visitor-keys": "5.45.0", + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/visitor-keys": "5.49.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -10477,28 +10022,28 @@ } }, "@typescript-eslint/utils": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.45.0.tgz", - "integrity": "sha512-OUg2JvsVI1oIee/SwiejTot2OxwU8a7UfTFMOdlhD2y+Hl6memUSL4s98bpUTo8EpVEr0lmwlU7JSu/p2QpSvA==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.49.0.tgz", + "integrity": "sha512-cPJue/4Si25FViIb74sHCLtM4nTSBXtLx1d3/QT6mirQ/c65bV8arBEebBJJizfq8W2YyMoPI/WWPFWitmNqnQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.45.0", - "@typescript-eslint/types": "5.45.0", - "@typescript-eslint/typescript-estree": "5.45.0", + "@typescript-eslint/scope-manager": "5.49.0", + "@typescript-eslint/types": "5.49.0", + "@typescript-eslint/typescript-estree": "5.49.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.45.0.tgz", - "integrity": "sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg==", + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.49.0.tgz", + "integrity": "sha512-v9jBMjpNWyn8B6k/Mjt6VbUS4J1GvUlR4x3Y+ibnP1z7y7V4n0WRz+50DY6+Myj0UaXVSuUlHohO+eZ8IJEnkg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.45.0", + "@typescript-eslint/types": "5.49.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -10512,9 +10057,9 @@ } }, "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true }, "acorn-jsx": { @@ -10822,6 +10367,11 @@ "wrap-ansi": "^7.0.0" } }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -10962,9 +10512,9 @@ "dev": true }, "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", @@ -11054,9 +10604,9 @@ "dev": true }, "decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", "dev": true, "requires": { "decamelize": "^1.1.0", @@ -11142,9 +10692,9 @@ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, "did-jwt": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/did-jwt/-/did-jwt-6.10.0.tgz", - "integrity": "sha512-qdWWh9TweX633lSb01KZQOmNJfHW7ETe4DsVB/wJvkAqQ54sbj2p+1LYp14OaGMLhkIbdjdwCbhMAD6iFamZmQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/did-jwt/-/did-jwt-6.11.0.tgz", + "integrity": "sha512-/qyYzo8v/xjwyt5x3tbknjQ2L15J1JzB+0cQK5/2SgnoOoclOmtEgZoRaxG1B73VMOgyZQYLBytRT4COUVhcpw==", "requires": { "@stablelib/ed25519": "^1.0.2", "@stablelib/random": "^1.0.1", @@ -11271,172 +10821,39 @@ } }, "esbuild": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.16.tgz", - "integrity": "sha512-o6iS9zxdHrrojjlj6pNGC2NAg86ECZqIETswTM5KmJitq+R1YmahhWtMumeQp9lHqJaROGnsBi2RLawGnfo5ZQ==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.15.16", - "@esbuild/linux-loong64": "0.15.16", - "esbuild-android-64": "0.15.16", - "esbuild-android-arm64": "0.15.16", - "esbuild-darwin-64": "0.15.16", - "esbuild-darwin-arm64": "0.15.16", - "esbuild-freebsd-64": "0.15.16", - "esbuild-freebsd-arm64": "0.15.16", - "esbuild-linux-32": "0.15.16", - "esbuild-linux-64": "0.15.16", - "esbuild-linux-arm": "0.15.16", - "esbuild-linux-arm64": "0.15.16", - "esbuild-linux-mips64le": "0.15.16", - "esbuild-linux-ppc64le": "0.15.16", - "esbuild-linux-riscv64": "0.15.16", - "esbuild-linux-s390x": "0.15.16", - "esbuild-netbsd-64": "0.15.16", - "esbuild-openbsd-64": "0.15.16", - "esbuild-sunos-64": "0.15.16", - "esbuild-windows-32": "0.15.16", - "esbuild-windows-64": "0.15.16", - "esbuild-windows-arm64": "0.15.16" - } - }, - "esbuild-android-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.16.tgz", - "integrity": "sha512-Vwkv/sT0zMSgPSVO3Jlt1pUbnZuOgtOQJkJkyyJFAlLe7BiT8e9ESzo0zQSx4c3wW4T6kGChmKDPMbWTgtliQA==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.16.tgz", - "integrity": "sha512-lqfKuofMExL5niNV3gnhMUYacSXfsvzTa/58sDlBET/hCOG99Zmeh+lz6kvdgvGOsImeo6J9SW21rFCogNPLxg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.16.tgz", - "integrity": "sha512-wo2VWk/n/9V2TmqUZ/KpzRjCEcr00n7yahEdmtzlrfQ3lfMCf3Wa+0sqHAbjk3C6CKkR3WKK/whkMq5Gj4Da9g==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.16.tgz", - "integrity": "sha512-fMXaUr5ou0M4WnewBKsspMtX++C1yIa3nJ5R2LSbLCfJT3uFdcRoU/NZjoM4kOMKyOD9Sa/2vlgN8G07K3SJnw==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.16.tgz", - "integrity": "sha512-UzIc0xlRx5x9kRuMr+E3+hlSOxa/aRqfuMfiYBXu2jJ8Mzej4lGL7+o6F5hzhLqWfWm1GWHNakIdlqg1ayaTNQ==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.16.tgz", - "integrity": "sha512-8xyiYuGc0DLZphFQIiYaLHlfoP+hAN9RHbE+Ibh8EUcDNHAqbQgUrQg7pE7Bo00rXmQ5Ap6KFgcR0b4ALZls1g==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.16.tgz", - "integrity": "sha512-iGijUTV+0kIMyUVoynK0v+32Oi8yyp0xwMzX69GX+5+AniNy/C/AL1MjFTsozRp/3xQPl7jVux/PLe2ds10/2w==", - "dev": true, - "optional": true + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" + } }, "esbuild-linux-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.16.tgz", - "integrity": "sha512-tuSOjXdLw7VzaUj89fIdAaQT7zFGbKBcz4YxbWrOiXkwscYgE7HtTxUavreBbnRkGxKwr9iT/gmeJWNm4djy/g==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.16.tgz", - "integrity": "sha512-XKcrxCEXDTOuoRj5l12tJnkvuxXBMKwEC5j0JISw3ziLf0j4zIwXbKbTmUrKFWbo6ZgvNpa7Y5dnbsjVvH39bQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.16.tgz", - "integrity": "sha512-mPYksnfHnemNrvjrDhZyixL/AfbJN0Xn9S34ZOHYdh6/jJcNd8iTsv3JwJoEvTJqjMggjMhGUPJAdjnFBHoH8A==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.16.tgz", - "integrity": "sha512-kSJO2PXaxfm0pWY39+YX+QtpFqyyrcp0ZeI8QPTrcFVQoWEPiPVtOfTZeS3ZKedfH+Ga38c4DSzmKMQJocQv6A==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.16.tgz", - "integrity": "sha512-NimPikwkBY0yGABw6SlhKrtT35sU4O23xkhlrTT/O6lSxv3Pm5iSc6OYaqVAHWkLdVf31bF4UDVFO+D990WpAA==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.16.tgz", - "integrity": "sha512-ty2YUHZlwFOwp7pR+J87M4CVrXJIf5ZZtU/umpxgVJBXvWjhziSLEQxvl30SYfUPq0nzeWKBGw5i/DieiHeKfw==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.16.tgz", - "integrity": "sha512-VkZaGssvPDQtx4fvVdZ9czezmyWyzpQhEbSNsHZZN0BHvxRLOYAQ7sjay8nMQwYswP6O2KlZluRMNPYefFRs+w==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.16.tgz", - "integrity": "sha512-ElQ9rhdY51et6MJTWrCPbqOd/YuPowD7Cxx3ee8wlmXQQVW7UvQI6nSprJ9uVFQISqSF5e5EWpwWqXZsECLvXg==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.16.tgz", - "integrity": "sha512-KgxMHyxMCT+NdLQE1zVJEsLSt2QQBAvJfmUGDmgEq8Fvjrf6vSKB00dVHUEDKcJwMID6CdgCpvYNt999tIYhqA==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.16.tgz", - "integrity": "sha512-exSAx8Phj7QylXHlMfIyEfNrmqnLxFqLxdQF6MBHPdHAjT7fsKaX6XIJn+aQEFiOcE4X8e7VvdMCJ+WDZxjSRQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.16.tgz", - "integrity": "sha512-zQgWpY5pUCSTOwqKQ6/vOCJfRssTvxFuEkpB4f2VUGPBpdddZfdj8hbZuFRdZRPIVHvN7juGcpgCA/XCF37mAQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.16.tgz", - "integrity": "sha512-HjW1hHRLSncnM3MBCP7iquatHVJq9l0S2xxsHHj4yzf4nm9TU4Z7k4NkeMlD/dHQ4jPlQQhwcMvwbJiOefSuZw==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.16", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.16.tgz", - "integrity": "sha512-oCcUKrJaMn04Vxy9Ekd8x23O8LoU01+4NOkQ2iBToKgnGj5eo1vU9i27NQZ9qC8NFZgnQQZg5oZWAejmbsppNA==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", "dev": true, "optional": true }, @@ -11458,13 +10875,13 @@ "dev": true }, "eslint": { - "version": "8.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", + "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@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.10.0", @@ -11483,7 +10900,7 @@ "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", @@ -11802,6 +11219,16 @@ "flat-cache": "^3.0.4" } }, + "file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "requires": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -11926,9 +11353,9 @@ "dev": true }, "fs-extra": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.0.0.tgz", - "integrity": "sha512-4YxRvMi4P5C3WQTvdRfrv5UVqbISpqjORFQAW5QPiKAauaxNCwrEdIi6pG3tDFhKKpMen+enEhHIzB/tvIO+/w==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -12028,9 +11455,9 @@ } }, "globals": { - "version": "13.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", - "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -12202,10 +11629,15 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "ignore": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", - "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "import-fresh": { @@ -12279,9 +11711,9 @@ "dev": true }, "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "requires": { "has": "^1.0.3" @@ -12397,9 +11829,9 @@ "dev": true }, "js-sdsl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", "dev": true }, "js-sha3": { @@ -12614,9 +12046,9 @@ "dev": true }, "marked": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.3.tgz", - "integrity": "sha512-slWRdJkbTZ+PjkyJnE30Uid64eHwbwa1Q25INCAYfZlK4o6ylagBy/Le9eWntqJFoFT93ikUKMv47GZ4gTwHkw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.1.tgz", + "integrity": "sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==", "dev": true }, "marked-terminal": { @@ -12818,6 +12250,14 @@ "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", "dev": true }, + "node-cache": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz", + "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==", + "requires": { + "clone": "2.x" + } + }, "node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -12861,18 +12301,19 @@ "dev": true }, "npm": { - "version": "8.19.3", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.19.3.tgz", - "integrity": "sha512-0QjmyPtDxSyMWWD8I91QGbrgx9KzbV6C9FK1liEb/K0zppiZkr5KxXc990G+LzPwBHDfRjUBlO9T1qZ08vl9mA==", + "version": "8.19.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-8.19.2.tgz", + "integrity": "sha512-MWkISVv5f7iZbfNkry5/5YBqSYJEDAKSJdL+uzSQuyLg+hgLQUyZynu3SH6bOZlvR9ZvJYk2EiJO6B1r+ynwHg==", "dev": true, "requires": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.6.3", + "@npmcli/arborist": "^5.6.2", "@npmcli/ci-detect": "^2.0.0", "@npmcli/config": "^4.2.1", "@npmcli/fs": "^2.1.0", "@npmcli/map-workspaces": "^2.0.3", "@npmcli/package-json": "^2.0.0", + "@npmcli/promise-spawn": "*", "@npmcli/run-script": "^4.2.1", "abbrev": "~1.1.1", "archy": "~1.0.0", @@ -12883,18 +12324,18 @@ "cli-table3": "^0.6.2", "columnify": "^1.6.0", "fastest-levenshtein": "^1.0.12", - "fs-minipass": "^2.1.0", + "fs-minipass": "*", "glob": "^8.0.1", "graceful-fs": "^4.2.10", - "hosted-git-info": "^5.2.1", + "hosted-git-info": "^5.1.0", "ini": "^3.0.1", "init-package-json": "^3.0.2", "is-cidr": "^4.0.2", "json-parse-even-better-errors": "^2.3.1", "libnpmaccess": "^6.0.4", "libnpmdiff": "^4.0.5", - "libnpmexec": "^4.0.14", - "libnpmfund": "^3.0.5", + "libnpmexec": "^4.0.13", + "libnpmfund": "^3.0.4", "libnpmhook": "^8.0.4", "libnpmorg": "^4.0.4", "libnpmpack": "^4.1.3", @@ -12903,7 +12344,7 @@ "libnpmteam": "^4.0.4", "libnpmversion": "^3.0.7", "make-fetch-happen": "^10.2.0", - "minimatch": "^5.1.0", + "minimatch": "*", "minipass": "^3.1.6", "minipass-pipeline": "^1.2.4", "mkdirp": "^1.0.4", @@ -12958,7 +12399,7 @@ "dev": true }, "@npmcli/arborist": { - "version": "5.6.3", + "version": "5.6.2", "bundled": true, "dev": true, "requires": { @@ -12975,7 +12416,6 @@ "bin-links": "^3.0.3", "cacache": "^16.1.3", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^5.2.1", "json-parse-even-better-errors": "^2.3.1", "json-stringify-nice": "^1.1.4", "minimatch": "^5.1.0", @@ -13552,7 +12992,7 @@ "dev": true }, "hosted-git-info": { - "version": "5.2.1", + "version": "5.1.0", "bundled": true, "dev": true, "requires": { @@ -13749,11 +13189,11 @@ } }, "libnpmexec": { - "version": "4.0.14", + "version": "4.0.13", "bundled": true, "dev": true, "requires": { - "@npmcli/arborist": "^5.6.3", + "@npmcli/arborist": "^5.6.2", "@npmcli/ci-detect": "^2.0.0", "@npmcli/fs": "^2.1.1", "@npmcli/run-script": "^4.2.0", @@ -13770,11 +13210,11 @@ } }, "libnpmfund": { - "version": "3.0.5", + "version": "3.0.4", "bundled": true, "dev": true, "requires": { - "@npmcli/arborist": "^5.6.3" + "@npmcli/arborist": "^5.6.2" } }, "libnpmhook": { @@ -14836,6 +14276,11 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==" + }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -14910,9 +14355,9 @@ "dev": true }, "prettier": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", - "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", + "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", "dev": true }, "process-nextick-args": { @@ -14950,9 +14395,9 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "dev": true }, "q": { @@ -15146,6 +14591,26 @@ } } }, + "readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "requires": { + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "readonly-date": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/readonly-date/-/readonly-date-1.0.0.tgz", @@ -15596,7 +15061,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" }, @@ -15604,8 +15068,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -15656,6 +15119,15 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "requires": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15682,9 +15154,9 @@ "dev": true }, "swagger-ui-dist": { - "version": "4.15.5", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.15.5.tgz", - "integrity": "sha512-V3eIa28lwB6gg7/wfNvAbjwJYmDXy1Jo1POjyTzlB6wPcHiGlRxq39TSjYGVjQrUSAzpv+a7nzp7mDxgNy57xA==" + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.14.3.tgz", + "integrity": "sha512-Y7Sta24I9r+G6dX3ZTIq9Psr55cDC3myCB0E00ZnVkB0Wn3cO77NdLXSM0f90WZh9VpgTetKpMPR3n2VqKr+lQ==" }, "swagger-ui-express": { "version": "4.6.0", @@ -15780,6 +15252,15 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, + "token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "requires": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + } + }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -15838,15 +15319,15 @@ } }, "typescript": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", "dev": true }, "uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.3.tgz", + "integrity": "sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==", "dev": true, "optional": true }, @@ -15902,8 +15383,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "utils-merge": { "version": "1.0.1", @@ -15911,9 +15391,9 @@ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" }, "validate-npm-package-license": { "version": "3.0.4", diff --git a/package.json b/package.json index 316ecd9..28fa163 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@cheqd/did-registrar", - "version": "1.1.5", + "version": "2.0.0-develop.3", "description": "Universal Registrar for cheqd DID method", "homepage": "https://github.com/cheqd/did-registrar#readme", "license": "Apache-2.0", @@ -19,12 +19,13 @@ "build": "esbuild src/index.ts --platform=node --bundle --minify --outdir=dist --external:swagger-ui-express" }, "dependencies": { - "@cheqd/sdk": "npm:@daevm/cheqd-sdk@^1.3.5", - "@cheqd/ts-proto": "^1.0.15", - "@cosmjs/proto-signing": "^0.29.4", + "@cheqd/sdk": "2.0.0", + "@cheqd/ts-proto": "^2.0.0-develop.1", "dotenv": "^16.0.3", "express": "^4.18.2", "express-validator": "^6.14.2", + "node-cache": "^5.1.2", + "@cosmjs/proto-signing": "^0.29.4", "helmet": "^6.0.1", "node-fetch": "^3.3.0", "swagger-ui-express": "^4.6.0" @@ -41,6 +42,7 @@ "@types/node": "^18.11.9", "@types/node-fetch": "^2.6.2", "@types/swagger-ui-express": "^4.1.3", + "@types/uuid": "^9.0.0", "@typescript-eslint/eslint-plugin": "^5.45.0", "@typescript-eslint/parser": "^5.45.0", "conventional-changelog-conventionalcommits": "^5.0.0", diff --git a/src/app.ts b/src/app.ts index 15fcd93..0ea2907 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1,10 +1,12 @@ import express from 'express' import Helmet from 'helmet' -import { DidController } from './controllers/did' -import { CheqdRegistrar } from './service/cheqd' import * as swagger from 'swagger-ui-express' import * as swaggerJson from '../swagger.json' + +import { DidController } from './controllers/did' import { CheqdController } from './controllers/cheqd' +import { ResourceController } from './controllers/resource' +import { CheqdRegistrar } from './service/cheqd' class App { public express: express.Application @@ -30,9 +32,10 @@ class App { app.get('/', (req, res) => res.redirect('api-docs')) // did-registrar - app.post(`${URL_PREFIX}/create`, DidController.createValidator, new DidController().create) - app.post(`${URL_PREFIX}/update`, DidController.updateValidator, new DidController().update) - app.post(`${URL_PREFIX}/deactivate`, (req,res)=>res.send('To be implemented')) + app.post(`${URL_PREFIX}/create`, DidController.createValidator, DidController.commonValidator, new DidController().create) + app.post(`${URL_PREFIX}/update`, DidController.updateValidator, DidController.commonValidator, new DidController().update) + app.post(`${URL_PREFIX}/deactivate`, DidController.deactivateValidator, DidController.commonValidator, new DidController().deactivate) + app.post(`${URL_PREFIX}/:did/create-resource`, ResourceController.createValidator, DidController.commonValidator, new ResourceController().create) // cheqd-helpers app.get(`${URL_PREFIX}/key-pair`, new CheqdController().generateKeys) diff --git a/src/controllers/cheqd.ts b/src/controllers/cheqd.ts index 6c9bb0c..44b9d50 100644 --- a/src/controllers/cheqd.ts +++ b/src/controllers/cheqd.ts @@ -1,20 +1,27 @@ -import { createDidPayload, createDidVerificationMethod, createKeyPairBase64, createVerificationKeys } from '@cheqd/sdk' -import { CheqdNetwork, IKeyPair, MethodSpecificIdAlgo, VerificationMethods } from '@cheqd/sdk/build/types' import { Request, Response } from 'express' import { validationResult, query } from 'express-validator' + +import { createDidPayload, createDidVerificationMethod, createKeyPairHex, createVerificationKeys } from '@cheqd/sdk' +import { CheqdNetwork, MethodSpecificIdAlgo, VerificationMethods } from '@cheqd/sdk/build/types' + import { NetworkType } from '../service/cheqd' export class CheqdController { public static didDocValidator = [ - query('verificationMethod').isString().isIn([VerificationMethods.Base58, VerificationMethods.JWK]).withMessage('Invalid verificationMethod'), + query('verificationMethod').isString().isIn([VerificationMethods.Ed255192020, VerificationMethods.Ed255192018, VerificationMethods.JWK]).withMessage('Invalid verificationMethod'), query('methodSpecificIdAlgo').isString().isIn([MethodSpecificIdAlgo.Base58, MethodSpecificIdAlgo.Uuid]).withMessage('Invalid methodSpecificIdAlgo'), - query('methodSpecificIdLength').isNumeric().isIn([16, 32]).withMessage('Invalid methodSpecificIdLength length'), - query('network').optional().isString().isIn([NetworkType.Mainnet, NetworkType.Testnet]).withMessage('Invalid network') + query('network').optional().isString().isIn([NetworkType.Mainnet, NetworkType.Testnet]).withMessage('Invalid network'), + query('publicKeyHex').isString().withMessage('PublicKeyHex is required').isLength({min:64, max:64}).withMessage('PublicKeyHex should be of length 64') ] public generateKeys(request: Request<{},{},{},{seed?: string}>, response: Response) { - return response.json(createKeyPairBase64(request.query?.seed)) + const keyPair = createKeyPairHex(request.query?.seed) + + return response.json({ + privateKeyHex: keyPair.privateKey, + publicKeyHex: keyPair.publicKey + }) } public generateDidDoc(request: Request<{},{},{},IDidDocRequest>, response: Response) { @@ -26,23 +33,32 @@ export class CheqdController { }) } - const { verificationMethod, methodSpecificIdAlgo, methodSpecificIdLength, network, keyPair=createKeyPairBase64() } = request.query - - const verificationKeys = createVerificationKeys(keyPair, methodSpecificIdAlgo, 'key-1', methodSpecificIdLength, network) + const { verificationMethod, methodSpecificIdAlgo, network, publicKeyHex } = request.query + const verificationKeys = createVerificationKeys(publicKeyHex, methodSpecificIdAlgo, 'key-1', network) const verificationMethods = createDidVerificationMethod([verificationMethod], [verificationKeys]) return response.json({ didDoc: createDidPayload(verificationMethods, [verificationKeys]), - key: keyPair + key: { + verificationMethodId: (verificationMethods[0]).id, + publicKeyHex + } }) } + } export interface IDidDocRequest { verificationMethod: VerificationMethods methodSpecificIdAlgo: MethodSpecificIdAlgo - methodSpecificIdLength: number network: CheqdNetwork - keyPair: IKeyPair + publicKeyHex: string +} + +export interface IVerificationMethodRequest { + verificationMethod: VerificationMethods + methodSpecificIdAlgo: MethodSpecificIdAlgo + network: CheqdNetwork + publicKey: string } \ No newline at end of file diff --git a/src/controllers/did.ts b/src/controllers/did.ts index 53003eb..ae03a19 100644 --- a/src/controllers/did.ts +++ b/src/controllers/did.ts @@ -1,131 +1,259 @@ -import { IKeyPair, ISignInputs } from '@cheqd/sdk/build/types' -import { createDidPayloadWithSignInputs, createSignInputsFromKeyPair } from '@cheqd/sdk/build/utils' -import { MsgCreateDidPayload } from '@cheqd/ts-proto/cheqd/v1/tx' import { Request, Response } from 'express' import { validationResult, check } from 'express-validator' -import { jsonConcat, jsonSubtract, randomStr } from '../helpers/helpers' -import { CheqdRegistrar, CheqdResolver } from '../service/cheqd' -import { DidDocumentOperation, IDIDCreateRequest, IDIDUpdateRequest } from '../types/types' + +import { DIDDocument } from '@cheqd/sdk/build/types' +import { SignInfo } from '@cheqd/ts-proto/cheqd/did/v2' + +import { v4 } from 'uuid' + +import { convertToSignInfo, validateSpecCompliantPayload } from '../helpers/helpers' +import { Responses } from '../helpers/response' +import { CheqdRegistrar, CheqdResolver, NetworkType } from '../service/cheqd' +import { Messages } from '../types/constants' +import { DidDocumentOperation, IDIDCreateRequest, IDIDUpdateRequest, IState } from '../types/types' +import { LocalStore } from './store' export class DidController { public static createValidator = [ - check('secret').custom((value)=>{ - if (value) { - if(value.seed && value.keys) return false - else if(value.seed && value.seed.length != 32 ) return false + check('didDocument').custom((value, {req})=>{ + if(!req.body.jobId && value) { + const {valid} = validateSpecCompliantPayload(value) + return valid } return true - }).withMessage('Only one of seed or keys should be provided, Seed length should be 32') + }).withMessage(Messages.InvalidDidDocument) + ] + + public static commonValidator = [ + check('options.versionId').optional().isString().withMessage(Messages.InvalidOptions), + check('secret.signingResponse').optional().isArray().withMessage(Messages.InvalidSecret), + check('secret.signingResponse.*.signature').isString().withMessage(Messages.InvalidSecret), + check('secret.signingResponse.*.verificationMethodId').isString().withMessage(Messages.InvalidSecret) ] public static updateValidator = [ - check('didDocument').isArray().withMessage('didDocument is required'), - check('secret').isObject().custom((value) => value.keys).withMessage('secret with keys is required'), - check('did').isString().contains('did:cheqd:').withMessage('cheqd DID is required'), - check('didDocumentOperation').optional().isArray().custom((value) => value.includes(DidDocumentOperation.Set) ? value.length==1 : value.length<=2 ).withMessage('Set operation can\'t be used with Add/Remove') + check('didDocument').optional().isArray().custom((value, {req})=>{ + const {valid} = validateSpecCompliantPayload(value[0]) + return valid + }).withMessage(Messages.InvalidDidDocument), + check('jobId').custom((value, {req})=>value || (req.body.did && req.body.didDocument)).withMessage(Messages.Invalid), + check('did').optional().isString().withMessage(Messages.InvalidDid).contains('did:cheqd:').withMessage(Messages.InvalidDid), + check('didDocumentOperation').optional().isArray().custom((value) => value[0] === DidDocumentOperation.Set && value.length == 1 ).withMessage('Only Set operation is supported') + ] + + public static deactivateValidator = [ + check('did').custom((value, {req})=>{ + if(!value && !req.body.jobId) return false + return true + }).withMessage(Messages.InvalidDid), + check('did').optional().isString().withMessage(Messages.InvalidDid).contains('did:cheqd:').withMessage(Messages.InvalidDid) ] public async create(request: Request, response: Response) { // validate body const result = validationResult(request); if (!result.isEmpty()) { - return response.status(400).json({ - message: result.array()[0].msg - }) + return response.status(400).json(Responses.GetInvalidResponse( + request.body.didDocument, + request.body.secret, + result.array()[0].msg + )) } - let {secret, options, didDocument} = request.body as IDIDCreateRequest - - secret = secret || { seed: randomStr() } + let {jobId, secret={}, options={}, didDocument} = request.body as IDIDCreateRequest + let versionId: string + // Validate and get store data if any + if(jobId) { + const storeData = LocalStore.instance.getItem(jobId) + if(!storeData) { + return response.status(400).json(Responses.GetJobExpiredResponse(jobId)) + } else if (storeData.state == IState.Finished) { + return response.status(201).json(Responses.GetSuccessResponse(jobId, storeData.didDocument, secret)) + } + + didDocument = storeData.didDocument + versionId = storeData.versionId + } else { + jobId = v4() + versionId = options.versionId || v4() + } - await CheqdRegistrar.instance.connect(options?.network) + let signInputs: SignInfo[] - let didPayload: Partial, signInputs: ISignInputs[], keys: IKeyPair[] - if (didDocument && secret.keys) { - didPayload = didDocument - signInputs = createSignInputsFromKeyPair(didDocument, secret.keys) - keys = secret.keys + if (secret.signingResponse) { + signInputs = convertToSignInfo(secret.signingResponse) } else { - const response = createDidPayloadWithSignInputs(secret.seed, secret.keys) - didPayload = response.didPayload - signInputs = response.signInputs - keys = response.keys + LocalStore.instance.setItem(jobId, {didDocument, state: IState.Action, versionId}) + return response.status(200).json(await Responses.GetDIDActionSignatureResponse(jobId, didDocument, versionId)) } + options.network = options?.network || ((didDocument.id!.split(':'))[2] as NetworkType) + try { - await CheqdRegistrar.instance.create(signInputs, didPayload) - return response.status(201).json({ - jobId: null, - didState: { - did: didPayload.id, - state: "finished", - secret: { keys }, - didDocument: didPayload - } - }) + await CheqdRegistrar.instance.connect(options) + const result = await CheqdRegistrar.instance.create(signInputs, didDocument, versionId) + if ( result.code == 0 ) { + LocalStore.instance.setItem(jobId, {didDocument, state: IState.Finished, versionId}) + return response.status(201).json({ + jobId, + didState: { + did: didDocument.id, + state: IState.Finished, + secret, + didDocument + } + }) + } else { + return response.status(400).json(Responses.GetInvalidResponse(didDocument, secret, JSON.stringify(result.rawLog))) + } } catch (error) { - return response.status(500).json({ - message: `Internal server error: ${error}` - }) + return response.status(500).json(Responses.GetInternalErrorResponse(didDocument, secret, error as string)) } - } public async update(request: Request, response: Response) { // validate body const result = validationResult(request); if (!result.isEmpty()) { - return response.status(400).json({ - message: result.array()[0].msg - }) + return response.status(400).json(Responses.GetInvalidResponse( + request.body.didDocument, + request.body.secret, + result.array()[0].msg + )) } - const { secret, options, didDocument, didDocumentOperation=[DidDocumentOperation.Set], did } = request.body as IDIDUpdateRequest - await CheqdRegistrar.instance.connect(options?.network) - // check if did is registered on the ledger - let resolvedDocument = await CheqdResolver(did) - if(!resolvedDocument?.didDocument) { - return response.status(400).send({ - message: `${did} DID not found` - }) - } - console.log(didDocumentOperation) - var i=0 - let updatedDocument = resolvedDocument.didDocument - for (var operation of didDocumentOperation) { - switch (operation) { - case DidDocumentOperation.Set: - // TODO: validate didDocument schema - updatedDocument = didDocument[i] - break - case DidDocumentOperation.Add: - updatedDocument = jsonConcat(updatedDocument, didDocument[i]) - break - case DidDocumentOperation.Remove: - updatedDocument = jsonSubtract(updatedDocument, didDocument[i]) - break + let { jobId, secret={}, options={}, didDocument, did } = request.body as IDIDUpdateRequest + + let updatedDocument: DIDDocument | undefined + let versionId: string + try { + if (!jobId) { + // check if did is registered on the ledger + let resolvedDocument = await CheqdResolver(did) + + if(!resolvedDocument?.didDocument || resolvedDocument.didDocumentMetadata.deactivated) { + return response.status(400).send(Responses.GetInvalidResponse( + {id: did}, + secret, + Messages.DidNotFound + )) + } + + updatedDocument = didDocument[0] + jobId = v4() + versionId = options.versionId || v4() + } else { + const storeData = LocalStore.instance.getItem(jobId) + if(!storeData) { + return response.status(400).json(Responses.GetJobExpiredResponse(jobId)) + } else if (storeData.state == IState.Finished) { + return response.status(200).json(Responses.GetSuccessResponse(jobId, storeData.didDocument, secret)) + } + + updatedDocument = storeData.didDocument + versionId = storeData.versionId + did = updatedDocument.id! + } + + let signInputs: SignInfo[] + if (secret.signingResponse) { + signInputs = convertToSignInfo(secret.signingResponse) + } else { + LocalStore.instance.setItem(jobId, {didDocument: updatedDocument, state: IState.Action, versionId}) + return response.status(200).json(await Responses.GetDIDActionSignatureResponse(jobId, updatedDocument, versionId)) } - i++ + + options.network = options?.network || (did!.split(':'))[2] as NetworkType + await CheqdRegistrar.instance.connect(options) + const result = await CheqdRegistrar.instance.update(signInputs, updatedDocument, versionId) + if ( result.code == 0 ) { + return response.status(201).json(Responses.GetSuccessResponse(jobId, updatedDocument, secret)) + } else { + return response.status(400).json(Responses.GetInvalidResponse( + updatedDocument, + secret, + JSON.stringify(result.rawLog) + )) + } + } catch (error) { + return response.status(500).json(Responses.GetInternalErrorResponse(updatedDocument, secret, error as string)) + } + } + + public async deactivate (request: Request, response: Response) { + // validate body + const result = validationResult(request); + if (!result.isEmpty()) { + return response.status(400).json(Responses.GetInvalidResponse( + undefined, + request.body.secret, + result.array()[0].msg + )) } - updatedDocument.versionId = resolvedDocument.didDocumentMetadata.versionId + let { jobId, secret={}, options={}, did } = request.body as IDIDUpdateRequest + + let payload: DIDDocument + let versionId: string try { - const signInputs = createSignInputsFromKeyPair(updatedDocument, secret.keys) - await CheqdRegistrar.instance.update(signInputs, updatedDocument) - return response.status(201).json({ - jobId: null, - didState: { - did: updatedDocument.id, - state: "finished", - secret, - didDocument: updatedDocument + if(jobId) { + const storeData = LocalStore.instance.getItem(jobId) + if(!storeData) { + return response.status(400).json(Responses.GetJobExpiredResponse(jobId)) + } else if (storeData.state == IState.Finished) { + return response.status(201).json(Responses.GetSuccessResponse(jobId, storeData.didDocument, secret)) + } + + payload = storeData.didDocument + did = storeData.didDocument.id + versionId = storeData.versionId + } else { + jobId = v4() + versionId = options.versionId || v4() + // check if did is registered on the ledger + let resolvedDocument = await CheqdResolver(did) + + if(!resolvedDocument?.didDocument) { + return response.status(400).send(Responses.GetInvalidResponse( + {id: did}, + secret, + Messages.DidNotFound + )) + } + + payload = { + verificationMethod: resolvedDocument.didDocument.verificationMethod, + id: resolvedDocument.didDocument.id } - }) + } + + let signInputs: SignInfo[] + if (secret.signingResponse) { + signInputs = convertToSignInfo(secret.signingResponse) + } else { + LocalStore.instance.setItem(jobId, {didDocument: payload, state: IState.Action, versionId}) + return response.status(200).json(Responses.GetDeactivateDidSignatureResponse(jobId, payload, versionId)) + } + + options.network = options?.network || ((did!.split(':'))[2] as NetworkType) + await CheqdRegistrar.instance.connect(options) + const result = await CheqdRegistrar.instance.deactivate(signInputs, payload, versionId) + if ( result.code == 0 ) { + return response.status(201).json(Responses.GetSuccessResponse( + jobId, + {id: did}, + secret + )) + } else { + return response.status(400).json(Responses.GetInvalidResponse( + {id: did}, + secret, + JSON.stringify(result.rawLog) + )) + } } catch (error) { - return response.status(500).json({ - message: `Internal server error: ${error}` - }) + return response.status(500).json(Responses.GetInternalErrorResponse({id: did}, secret, error as string)) } } } \ No newline at end of file diff --git a/src/controllers/resource.ts b/src/controllers/resource.ts new file mode 100644 index 0000000..6b20f41 --- /dev/null +++ b/src/controllers/resource.ts @@ -0,0 +1,120 @@ +import { Request, Response } from 'express' +import { check, param, validationResult } from 'express-validator' + +import { MsgCreateResourcePayload } from '@cheqd/ts-proto/cheqd/resource/v2' +import { SignInfo } from '@cheqd/ts-proto/cheqd/did/v2' + +import { v4 } from 'uuid' +import { fromString } from 'uint8arrays' + +import { CheqdRegistrar, CheqdResolver, NetworkType } from '../service/cheqd' +import { IResourceCreateRequest, IState } from '../types/types' +import { Messages } from '../types/constants' +import { convertToSignInfo } from '../helpers/helpers' +import { Responses } from '../helpers/response' +import { LocalStore } from './store' + +export class ResourceController { + + public static createValidator = [ + param('did').exists().isString().contains('did:cheqd').withMessage(Messages.InvalidDid), + check('jobId').custom((value, {req})=>{ + if(!value && !(req.body.name && req.body.type && req.body.data)) return false + return true + }).withMessage('name, type and data are required') + ] + + public async create(request: Request, response: Response) { + + const result = validationResult(request); + if (!result.isEmpty()) { + return response.status(400).json(Responses.GetInvalidResourceResponse({}, request.body.secret, result.array()[0].msg)) + } + + const { did } = request.params + let { jobId, data, name, type, alsoKnownAs, version, secret={}, options={} } = request.body as IResourceCreateRequest + + let resourcePayload: Partial = {} + try { + // check if did is registered on the ledger + let resolvedDocument = await CheqdResolver(did) + if(!resolvedDocument?.didDocument || resolvedDocument.didDocumentMetadata.deactivated) { + return response.status(400).send(Responses.GetInvalidResponse( + {id: did}, + secret, + Messages.DidNotFound + )) + } else { + resolvedDocument = resolvedDocument.didDocument + } + + // Validate and get store data if any + if(jobId) { + const storeData = LocalStore.instance.getResource(jobId) + if(!storeData) { + return response.status(400).json(Responses.GetJobExpiredResponse(jobId)) + } else if (storeData.state == IState.Finished) { + return response.status(201).json({ + jobId, + resourceState: { + resourceId: storeData.resource.id, + state: IState.Finished, + secret, + resource: storeData.resource + } + }) + } + + resourcePayload = storeData.resource + resourcePayload.data = new Uint8Array(Object.values(resourcePayload.data!)) + } else if (!data) { + return response.status(400).json(Responses.GetInvalidResourceResponse({}, secret, Messages.InvalidResource)) + } else { + jobId = v4() + + resourcePayload = { + collectionId: did.split(':').pop()!, + id: v4(), + name, + resourceType: type, + data: fromString(data, 'base64'), + version, + alsoKnownAs + } + } + + let signInputs: SignInfo[] + + if (secret.signingResponse) { + signInputs = convertToSignInfo(secret.signingResponse) + } else { + LocalStore.instance.setResource(jobId, {resource: resourcePayload, state: IState.Action}) + return response.status(200).json(Responses.GetResourceActionSignatureResponse( + jobId, + resolvedDocument.verificationMethod, + resourcePayload + )) + } + + options.network = options.network || (did.split(':'))[2] as NetworkType + await CheqdRegistrar.instance.connect(options) + const result = await CheqdRegistrar.instance.createResource(signInputs, resourcePayload) + if ( result.code == 0 ) { + return response.status(201).json(Responses.GetResourceSuccessResponse(jobId, secret, resourcePayload)) + } else { + return response.status(400).json(Responses.GetInvalidResourceResponse(resourcePayload, secret, Messages.InvalidResource)) + } + } catch (error) { + return response.status(500).json({ + jobId, + resourceState: { + state: IState.Failed, + reason: Messages.Internal, + description: Messages.TryAgain + error, + secret, + resourcePayload + } + }) + } + } +} \ No newline at end of file diff --git a/src/controllers/store.ts b/src/controllers/store.ts new file mode 100644 index 0000000..4b6653f --- /dev/null +++ b/src/controllers/store.ts @@ -0,0 +1,51 @@ +import { DIDDocument } from '@cheqd/sdk/build/types'; +import { MsgCreateResourcePayload } from '@cheqd/ts-proto/cheqd/resource/v2'; + +import NodeCache from 'node-cache' +import * as dotenv from 'dotenv' + +import { IState } from '../types/types'; + +dotenv.config() + +let { + LOCAL_STORE_TTL +} = process.env + +export class LocalStore { + private cache: NodeCache + + public static instance = new LocalStore() + + constructor() { + this.cache = new NodeCache(); + } + + setItem(key: string, data: IDidDocData) { + this.cache.set(key, data, LOCAL_STORE_TTL || 600) + } + + getItem(key: string) { + return this.cache.get(key) as IDidDocData | undefined + } + + setResource(key: string, data: IResourceData) { + this.cache.set(key, data, LOCAL_STORE_TTL || 600) + } + + getResource(key: string) { + return this.cache.get(key) as IResourceData | undefined + } +} + + +export interface IDidDocData { + didDocument: DIDDocument + state: IState + versionId: string +} + +export interface IResourceData { + resource: Partial + state: IState +} \ No newline at end of file diff --git a/src/helpers/helpers.ts b/src/helpers/helpers.ts index 9f6de72..3c47513 100644 --- a/src/helpers/helpers.ts +++ b/src/helpers/helpers.ts @@ -1,28 +1,53 @@ -export function randomStr() { - var arr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - var ans = ''; - for (var i = 32; i > 0; i--) { - ans += - arr[Math.floor(Math.random() * arr.length)]; - } - return ans; -} +import { DIDDocument, SpecValidationResult, VerificationMethods } from "@cheqd/sdk/build/types"; +import { SignInfo } from "@cheqd/ts-proto/cheqd/did/v2"; + +import { base64ToBytes } from "did-jwt"; -export function jsonConcat(o1: Record, o2: Record) : any{ - for (var key in o2) { - if(Array.isArray(o1[key])) { - o1[key].push(...o2[key]) - } else { - o1[key] = o2[key] - }} - return o1 +import { ISignInfo } from "../types/types"; + +export function convertToSignInfo(payload: ISignInfo[]): SignInfo[] { + return payload.map((value)=>{ + return { + verificationMethodId: value.verificationMethodId, + signature: base64ToBytes(value.signature) + } + }) } -export function jsonSubtract(o1: Record, o2: Record) : any{ - for (var key in o2) { - if(o2[key] == o1[key]) { - delete(o1[key]) +export function validateSpecCompliantPayload(didDocument: DIDDocument) : SpecValidationResult { + // id is required, validated on both compile and runtime + if (!didDocument.id) return { valid: false, error: 'id is required' } + + // verificationMethod is required + if (!didDocument.verificationMethod) return { valid: false, error: 'verificationMethod is required' } + + // verificationMethod must be an array + if (!Array.isArray(didDocument.verificationMethod)) return { valid: false, error: 'verificationMethod must be an array' } + + // verificationMethod must be not be empty + if (!didDocument.verificationMethod.length) return { valid: false, error: 'verificationMethod must be not be empty' } + + // verificationMethod types must be supported + const isValidVerificationMethod = didDocument.verificationMethod.every((vm) => { + switch (vm.type) { + case VerificationMethods.Ed255192020: + return vm.publicKeyMultibase != null + case VerificationMethods.JWK: + return vm.publicKeyJwk != null + case VerificationMethods.Ed255192018: + return vm.publicKeyBase58 != null + default: + return false } - } - return o2 -} \ No newline at end of file + }) + + if(!isValidVerificationMethod) return { valid: false, error: 'verificationMethod publicKey is Invalid'} + + const isValidService = didDocument.service ? didDocument?.service?.every((s) => { + return Array.isArray(s?.serviceEndpoint) && s?.id && s?.type + }) : true + + if(!isValidService) return { valid: false, error: 'Service is Invalid'} + + return { valid: true } as SpecValidationResult +} diff --git a/src/helpers/response.ts b/src/helpers/response.ts new file mode 100644 index 0000000..d5f533d --- /dev/null +++ b/src/helpers/response.ts @@ -0,0 +1,195 @@ +import { DIDModule } from "@cheqd/sdk"; +import { DIDDocument, VerificationMethod } from "@cheqd/sdk/build/types"; +import { MsgCreateDidDocPayload, MsgDeactivateDidDocPayload } from "@cheqd/ts-proto/cheqd/did/v2"; +import { MsgCreateResourcePayload } from "@cheqd/ts-proto/cheqd/resource/v2"; + +import { toString } from "uint8arrays" + +import { Messages } from "../types/constants"; +import { IAction, IState } from "../types/types"; + +export class Responses { + + static GetSuccessResponse(jobId: string, didDocument: DIDDocument, secret: Record) { + return { + jobId, + didState: { + did: didDocument.id, + state: "finished", + secret, + didDocument + } + } + } + + static async GetDIDActionSignatureResponse(jobId: string, didPayload: DIDDocument, versionId: string) { + const { protobufVerificationMethod, protobufService } = await DIDModule.validateSpecCompliantPayload(didPayload) + const signingRequest = didPayload.verificationMethod!.map((method)=> { + return { + kid: method.id, + type: method.type, + alg: 'EdDSA', + serializedPayload: toString( + ( + MsgCreateDidDocPayload.encode(MsgCreateDidDocPayload.fromPartial({ + context: didPayload?.['@context'], + id: didPayload.id, + controller: didPayload.controller, + verificationMethod: protobufVerificationMethod, + authentication: didPayload.authentication, + assertionMethod: didPayload.assertionMethod, + capabilityInvocation: didPayload.capabilityInvocation, + capabilityDelegation: didPayload.capabilityDelegation, + keyAgreement: didPayload.keyAgreement, + service: protobufService, + alsoKnownAs: didPayload.alsoKnownAs, + versionId: versionId + })).finish() + ), + 'base64pad' + ) + } + }) + + return { + jobId, + didState: { + did: didPayload.id, + state: IState.Action, + action: IAction.GetSignature, + description: Messages.GetSignature, + signingRequest, + secret: { + signingResponse: [Messages.SigingResponse] + } + } + } + } + + static GetDeactivateDidSignatureResponse(jobId: string, payload: DIDDocument, versionId: string) { + const signingRequest = payload.verificationMethod!.map((method)=> { + return { + kid: method.id, + type: method.type, + alg: 'EdDSA', + serializedPayload: toString( + ( + MsgDeactivateDidDocPayload.encode({ + id: payload.id, + versionId: versionId + }).finish() + ), + 'base64pad' + ) + } + }) + + return { + jobId, + didState: { + did: payload.id, + state: IState.Action, + action: IAction.GetSignature, + description: Messages.GetSignature, + signingRequest, + secret: { + signingResponse: [Messages.SigingResponse] + } + } + } + } + + static GetResourceActionSignatureResponse(jobId: string, verificationMethod: VerificationMethod[], resource: Partial) { + const signingRequest = verificationMethod.map((method)=> { + return { + kid: method.id, + type: method.type, + alg: 'EdDSA', + serializedPayload: toString( + ( + MsgCreateResourcePayload.encode(MsgCreateResourcePayload.fromPartial(resource)).finish() + ), + 'base64pad' + ) + } + }) + + return { + jobId, + resourceState: { + did: resource.collectionId, + state: IState.Action, + action: IAction.GetSignature, + description: Messages.GetSignature, + signingRequest, + secret: { + signingResponse: [Messages.SigingResponse] + } + } + } + } + + static GetInvalidResponse(didDocument: DIDDocument | undefined, secret: Record = {}, error: string) { + return { + jobId: null, + didState: { + did: didDocument?.id || '', + state: IState.Failed, + reason: Messages.Invalid, + description: Messages.Invalid + ": " + error, + secret, + didDocument + } + } + } + + static GetInternalErrorResponse(didDocument: DIDDocument | undefined, secret: Record, error?: string) { + return { + jobId: null, + didState: { + state: IState.Failed, + reason: Messages.Internal, + description: Messages.TryAgain + ": " + error, + secret, + didDocument + } + } + } + + static GetJobExpiredResponse(jobId: string) { + return { + jobId, + didState: { + state: IState.Failed, + reason: Messages.InvalidJob + } + } + } + + static GetResourceSuccessResponse(jobId: string, secret: Record, resourcePayload: Partial) { + return { + jobId, + resourceState: { + resourceId: resourcePayload.id || '', + state: IState.Finished, + secret, + resource: resourcePayload + } + } + } + + static GetInvalidResourceResponse(resourcePayload: Partial = {}, secret: Record = {}, error: string) { + return { + jobId: null, + resourceState: { + resourceId: resourcePayload.id, + state: IState.Failed, + reason: Messages.Invalid, + description: Messages.Invalid + ": " + error, + secret, + resourcePayload + } + } + } + +} diff --git a/src/service/cheqd.ts b/src/service/cheqd.ts index a41ce26..4bf9da7 100644 --- a/src/service/cheqd.ts +++ b/src/service/cheqd.ts @@ -1,18 +1,23 @@ import type { ICheqdSDKOptions } from '@cheqd/sdk' +import { CheqdSDK, createCheqdSDK, DIDModule, ResourceModule } from '@cheqd/sdk' import type { AbstractCheqdSDKModule } from '@cheqd/sdk/build/modules/_' -import type { ISignInputs } from '@cheqd/sdk/build/types' -import type { MsgCreateDidPayload, MsgUpdateDidPayload } from '@cheqd/ts-proto/cheqd/v1/tx' - +import type { DIDDocument, DidStdFee } from '@cheqd/sdk/build/types' +import { MsgCreateResourcePayload } from '@cheqd/ts-proto/cheqd/resource/v2' +import { SignInfo } from '@cheqd/ts-proto/cheqd/did/v2' import { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing' -import { CheqdSDK, createCheqdSDK, DIDModule } from '@cheqd/sdk' + import * as dotenv from 'dotenv' import fetch from 'node-fetch' -dotenv.config() +import { Messages } from '../types/constants' +import { IOptions } from '../types/types' -const { FEE_PAYER_MNEMONIC, FEE_PAYER_ADDRESS } = process.env +dotenv.config() -const FEE = { amount: [{ denom: 'ncheq', amount: '5000000' }], gas: '200000', payer: FEE_PAYER_ADDRESS } +let { + FEE_PAYER_TESTNET_MNEMONIC, + FEE_PAYER_MAINNET_MNEMONIC +} = process.env export enum DefaultRPCUrl { Mainnet = 'https://rpc.cheqd.net', @@ -28,25 +33,41 @@ export enum DefaultResolverUrl { Cheqd = "https://resolver.cheqd.net" } +export enum Fee { + CreateDid = '50000000000', + UpdateDid = '25000000000', + DeactivateDid = '10000000000', + Gas = '400000' +} + export class CheqdRegistrar { private sdk?: CheqdSDK + private address?: string + private fee?: DidStdFee public static instance = new CheqdRegistrar() - - constructor() { - if(!FEE_PAYER_MNEMONIC && !FEE_PAYER_ADDRESS) { - throw new Error('No faucet address provided') + + public async connect(options: IOptions) { + if(options.network === NetworkType.Mainnet && !FEE_PAYER_MAINNET_MNEMONIC) { + throw new Error('No signer provided') + } else if(!FEE_PAYER_TESTNET_MNEMONIC) { + FEE_PAYER_TESTNET_MNEMONIC = Messages.TestnetFaucet } - } - - public async connect(network?: NetworkType) { - if (this.sdk) return + const sdkOptions: ICheqdSDKOptions = { - modules: [DIDModule as unknown as AbstractCheqdSDKModule], - rpcUrl: network === NetworkType.Mainnet ? DefaultRPCUrl.Mainnet : DefaultRPCUrl.Testnet, - wallet: await DirectSecp256k1HdWallet.fromMnemonic(FEE_PAYER_MNEMONIC!, {prefix: 'cheqd'}) + modules: [DIDModule as unknown as AbstractCheqdSDKModule, ResourceModule as unknown as AbstractCheqdSDKModule], + rpcUrl: options.rpcUrl ? options.rpcUrl : (options.network === NetworkType.Testnet ? DefaultRPCUrl.Testnet : DefaultRPCUrl.Mainnet), + wallet: await DirectSecp256k1HdWallet.fromMnemonic(options.network === NetworkType.Mainnet ? FEE_PAYER_MAINNET_MNEMONIC : FEE_PAYER_TESTNET_MNEMONIC, {prefix: 'cheqd'}) } + this.sdk = await createCheqdSDK(sdkOptions) + this.fee = options.fee + this.address = (await sdkOptions.wallet.getAccounts())[0].address + + if(!this.address) { + throw new Error("Invalid signer") + } + } public forceGetSdk(): CheqdSDK{ @@ -56,25 +77,51 @@ export class CheqdRegistrar { return this.sdk } - public async create(signInputs: ISignInputs[], didPayload: Partial) { + public async create(signInputs: SignInfo[], didPayload: DIDDocument, versionId: string | undefined) { return await this.forceGetSdk() .createDidTx( signInputs, didPayload, - FEE_PAYER_ADDRESS, - FEE, + this.address!, + this?.fee, undefined, + versionId, { sdk: this.forceGetSdk() } ) } - public async update(signInputs: ISignInputs[], didPayload: Partial) { + public async update(signInputs: SignInfo[], didPayload: DIDDocument, versionId: string | undefined) { return await this.forceGetSdk() .updateDidTx( signInputs, didPayload, - FEE_PAYER_ADDRESS, - FEE, + this.address!, + this?.fee, + undefined, + versionId, + { sdk: this.forceGetSdk() } + ) + } + + public async deactivate(signInputs: SignInfo[], didPayload: DIDDocument, versionId: string | undefined) { + return await this.forceGetSdk() + .deactivateDidTx( + signInputs, + didPayload, + this.address!, + this?.fee, + undefined, + versionId, + { sdk: this.forceGetSdk() } + ) + } + + public async createResource(signInputs: SignInfo[], resourcePayload: Partial) { + return await this.forceGetSdk().createResourceTx( + signInputs, + resourcePayload, + this.address!, + this?.fee, undefined, { sdk: this.forceGetSdk() } ) diff --git a/src/types/constants.ts b/src/types/constants.ts new file mode 100644 index 0000000..68ffad9 --- /dev/null +++ b/src/types/constants.ts @@ -0,0 +1,16 @@ +export enum Messages { + Invalid = "Invalid payload", + Internal = "Internal server error", + TryAgain = "The operation failed due to an internal error. Please try again", + GetSignature = "Please sign the following payload with the keys in verificationMethod and Add the signingResponse in secret", + DidNotFound = "The DID does not exist or Deactivated", + InvalidDidDocument = "Provide a DID Document with atleast one valid verification method", + InvalidDid = "The DID is not valid", + InvalidJob = "The jobId is either expired or not found", + SecretValidation = "Provide either a valid KeyPair or Signature", + InvalidResource = "Resource Data is invalid", + TestnetFaucet = "sketch mountain erode window enact net enrich smoke claim kangaroo another visual write meat latin bacon pulp similar forum guilt father state erase bright", + SigingResponse = "e.g. { verificationMethodId: did:cheqd:testnet:qsqdcansoica#key-1, signature: aca1s12q14213casdvaadcfas }", + InvalidOptions = "The provided options are invalid", + InvalidSecret = "The provided secret is invalid" +} \ No newline at end of file diff --git a/src/types/environment.d.ts b/src/types/environment.d.ts index 8f0bef7..fd12bfb 100644 --- a/src/types/environment.d.ts +++ b/src/types/environment.d.ts @@ -1,8 +1,10 @@ declare global { namespace NodeJS { interface ProcessEnv { - FEE_PAYER_ADDRESS: string - FEE_PAYER_MNEMONIC: string + FEE_PAYER_TESTNET_MNEMONIC: string + FEE_PAYER_MAINNET_MNEMONIC: string + LOCAL_STORE_TTL: number + PORT: number } } } diff --git a/src/types/types.ts b/src/types/types.ts index 35d3479..36c9644 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -1,29 +1,34 @@ -import { IKeyPair } from '@cheqd/sdk/build/types' -import { MsgCreateDidPayload, MsgUpdateDidPayload } from '@cheqd/ts-proto/cheqd/v1/tx' -import { NetworkType } from '../service/cheqd' +import { DIDDocument, DidStdFee } from '@cheqd/sdk/build/types' +import { AlternativeUri } from '@cheqd/ts-proto/cheqd/resource/v2' -export type IdentifierPayload = Partial | Partial +import { NetworkType } from '../service/cheqd' export interface IDIDCreateRequest { jobId: string | null - options?: { - network: NetworkType, - keytype: string - }, - secret: { - seed?: string, - keys?: IKeyPair[] - }, - didDocument: Partial + options?: IOptions, + secret: ISecret + didDocument: DIDDocument } export interface IDIDUpdateRequest { jobId: string | null did: string - options: Record, - secret: Record, + options: IOptions + secret: ISecret didDocumentOperation: DidDocumentOperation[] - didDocument: Partial[] + didDocument: DIDDocument[] +} + +export interface IResourceCreateRequest { + jobId: string | null + secret: ISecret + options: IOptions + data: any, + name: string, + type: string, + mimeType: string, + alsoKnownAs?: AlternativeUri[], + version: string } export enum DidDocumentOperation { @@ -36,7 +41,7 @@ export interface IDIDDeactivateRequest { jobId: string | null did: string options: Record, - secret: Record + secret: ISecret } export interface IDidResponse { @@ -47,8 +52,39 @@ export interface IDidResponse { } export interface IDidState { - state: any + state: IState + action?: IAction did: string - secret: Record - didDocument: Record + secret: ISecret + didDocument: DIDDocument +} + +export enum IState { + Init = "init", + Finished = "finished", + Action = "action", + Failed = "failed" +} + +export enum IAction { + GetVerificationMethod = "getVerificationMethod", + GetSignature = "signPayload", + Redirect = "redirect", + Wait = "wait" +} + +export interface ISignInfo { + verificationMethodId: string, + signature: string +} + +export interface ISecret { + signingResponse?: ISignInfo[] +} + +export interface IOptions { + network?: NetworkType, + rpcUrl?: string, + fee?: DidStdFee, + versionId?: string } \ No newline at end of file diff --git a/swagger.json b/swagger.json index e8a883d..12d8cea 100644 --- a/swagger.json +++ b/swagger.json @@ -18,7 +18,7 @@ } }, { - "name": "Cheqd" + "name": "Cheqd Helpers" } ], "paths": { @@ -63,13 +63,21 @@ "400": { "description": "A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.", "content": { - "application/json": {} + "application/json": { + "schema": { + "$ref": "#/components/schemas/InvalidRequest" + } + } } }, "500": { "description": "An internal error has occurred. Additional state information plus metadata may be available in the response body.", "content": { - "application/json": {} + "application/json": { + "schema": { + "$ref": "#/components/schemas/InvalidRequest" + } + } } } } @@ -106,13 +114,21 @@ "400": { "description": "A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.", "content": { - "application/json": {} + "application/json": { + "schema": { + "$ref": "#/components/schemas/InvalidRequest" + } + } } }, "500": { "description": "An internal error has occurred. Additional state information plus metadata may be available in the response body.", "content": { - "application/json": {} + "application/json": { + "schema": { + "$ref": "#/components/schemas/InvalidRequest" + } + } } } } @@ -149,22 +165,62 @@ "400": { "description": "A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.", "content": { - "application/json": {} + "application/json": { + "schema": { + "$ref": "#/components/schemas/InvalidRequest" + } + } } }, "500": { "description": "An internal error has occurred. Additional state information plus metadata may be available in the response body.", "content": { - "application/json": {} + "application/json": { + "schema": { + "$ref": "#/components/schemas/InvalidRequest" + } + } + } + } + } + } + }, + "/{did}/create-resource": { + "post": { + "tags": [ + "Resource" + ], + "summary": "Create a Resource", + "parameters": [ + { + "in": "path", + "name": "did", + "required": true, + "schema": { + "type": "string" } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateResourceRequest" + } + } + } + }, + "responses": { + "200": { + "description": "The resource is created successfully" + } } } }, "/key-pair": { "get": { "tags": [ - "Cheqd" + "Cheqd Helpers" ], "parameters": [ { @@ -193,7 +249,7 @@ "/did-document": { "get": { "tags": [ - "Cheqd" + "Cheqd Helpers" ], "parameters": [ { @@ -203,7 +259,8 @@ "type": "string", "enum": [ "Ed25519VerificationKey2020", - "JsonWebKey2020" + "JsonWebKey2020", + "Ed25519VerificationKey2018" ], "default": "Ed25519VerificationKey2020" } @@ -220,18 +277,6 @@ "default": "uuid" } }, - { - "in": "query", - "name": "methodSpecificIdLength", - "schema": { - "type": "number", - "enum": [ - 16, - 32 - ], - "default": 16 - } - }, { "in": "query", "name": "network", @@ -246,11 +291,11 @@ }, { "in": "query", - "name": "keyPair", + "name": "publicKeyHex", "schema": { - "$ref": "#/components/schemas/KeyPair" + "type": "string" } - } + } ], "responses": { "200": { @@ -269,41 +314,16 @@ "properties": { "jobId": { "description": "This input field is used to keep track of an ongoing DID creation process. See https://identity.foundation/did-registration/#jobid.", - "type": "string", - "example": "null" + "type": "string" }, "options": { "$ref": "#/components/schemas/Options" }, "secret": { - "description": "This input field accepts a seed or an array of keyPairs.", - "type": "object", - "properties": { - "seed": { - "type": "string" - }, - "keys": { - "type": "array", - "items": { - "$ref": "#/components/schemas/KeyPair" - } - } - }, - "example": { - "keys": [{ - "privateKey": "", - "publicKey": "" - }] - } + "$ref": "#/components/schemas/Secret" }, "didDocument": { - "type": "object", - "properties": { - "service": { - "$ref": "#/components/schemas/Service" - } - }, - "example": {} + "$ref": "#/components/schemas/DidDocument" } } }, @@ -311,108 +331,156 @@ "description": "Input fields for the update operation.", "type": "object", "additionalProperties": false, - "required": [ - "did", - "secret", - "didDocument" - ], "properties": { "jobId": { "description": "This input field is used to keep track of an ongoing DID update process. See https://identity.foundation/did-registration/#jobid.", - "type": "string", - "example": "null" + "type": "string" }, "did": { "description": "This input field indicates the DID that is the target of the DID update operation.", "type": "string", - "example": "did:cheqd:testnet:zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQ" + "example": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09" }, "options": { "$ref": "#/components/schemas/Options" }, "secret": { - "description": "This input field requires a keyPair.", - "type": "object", - "required": [ - "keys" - ], - "properties": { - "keys": { - "type": "array", - "items": { - "$ref": "#/components/schemas/KeyPair" - } - } - } + "$ref": "#/components/schemas/SigningResponse" }, "didDocumentOperation": { "type": "array", "items": { "type": "string" }, - "example": [ - "addToDidDocument" - ], "default": [ - "setToDidDocument" + "setDidDocument" ] }, "didDocument": { "type": "array", "items": { "$ref": "#/components/schemas/DidDocument" - }, - "example": [ - { - "service": [ - { - "id": "did:cheqd:testnet:zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQ#rand", - "type": "rand", - "serviceEndpoint": "https://rand.in" - } - ] - } - ] + } } + }, + "example": { + "did": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09", + "didDocumentOperation": [ + "setDidDocument" + ], + "didDocument": [ + { + "id": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09", + "controller": [ + "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09" + ], + "verificationMethod": [ + { + "id": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09#key-1", + "type": "Ed25519VerificationKey2020", + "controller": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09", + "publicKeyMultibase": "z6Mkt9Vg1a1Jbg5a1NkToUeWH23Z33TwGUua5MrqAYUz2AL3" + } + ], + "authentication": [ + "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09#key-1" + ], + "versionId": "978f4437-b498-4961-978f-116ffba7962c", + "service": [ + { + "id": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09#rand", + "type": "rand", + "serviceEndpoint": [ + "https://rand.in" + ] + } + ] + } + ] } }, "DeactivateRequest": { "description": "Input fields for the deactivate operation.", "type": "object", "additionalProperties": false, - "required": [ - "did", - "secret" - ], "properties": { "jobId": { "description": "This input field is used to keep track of an ongoing DID deactivation process. See https://identity.foundation/did-registration/#jobid.", - "type": "string", - "example": "null" + "type": "string" }, "did": { "description": "This input field indicates the DID that is the target of the DID deactivation operation.", - "type": "string", - "example": "did:cheqd:testnet:zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQ" + "type": "string" }, "options": { "$ref": "#/components/schemas/Options" }, + "secret": { + "$ref": "#/components/schemas/Secret" + } + }, + "example": { + "did": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09" + } + }, + "CreateResourceRequest": { + "description": "Input fields for the resource creation", + "type": "object", + "additionalProperties": false, + "properties": { + "jobId": { + "description": "This input field is used to keep track of an ongoing DID deactivation process. See https://identity.foundation/did-registration/#jobid.", + "type": "string" + }, "secret": { "description": "This input field requires a keyPair.", "type": "object", - "required": [ - "keys" - ], "properties": { "keys": { "type": "array", "items": { "$ref": "#/components/schemas/KeyPair" } + }, + "signingResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SigningResponse" + } } } + }, + "data": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "alsoKnownAs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "uri": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + }, + "version": { + "type": "string" } + }, + "example": { + "data": "SGVsbG8gV29ybGQ=", + "name": "ResourceName", + "type": "TextDocument" } }, "CreateState": { @@ -495,46 +563,13 @@ }, "did": { "type": "string", - "example": "did:cheqd:testnet:zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQ" + "example": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09" }, "secret": { - "type": "object", - "example": { - "keys": [ - { - "publicKey": "keaiUef4jaPvupBpC2IK9/H/yd/OPsgxCADOgftuLQc", - "privateKey": "Z0FhWmllZzNtbExTZVJId1RzNUhTa1dIOG5TWnNpRkSR5qJR5" - } - ] - } + "$ref": "#/components/schemas/Secret" }, "didDocument": { - "type": "object", - "example": { - "context": [], - "id": "did:cheqd:testnet:zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQ", - "controller": [ - "did:cheqd:testnet:zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQ" - ], - "authentication": [ - "did:cheqd:testnet:zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQ#key-0" - ], - "assertionMethod": [], - "capabilityInvocation": [], - "capabilityDelegation": [], - "keyAgreement": [], - "alsoKnownAs": [], - "verificationMethod": [ - { - "id": "did:cheqd:testnet:zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQ#key-0", - "type": "Ed25519VerificationKey2020", - "controller": "did:cheqd:testnet:zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQ", - "publicKeyMultibase": "zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQsFzQoQNbAoVdp", - "publicKeyJwk": [] - } - ], - "service": [] - } + "$ref": "#/components/schemas/DidDocument" } } }, @@ -542,15 +577,17 @@ "description": "This input field contains an object with DID controller keys and other secrets needed for performing the DID deactivate operation. See https://identity.foundation/did-registration/#secret.", "type": "object", "properties": { - "seed": { - "type": "string", - "example": "72WGp7NgFR1Oqdi8zlt7jQQ434XR0cNQ" - }, - "keys": { + "sigingResponse": { "type": "array", "items": { - "$ref": "#/components/schemas/KeyPair" - } + "$ref": "#/components/schemas/SigningResponse" + }, + "example": [ + { + "verificationMethodId": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09", + "signature": "keaiUef4jaPvupBpC2IK9/H/yd/OPsgxCADOgftuLQc" + } + ] } } }, @@ -569,10 +606,24 @@ "KeyPair": { "type": "object", "properties": { - "publicKey": { + "verificationMethodId": { + "type": "string" + }, + "privateKeyHex": { "type": "string" }, - "privateKey": { + "publicKeyHex": { + "type": "string" + } + } + }, + "SigningResponse": { + "type": "object", + "properties": { + "verificationMethodId": { + "type": "string" + }, + "signature": { "type": "string" } } @@ -589,7 +640,7 @@ }, "id": { "type": "string", - "example": "did:cheqd:testnet:zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQ" + "example": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09" }, "controller": { "type": "array", @@ -597,7 +648,7 @@ "type": "string" }, "example": [ - "did:cheqd:testnet:zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQ" + "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09" ] }, "authentication": { @@ -606,7 +657,7 @@ "type": "string" }, "example": [ - "did:cheqd:testnet:zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQ#key-0" + "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09#key-0" ] }, "assertionMethod": { @@ -645,6 +696,23 @@ "$ref": "#/components/schemas/Service" } } + }, + "example": { + "id": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09", + "controller": [ + "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09" + ], + "verificationMethod": [ + { + "id": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09#key-1", + "type": "Ed25519VerificationKey2020", + "controller": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09", + "publicKeyMultibase": "z6Mkt9Vg1a1Jbg5a1NkToUeWH23Z33TwGUua5MrqAYUz2AL3" + } + ], + "authentication": [ + "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09#key-1" + ] } }, "VerificationMethod": { @@ -652,7 +720,7 @@ "properties": { "id": { "type": "string", - "example": "did:cheqd:testnet:zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQ#key-0" + "example": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09#key-0" }, "type": { "type": "string", @@ -660,11 +728,11 @@ }, "controller": { "type": "string", - "example": "did:cheqd:testnet:zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQ" + "example": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09" }, "publicKeyMultibase": { "type": "string", - "example": "zApY6E8Prv1rWcjRtBKENGaVm2kRk1VQsFzQoQNbAoVdp" + "example": "z6Mkt9Vg1a1Jbg5a1NkToUeWH23Z33TwGUua5MrqAYUz2AL3" }, "publicKeyJwk": { "type": "array", @@ -679,15 +747,49 @@ "properties": { "id": { "type": "string", - "example": "did:cheqd:testnet:zH7YZn7RcjdaTLBtEkvU9B5rVtrP6cMo#rand," + "example": "did:cheqd:testnet:ca9ff47c-0286-4614-a4be-8ffa83911e09#rand," }, "type": { "type": "string", "example": "rand," }, "serviceEndpoint": { - "type": "string", - "example": "https://rand.in" + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "https://rand.in" + ] + } + } + }, + "InvalidRequest": { + "type": "object", + "properties": { + "jobId": { + "type": "string" + }, + "didState": { + "type": "object", + "properties": { + "state": { + "type": "string", + "example": "failed" + }, + "reason": { + "type": "string" + }, + "description": { + "type": "string" + }, + "secret": { + "$ref": "#/components/schemas/Secret" + }, + "didDocument": { + "$ref": "#/components/schemas/DidDocument" + } + } } } }