diff --git a/.changeset/flat-students-compare.md b/.changeset/flat-students-compare.md new file mode 100644 index 000000000..a4eb7fd17 --- /dev/null +++ b/.changeset/flat-students-compare.md @@ -0,0 +1,14 @@ +--- +"@web5/agent": minor +"@web5/api": patch +"@web5/credentials": patch +"@web5/crypto": patch +"@web5/crypto-aws-kms": patch +"@web5/dids": patch +"@web5/identity-agent": patch +"@web5/proxy-agent": patch +"@web5/user-agent": patch +--- + +introduce initial web5 connect implementation +bump crypto diff --git a/.github/workflows/docs-ci.yml b/.github/workflows/docs-ci.yml index 078073e42..e45b31040 100644 --- a/.github/workflows/docs-ci.yml +++ b/.github/workflows/docs-ci.yml @@ -36,8 +36,8 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} report_changed_scope_only: false - fail_on_warnings: true - fail_on_error: true + fail_on_warnings: false + fail_on_error: false group_docs: true entry_points: | - file: packages/api/src/index.ts diff --git a/.github/workflows/reports.yml b/.github/workflows/reports.yml index 527c9d32a..ecda111d3 100644 --- a/.github/workflows/reports.yml +++ b/.github/workflows/reports.yml @@ -34,7 +34,7 @@ jobs: echo "DWN_SERVER_BACKGROUND_PROCESS=$!" >> $GITHUB_ENV - name: Build tests for all packages - run: pnpm --recursive --stream --sequential build:tests:node + run: pnpm --recursive --stream build:tests:node - name: Run tests for all packages run: pnpm --recursive --stream exec c8 mocha -- --color --reporter mocha-junit-reporter --reporter-options mochaFile=./results.xml diff --git a/.github/workflows/tests-ci.yml b/.github/workflows/tests-ci.yml index ea8c9ecd7..d416744dd 100644 --- a/.github/workflows/tests-ci.yml +++ b/.github/workflows/tests-ci.yml @@ -57,7 +57,7 @@ jobs: - name: Run dwn-server (background) run: | - node node_modules/@web5/dwn-server/dist/esm/src/main.js & + npx @web5/dwn-server & echo "DWN_SERVER_BACKGROUND_PROCESS=$!" >> $GITHUB_ENV - name: Build tests for all packages @@ -106,12 +106,6 @@ jobs: with: cache: "true" - - name: Print Node.js, npm, & pnpm versions for debugging if needed - run: | - node -v - npm -v - pnpm -v - - name: Install dependencies run: pnpm install --no-frozen-lockfile diff --git a/.vscode/settings.json b/.vscode/settings.json index 61fb25e94..8056e3b91 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,10 @@ { - "npm.packageManager": "pnpm" + "npm.packageManager": "pnpm", + "editor.formatOnSave":true, + "eslint.useFlatConfig": true, + "eslint.lintTask.enable": true, + "eslint.workingDirectories": [{ "mode": "auto" }], + "eslint.format.enable": true, + "[javascript]": { "editor.defaultFormatter": "dbaeumer.vscode-eslint" }, + "[typescript]": { "editor.defaultFormatter": "dbaeumer.vscode-eslint" }, } \ No newline at end of file diff --git a/CODEOWNERS b/CODEOWNERS index 827fb48e7..05282e1b5 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -10,20 +10,20 @@ # These are owners who can approve folders under the root directory and other CICD and QoL directories. # Should be the union list of all owners of sub-directories, optionally minus the default owners. -/* @csuwildcat @lirancohen @thehenrytsai @diehuxx @shamilovtim @nitro-neal -/.changeset @csuwildcat @lirancohen @thehenrytsai @diehuxx @shamilovtim @nitro-neal -/.codesandbox @csuwildcat @lirancohen @thehenrytsai @diehuxx @shamilovtim @nitro-neal -/.github @csuwildcat @lirancohen @thehenrytsai @diehuxx @shamilovtim @nitro-neal -/.vscode @csuwildcat @lirancohen @thehenrytsai @diehuxx @shamilovtim @nitro-neal -/scripts @csuwildcat @lirancohen @thehenrytsai @diehuxx @shamilovtim @nitro-neal +/* @csuwildcat @lirancohen @thehenrytsai @shamilovtim @nitro-neal +/.changeset @csuwildcat @lirancohen @thehenrytsai @shamilovtim @nitro-neal +/.codesandbox @csuwildcat @lirancohen @thehenrytsai @shamilovtim @nitro-neal +/.github @csuwildcat @lirancohen @thehenrytsai @shamilovtim @nitro-neal +/.vscode @csuwildcat @lirancohen @thehenrytsai @shamilovtim @nitro-neal +/scripts @csuwildcat @lirancohen @thehenrytsai @shamilovtim @nitro-neal # These are owners of any file in the `common`, `crypto`, `crypto-aws-kms`, `dids`, and # `credentials` packages and their sub-directories. -/packages/common @csuwildcat @diehuxx @thehenrytsai @nitro-neal -/packages/crypto @csuwildcat @diehuxx @thehenrytsai -/packages/crypto-aws-kms @csuwildcat @diehuxx @thehenrytsai -/packages/dids @csuwildcat @diehuxx @thehenrytsai @nitro-neal -/packages/credentials @csuwildcat @diehuxx @thehenrytsai @nitro-neal +/packages/common @csuwildcat @thehenrytsai @nitro-neal +/packages/crypto @csuwildcat @thehenrytsai @nitro-neal +/packages/crypto-aws-kms @csuwildcat @thehenrytsai @nitro-neal +/packages/dids @csuwildcat @thehenrytsai @nitro-neal +/packages/credentials @csuwildcat @thehenrytsai @nitro-neal # These are owners of any file in the `agent`, `user-agent`, `proxy-agent`, `identity-agent`, and # `api` packages and their sub-directories. diff --git a/bin/corepack b/bin/corepack deleted file mode 120000 index 8ff3b5ad5..000000000 --- a/bin/corepack +++ /dev/null @@ -1 +0,0 @@ -.node-20.15.1.pkg \ No newline at end of file diff --git a/codecov.yml b/codecov.yml index 8f1f056d1..7f0d6841b 100644 --- a/codecov.yml +++ b/codecov.yml @@ -8,7 +8,7 @@ component_management: target: auto # auto compares coverage to the previous base commit threshold: 5% # allows a 5% drop from the previous base commit coverage - type: patch - target: 90 # every PR opened should strive for at least 90% coverage + target: 90 individual_components: - component_id: package-agent @@ -59,3 +59,4 @@ coverage: patch: default: informational: true # Don't gate PRs based on Codecov passing thresholds + if_ci_failed: success diff --git a/eslint.config.cjs b/eslint.config.cjs index 4a6c3e09c..a328c1b3f 100644 --- a/eslint.config.cjs +++ b/eslint.config.cjs @@ -1,8 +1,8 @@ -const eslint = require('@eslint/js'); -const globals = require('globals'); -const tsParser = require('@typescript-eslint/parser'); -const tsPlugin = require('@typescript-eslint/eslint-plugin'); -const mochaPlugin = require('eslint-plugin-mocha'); +const eslint = require("@eslint/js"); +const globals = require("globals"); +const tsParser = require("@typescript-eslint/parser"); +const tsPlugin = require("@typescript-eslint/eslint-plugin"); +const mochaPlugin = require("eslint-plugin-mocha"); /** @type {import('eslint').ESLint.ConfigData} */ module.exports = [ @@ -10,83 +10,77 @@ module.exports = [ mochaPlugin.configs.flat.recommended, // tsPlugin.configs.flat.recommended, // @typescript-eslint v7.9.0 doesn't have a recommended config yet, v8 alpha build has it, so should be available soon. { - // extends : ['eslint:recommended', 'plugin:@typescript-eslint/recommended'], - languageOptions: { - parser: tsParser, - parserOptions: { - ecmaFeatures: { modules: true }, - ecmaVersion: '2022', - project: [ - 'tests/tsconfig.json'// this is the config that includes both `src` and `tests` directories - ] + // extends : ['eslint:recommended', 'plugin:@typescript-eslint/recommended'], + languageOptions: { + parser: tsParser, + parserOptions: { + ecmaFeatures: { modules: true }, + ecmaVersion: "2022", + project: [ + "tests/tsconfig.json", // this is the config that includes both `src` and `tests` directories + ], + }, + globals: { + ...globals.node, + ...globals.es2021, + ...globals.browser, + console: "readonly", + }, + }, + plugins: { + "@typescript-eslint": tsPlugin, + mocha: mochaPlugin, + }, + files: ["**/*.ts"], + // IMPORTANT and confusing: `ignores` only exclude files from the `files` setting. + // To exclude *.js files entirely, you need to have a separate config object altogether. (See another `ignores` below.) + ignores: ["**/*.d.ts"], + rules: { + "no-undef": "off", + "no-redeclare": "off", + "key-spacing": [ + "error", + { + align: { + afterColon: true, + beforeColon: true, + on: "colon", + }, + }, + ], + quotes: ["error", "single", { allowTemplateLiterals: true }], + semi: ["error", "always"], + indent: ["error", 2, { SwitchCase: 1 }], + "no-unused-vars": "off", + "prefer-const": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { + vars: "all", + args: "after-used", + ignoreRestSiblings: true, + argsIgnorePattern: "^_", + varsIgnorePattern: "^_", + }, + ], + "no-dupe-class-members": "off", + "no-trailing-spaces": ["error"], + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/no-unused-vars": "off", + // TODO: Revisit new default mocha rules that were disabled in #579 - https://github.com/TBD54566975/web5-js/issues/580 + "mocha/no-exclusive-tests": "warn", + "mocha/no-setup-in-describe": "off", + "mocha/no-mocha-arrows": "off", + "mocha/max-top-level-suites": "off", + "mocha/no-identical-title": "off", + "mocha/no-pending-tests": "off", + "mocha/no-skipped-tests": "off", + "mocha/no-sibling-hooks": "off", }, - globals: { - ...globals.node, - ...globals.es2021, - ...globals.browser - } }, - plugins: { - '@typescript-eslint': tsPlugin, - 'mocha': mochaPlugin + { + ignores: ["**/*.js", "**/*.cjs", "**/*.mjs"], }, - files: [ - '**/*.ts' - ], - // IMPORTANT and confusing: `ignores` only exclude files from the `files` setting. - // To exclude *.js files entirely, you need to have a separate config object altogether. (See another `ignores` below.) - ignores: [ - '**/*.d.ts', - ], - rules: { - 'key-spacing': [ - 'error', - { - 'align': { - 'afterColon' : true, - 'beforeColon' : true, - 'on' : 'colon' - } - } - ], - 'quotes': [ - 'error', - 'single', - { 'allowTemplateLiterals': true } - ], - 'semi' : ['error', 'always'], - 'indent' : ['error', 2, { 'SwitchCase': 1 }], - 'no-unused-vars' : 'off', - 'prefer-const' : 'off', - '@typescript-eslint/no-unused-vars' : [ - 'error', - { - 'vars' : 'all', - 'args' : 'after-used', - 'ignoreRestSiblings' : true, - 'argsIgnorePattern' : '^_', - 'varsIgnorePattern' : '^_' - } - ], - 'no-dupe-class-members' : 'off', - 'no-trailing-spaces' : ['error'], - '@typescript-eslint/no-explicit-any' : 'off', - '@typescript-eslint/no-non-null-assertion' : 'off', - '@typescript-eslint/ban-ts-comment' : 'off', - // TODO: Revisit new default mocha rules that were disabled in #579 - https://github.com/TBD54566975/web5-js/issues/580 - 'mocha/no-exclusive-tests' : 'warn', - 'mocha/no-setup-in-describe' : 'off', - 'mocha/no-mocha-arrows' : 'off', - 'mocha/max-top-level-suites' : 'off', - 'mocha/no-identical-title' : 'off', - 'mocha/no-pending-tests' : 'off', - 'mocha/no-skipped-tests' : 'off', - 'mocha/no-sibling-hooks' : 'off', - } -}, { - ignores: [ - '**/*.js', - '**/*.cjs', - '**/*.mjs', - ], -}]; \ No newline at end of file +]; diff --git a/examples/wallet-connect.html b/examples/wallet-connect.html new file mode 100644 index 000000000..32d530f22 --- /dev/null +++ b/examples/wallet-connect.html @@ -0,0 +1,224 @@ + + + + + + + Web5 Connect Example + + + + +
+ +
+

Loading...

+
+
+ + +
+

Scan with a web5 compatible wallet

+
+
+ +
+
+ + +
+

Pin Entry

+
+ + + +
+
+ + +
+

Success

+

You have connected the DID from your wallet.

+

+
+ + +

+
+ + + + + + + \ No newline at end of file diff --git a/package.json b/package.json index ab1ec70cf..ba1d3204c 100644 --- a/package.json +++ b/package.json @@ -17,9 +17,9 @@ "scripts": { "clean": "pnpm npkill -d $(pwd)/packages -t dist && pnpm npkill -d $(pwd) -t node_modules", "build": "pnpm --recursive --stream build", - "dwn-server": "DWN_SERVER_PACKAGE_JSON=node_modules/@web5/dwn-server/package.json node node_modules/@web5/dwn-server/dist/esm/src/main.js || true", "test:node": "pnpm --recursive test:node", - "audit-ci": "audit-ci --config ./audit-ci.json" + "audit-ci": "audit-ci --config ./audit-ci.json", + "wallet:connect:example": "npx http-server & HTTP_SERVER_PID=$! && sleep 2 && open 'http://localhost:8080/examples/wallet-connect.html' && wait $HTTP_SERVER_PID" }, "repository": { "type": "git", @@ -31,9 +31,10 @@ "@changesets/cli": "^2.27.5", "@npmcli/package-json": "5.0.0", "@typescript-eslint/eslint-plugin": "7.9.0", - "@web5/dwn-server": "0.4.3", + "@web5/dwn-server": "0.4.4", "audit-ci": "^7.0.1", "eslint-plugin-mocha": "10.4.3", + "globals": "^13.24.0", "npkill": "0.11.3" }, "pnpm": { diff --git a/packages/agent/.mocharc.json b/packages/agent/.mocharc.json index 5aa8c5bfe..ab67dfc38 100644 --- a/packages/agent/.mocharc.json +++ b/packages/agent/.mocharc.json @@ -2,4 +2,4 @@ "enable-source-maps": true, "exit": true, "spec": ["tests/compiled/**/*.spec.js"] -} \ No newline at end of file +} diff --git a/packages/agent/package.json b/packages/agent/package.json index 32abef05a..9fb8ca688 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -73,7 +73,7 @@ "@scure/bip39": "1.2.2", "@tbd54566975/dwn-sdk-js": "0.4.4", "@web5/common": "1.0.0", - "@web5/crypto": "1.0.0", + "@web5/crypto": "workspace:*", "@web5/dids": "1.1.0", "abstract-level": "1.0.4", "ed25519-keygen": "0.4.11", @@ -90,7 +90,7 @@ "@types/eslint": "8.56.10", "@types/mocha": "10.0.1", "@types/ms": "0.7.31", - "@types/node": "20.11.19", + "@types/node": "20.14.8", "@types/sinon": "17.0.3", "@typescript-eslint/eslint-plugin": "7.9.0", "@typescript-eslint/parser": "7.14.1", diff --git a/packages/agent/src/connect.ts b/packages/agent/src/connect.ts new file mode 100644 index 000000000..e3f8e51cc --- /dev/null +++ b/packages/agent/src/connect.ts @@ -0,0 +1,182 @@ +import { CryptoUtils } from '@web5/crypto'; +import { DwnProtocolDefinition, DwnRecordsPermissionScope } from './index.js'; +import { + Web5ConnectAuthResponse, + Oidc, + type PushedAuthResponse, +} from './oidc.js'; +import { pollWithTtl } from './utils.js'; +import { DidJwk } from '@web5/dids'; +import { Convert } from '@web5/common'; + +/** + * Initiates the wallet connect process. Used when a client wants to obtain + * a did from a provider. + */ +async function initClient({ + connectServerUrl, + walletUri, + permissionRequests, + onWalletUriReady, + validatePin, +}: WalletConnectOptions) { + // ephemeral client did for ECDH, signing, verification + // TODO: use separate keys for ECDH vs. sign/verify. could maybe use secp256k1. + const clientDid = await DidJwk.create(); + + // TODO: properly implement PKCE. this implementation is lacking server side validations and more. + // https://github.com/TBD54566975/web5-js/issues/829 + // Derive the code challenge based on the code verifier + // const { codeChallengeBytes, codeChallengeBase64Url } = + // await Oidc.generateCodeChallenge(); + const encryptionKey = CryptoUtils.randomBytes(32); + + // build callback URL to pass into the auth request + const callbackEndpoint = Oidc.buildOidcUrl({ + baseURL : connectServerUrl, + endpoint : 'callback', + }); + + // build the PAR request + const request = await Oidc.createAuthRequest({ + client_id : clientDid.uri, + scope : 'openid did:jwk', + // code_challenge : codeChallengeBase64Url, + // code_challenge_method : 'S256', + permissionRequests : permissionRequests, + redirect_uri : callbackEndpoint, + }); + + // Sign the Request Object using the Client DID's signing key. + const requestJwt = await Oidc.signJwt({ + did : clientDid, + data : request, + }); + + if (!requestJwt) { + throw new Error('Unable to sign requestObject'); + } + // Encrypt the Request Object JWT using the code challenge. + const requestObjectJwe = await Oidc.encryptAuthRequest({ + jwt: requestJwt, + encryptionKey, + }); + + // Convert the encrypted Request Object to URLSearchParams for form encoding. + const formEncodedRequest = new URLSearchParams({ + request: requestObjectJwe, + }); + + const pushedAuthorizationRequestEndpoint = Oidc.buildOidcUrl({ + baseURL : connectServerUrl, + endpoint : 'pushedAuthorizationRequest', + }); + + const parResponse = await fetch(pushedAuthorizationRequestEndpoint, { + body : formEncodedRequest, + method : 'POST', + headers : { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + }); + + if (!parResponse.ok) { + throw new Error(`${parResponse.status}: ${parResponse.statusText}`); + } + + const parData: PushedAuthResponse = await parResponse.json(); + + // a deeplink to a web5 compatible wallet. if the wallet scans this link it should receive + // a route to its web5 connect provider flow and the params of where to fetch the auth request. + const generatedWalletUri = new URL(walletUri); + generatedWalletUri.searchParams.set('request_uri', parData.request_uri); + generatedWalletUri.searchParams.set('encryption_key', Convert.uint8Array(encryptionKey).toBase64Url()); + + // call user's callback so they can send the URI to the wallet as they see fit + onWalletUriReady(generatedWalletUri.toString()); + + const tokenUrl = Oidc.buildOidcUrl({ + baseURL : connectServerUrl, + endpoint : 'token', + tokenParam : request.state, + }); + + // subscribe to receiving a response from the wallet with default TTL. receive ciphertext of {@link Web5ConnectAuthResponse} + const authResponse = await pollWithTtl(() => fetch(tokenUrl)); + + if (authResponse) { + const jwe = await authResponse?.text(); + + // get the pin from the user and use it as AAD to decrypt + const pin = await validatePin(); + const jwt = await Oidc.decryptAuthResponse(clientDid, jwe, pin); + const verifiedAuthResponse = (await Oidc.verifyJwt({ + jwt, + })) as Web5ConnectAuthResponse; + + return { + delegateGrants : verifiedAuthResponse.delegateGrants, + delegateDid : verifiedAuthResponse.delegateDid, + connectedDid : verifiedAuthResponse.iss, + }; + } +} + +/** + * Initiates the wallet connect process. Used when a client wants to obtain + * a did from a provider. + */ +export type WalletConnectOptions = { + /** The URL of the intermediary server which relays messages between the client and provider */ + connectServerUrl: string; + + /** + * The URI of the Provider (wallet).The `onWalletUriReady` will take this wallet + * uri and add a payload to it which will be used to obtain and decrypt from the `request_uri`. + * @example `web5://` or `http://localhost:3000/`. + */ + walletUri: string; + + /** + * The protocols of permissions requested, along with the definition and + * permission scopes for each protocol. The key is the protocol URL and + * the value is an object with the protocol definition and the permission scopes. + */ + permissionRequests: ConnectPermissionRequest[]; + + /** + * The Web5 API provides a URI to the wallet based on the `walletUri` plus a query params payload valid for 5 minutes. + * The link can either be used as a deep link on the same device or a QR code for cross device or both. + * The query params are `{ request_uri: string; encryption_key: string; }` + * The wallet will use the `request_uri to contact the intermediary server's `authorize` endpoint + * and pull down the {@link Web5ConnectAuthRequest} and use the `encryption_key` to decrypt it. + * + * @param uri - The URI returned by the web5 connect API to be passed to a provider. + */ + onWalletUriReady: (uri: string) => void; + + /** + * Function that must be provided to submit the pin entered by the user on the client. + * The pin is used to decrypt the {@link Web5ConnectAuthResponse} that was retrieved from the + * token endpoint by the client inside of web5 connect. + * + * @returns A promise that resolves to the PIN as a string. + */ + validatePin: () => Promise; +}; + +/** + * The protocols of permissions requested, along with the definition and permission scopes for each protocol. + */ +export type ConnectPermissionRequest = { + /** + * The definition of the protocol the permissions are being requested for. + * In the event that the protocol is not already installed, the wallet will install this given protocol definition. + */ + protocolDefinition: DwnProtocolDefinition; + + /** The scope of the permissions being requested for the given protocol */ + permissionScopes: DwnRecordsPermissionScope[]; +}; + +export const WalletConnect = { initClient }; diff --git a/packages/agent/src/index.ts b/packages/agent/src/index.ts index 5012fb1fd..4af5f24de 100644 --- a/packages/agent/src/index.ts +++ b/packages/agent/src/index.ts @@ -24,3 +24,5 @@ export * from './sync-api.js'; export * from './sync-engine-level.js'; export * from './test-harness.js'; export * from './utils.js'; +export * from './connect.js'; +export * from './oidc.js'; \ No newline at end of file diff --git a/packages/agent/src/oidc.ts b/packages/agent/src/oidc.ts new file mode 100644 index 000000000..96b948941 --- /dev/null +++ b/packages/agent/src/oidc.ts @@ -0,0 +1,729 @@ +import { Convert, RequireOnly } from '@web5/common'; +import { + Ed25519, + EdDsaAlgorithm, + JoseHeaderParams, + Jwk, + Sha256, + X25519, + CryptoUtils, +} from '@web5/crypto'; +import { concatenateUrl } from './utils.js'; +import { xchacha20poly1305 } from '@noble/ciphers/chacha'; +import type { ConnectPermissionRequest } from './connect.js'; +import { DidDocument, DidJwk, PortableDid, type BearerDid } from '@web5/dids'; +import { AgentDwnApi } from './dwn-api.js'; +import { DwnInterfaceName, DwnMethodName } from '@tbd54566975/dwn-sdk-js'; +import { DwnInterface } from './types/dwn.js'; + +/** + * Sent to an OIDC server to authorize a client. Allows clients + * to securely send authorization request parameters directly to + * the server via POST. This avoids exposing sensitive data in URLs + * and ensures the server validates the request before user interaction. + * + * @see {@link https://www.rfc-editor.org/rfc/rfc9126.html | OAuth 2.0 Pushed Authorization Requests} + */ +export type PushedAuthRequest = { + /** The JWT which contains the {@link Web5ConnectAuthRequest} */ + request: string; +}; + +/** + * Sent back by OIDC server in response to {@link PushedAuthRequest} + * The server generates a TTL and a unique request_uri. The request_uri can be shared + * with the Provider using a link or a QR code along with additional params + * to access the url and decrypt the payload. + */ +export type PushedAuthResponse = { + request_uri: string; + expires_in: number; +}; + +/** + * Used in decentralized apps. The SIOPv2 Auth Request is created by a client relying party (RP) + * often a web service or an app who wants to obtain information from a provider + * The contents of this are inserted into a JWT inside of the {@link PushedAuthRequest}. + * @see {@link https://github.com/TBD54566975/known-customer-credential | TBD OIDC Documentation for SIOPv2 } + */ +export type SIOPv2AuthRequest = { + /** The DID of the client (RP) */ + client_id: string; + + /** The scope of the access request (e.g., `openid profile`). */ + scope: string; + + /** The type of response desired (e.g. `id_token`) */ + response_type: string; + + /** the URL to which the Identity Provider will post the Authorization Response */ + redirect_uri: string; + + /** The URI to which the SIOPv2 Authorization Response will be sent (Tim's note: not used with encrypted request JWT)*/ + response_uri?: string; + + /** + * An opaque value used to maintain state between the request and the callback. + * Recommended for security to prevent CSRF attacks. + */ + state: string; + + /** + * A string value used to associate a client session with an ID token to mitigate replay attacks. + * Recommended when requesting ID tokens. + */ + nonce: string; + + /** + * The PKCE code challenge. + * Required if `code_challenge_method` is used. Enhances security for public clients (e.g., single-page apps, + * mobile apps) by requiring an additional verification step during token exchange. + */ + code_challenge?: string; + + /** The method used for the PKCE challenge (typically `S256`). Must be present if `code_challenge` is included. */ + code_challenge_method?: 'S256'; + + /** + * An ID token previously issued to the client, passed as a hint about the end-user’s current or past authenticated + * session with the client. Can streamline user experience if already logged in. + */ + id_token_hint?: string; + + /** A hint to the authorization server about the login identifier the user might use. Useful for pre-filling login information. */ + login_hint?: string; + + /** Requested Authentication Context Class Reference values. Specifies the authentication context requirements. */ + acr_values?: string; + + /** When using a PAR for secure cross device flows we use a "form_post" rather than a "direct_post" */ + response_mode: 'direct_post'; + + /** Used by PFI to request VCs as input to IDV process. If present, `response_type: "vp_token""` MUST also be present */ + presentation_definition?: any; + + /** A JSON object containing the Verifier metadata values (Tim's note: from TBD KCC Repo) */ + client_metadata?: { + /** Array of strings, each a DID method supported for the subject of ID Token */ + subject_syntax_types_supported: string[]; + /** Human-readable string name of the client to be presented to the end-user during authorization */ + client_name?: string; + /** URI of a web page providing information about the client */ + client_uri?: string; + /** URI of an image logo for the client */ + logo_uri?: string; + /** Array of strings representing ways to contact people responsible for this client, typically email addresses */ + contacts?: string[]; + /** URI that points to a terms of service document for the client */ + tos_uri?: string; + /** URI that points to a privacy policy document */ + policy_uri?: string; + }; +}; + +/** + * An auth request that is compatible with both Web5 Connect and (hopefully, WIP) OIDC SIOPv2 + * The contents of this are inserted into a JWT inside of the {@link PushedAuthRequest}. + */ +export type Web5ConnectAuthRequest = { + /** PermissionGrants that are to be sent to the provider */ + permissionRequests: ConnectPermissionRequest[]; +} & SIOPv2AuthRequest; + +/** The fields for an OIDC SIOPv2 Auth Repsonse */ +export type SIOPv2AuthResponse = { + /** Issuer MUST match the value of sub (Applicant's DID) */ + iss: string; + /** Subject Identifier. A locally unique and never reassigned identifier + * within the Issuer for the End-User, which is intended to be consumed + * by the Client. */ + sub: string; + /** Audience(s) that this ID Token is intended for. It MUST contain the + * OAuth 2.0 client_id of the Relying Party as an audience value. */ + aud: string; + /** Time at which the JWT was issued. */ + iat: number; + /** Expiration time on or after which the ID Token MUST NOT be accepted + * for processing. */ + exp: number; + /** Time when the End-User authentication occurred. */ + auth_time?: number; + /** b64url encoded nonce used to associate a Client session with an ID Token, and to + * mitigate replay attacks. */ + nonce?: string; + /** Custom claims. */ + [key: string]: any; +}; + +/** An auth response that is compatible with both Web5 Connect and (hopefully, WIP) OIDC SIOPv2 */ +export type Web5ConnectAuthResponse = { + delegateGrants: any[]; + delegateDid: PortableDid; +} & SIOPv2AuthResponse; + +/** Represents the different OIDC endpoint types. + * 1. `pushedAuthorizationRequest`: client sends {@link PushedAuthRequest} receives {@link PushedAuthResponse} + * 2. `authorize`: provider gets the {@link Web5ConnectAuthRequest} JWT that was stored by the PAR + * 3. `callback`: provider sends {@link Web5ConnectAuthResponse} to this endpoint + * 4. `token`: client gets {@link Web5ConnectAuthResponse} from this endpoint + */ +type OidcEndpoint = + | 'pushedAuthorizationRequest' + | 'authorize' + | 'callback' + | 'token'; + +/** + * Gets the correct OIDC endpoint out of the {@link OidcEndpoint} options provided. + * Handles a trailing slash on baseURL + * + * @param {Object} options the options object + * @param {string} options.baseURL for example `http://foo.com/connect/ + * @param {OidcEndpoint} options.endpoint the OIDC endpoint desired + * @param {string} options.authParam this is the unique id which must be provided when getting the `authorize` endpoint + * @param {string} options.tokenParam this is the random state as b64url which must be provided with the `token` endpoint + */ +function buildOidcUrl({ + baseURL, + endpoint, + authParam, + tokenParam, +}: { + baseURL: string; + endpoint: OidcEndpoint; + authParam?: string; + tokenParam?: string; +}) { + switch (endpoint) { + /** 1. client sends {@link PushedAuthRequest} & client receives {@link PushedAuthResponse} */ + case 'pushedAuthorizationRequest': + return concatenateUrl(baseURL, 'par'); + /** 2. provider gets {@link Web5ConnectAuthRequest} */ + case 'authorize': + if (!authParam) + throw new Error( + `authParam must be providied when building a token URL` + ); + return concatenateUrl(baseURL, `authorize/${authParam}.jwt`); + /** 3. provider sends {@link Web5ConnectAuthResponse} */ + case 'callback': + return concatenateUrl(baseURL, `callback`); + /** 4. client gets {@link Web5ConnectAuthResponse */ + case 'token': + if (!tokenParam) + throw new Error( + `tokenParam must be providied when building a token URL` + ); + return concatenateUrl(baseURL, `token/${tokenParam}.jwt`); + // TODO: metadata endpoints? + default: + throw new Error(`No matches for endpoint specified: ${endpoint}`); + } +} + +/** + * Generates a cryptographically random "code challenge" in + * accordance with the RFC 7636 PKCE specification. + * + * @see {@link https://datatracker.ietf.org/doc/html/rfc7636#section-4.2 | RFC 7636 } + */ +async function generateCodeChallenge() { + const codeVerifierBytes = CryptoUtils.randomBytes(32); + const codeChallengeBytes = await Sha256.digest({ data: codeVerifierBytes }); + const codeChallengeBase64Url = + Convert.uint8Array(codeChallengeBytes).toBase64Url(); + + return { codeChallengeBytes, codeChallengeBase64Url }; +} + +/** Client creates the {@link Web5ConnectAuthRequest} */ +async function createAuthRequest( + options: RequireOnly< + Web5ConnectAuthRequest, + | 'client_id' + | 'scope' + | 'redirect_uri' + | 'permissionRequests' + > +) { + // Generate a random state value to associate the authorization request with the response. + const stateBytes = CryptoUtils.randomBytes(16); + + // Generate a random nonce value to associate the ID Token with the authorization request. + const nonceBytes = CryptoUtils.randomBytes(16); + + const requestObject: Web5ConnectAuthRequest = { + ...options, + nonce : Convert.uint8Array(nonceBytes).toBase64Url(), + response_type : 'id_token', + response_mode : 'direct_post', + state : Convert.uint8Array(stateBytes).toBase64Url(), + client_metadata : { + subject_syntax_types_supported: ['did:dht', 'did:jwk'], + }, + }; + + return requestObject; +} + +/** Encrypts the auth request with the key which will be passed through QR code */ +async function encryptAuthRequest({ + jwt, + encryptionKey, +}: { + jwt: string; + encryptionKey: Uint8Array; +}) { + const protectedHeader = { + alg : 'dir', + cty : 'JWT', + enc : 'XC20P', + typ : 'JWT', + }; + const nonce = CryptoUtils.randomBytes(24); + const additionalData = Convert.object(protectedHeader).toUint8Array(); + const jwtBytes = Convert.string(jwt).toUint8Array(); + const chacha = xchacha20poly1305(encryptionKey, nonce, additionalData); + const ciphertextAndTag = chacha.encrypt(jwtBytes); + + /** The cipher output concatenates the encrypted data and tag + * so we need to extract the values for use in the JWE. */ + const ciphertext = ciphertextAndTag.subarray(0, -16); + const authenticationTag = ciphertextAndTag.subarray(-16); + + const compactJwe = [ + Convert.object(protectedHeader).toBase64Url(), + '', // Empty string since there is no wrapped key. + Convert.uint8Array(nonce).toBase64Url(), + Convert.uint8Array(ciphertext).toBase64Url(), + Convert.uint8Array(authenticationTag).toBase64Url(), + ].join('.'); + + return compactJwe; +} + +/** Create a response object compatible with Web5 Connect and OIDC SIOPv2 */ +async function createResponseObject( + options: RequireOnly< + Web5ConnectAuthResponse, + 'iss' | 'sub' | 'aud' | 'delegateGrants' | 'delegateDid' + > +) { + const currentTimeInSeconds = Math.floor(Date.now() / 1000); + + const responseObject: Web5ConnectAuthResponse = { + ...options, + iat : currentTimeInSeconds, + exp : currentTimeInSeconds + 600, // Expires in 10 minutes. + }; + + return responseObject; +} + +/** sign an object and transform it into a jwt using a did */ +async function signJwt({ + did, + data, +}: { + did: BearerDid; + data: Record; +}) { + const header = Convert.object({ + alg : 'EdDSA', + kid : did.document.verificationMethod![0].id, + typ : 'JWT', + }).toBase64Url(); + + const payload = Convert.object(data).toBase64Url(); + + // signs using ed25519 EdDSA + const signer = await did.getSigner(); + const signature = await signer.sign({ + data: Convert.string(`${header}.${payload}`).toUint8Array(), + }); + + const signatureBase64Url = Convert.uint8Array(signature).toBase64Url(); + + const jwt = `${header}.${payload}.${signatureBase64Url}`; + + return jwt; +} + +/** Take the decrypted JWT and verify it was signed by its public DID. Return parsed object. */ +async function verifyJwt({ jwt }: { jwt: string }) { + const [headerB64U, payloadB64U, signatureB64U] = jwt.split('.'); + + // Convert the header back to a JOSE object and verify that the 'kid' header value is present. + const header: JoseHeaderParams = Convert.base64Url(headerB64U).toObject(); + + if (!header.kid) + throw new Error( + `OIDC: Object could not be verified due to missing 'kid' header value.` + ); + + // Resolve the Client DID document. + const { didDocument } = await DidJwk.resolve(header.kid.split('#')[0]); + + if (!didDocument) + throw new Error( + 'OIDC: Object could not be verified due to Client DID resolution issue.' + ); + + // Get the public key used to sign the Object from the DID document. + const { publicKeyJwk } = + didDocument.verificationMethod?.find((method: any) => { + return method.id === header.kid; + }) ?? {}; + + if (!publicKeyJwk) + throw new Error( + 'OIDC: Object could not be verified due to missing public key in DID document.' + ); + + const EdDsa = new EdDsaAlgorithm(); + const isValid = await EdDsa.verify({ + key : publicKeyJwk, + signature : Convert.base64Url(signatureB64U).toUint8Array(), + data : Convert.string(`${headerB64U}.${payloadB64U}`).toUint8Array(), + }); + + if (!isValid) + throw new Error( + 'OIDC: Object failed verification due to invalid signature.' + ); + + const object = Convert.base64Url(payloadB64U).toObject(); + + return object; +} + +/** + * Fetches the {@Web5ConnectAuthRequest} from the authorize endpoint and decrypts it + * using the encryption key passed via QR code. + */ +const getAuthRequest = async (request_uri: string, encryption_key: string) => { + const authRequest = await fetch(request_uri); + const jwe = await authRequest.text(); + const jwt = decryptAuthRequest({ + jwe, + encryption_key, + }); + const web5ConnectAuthRequest = (await verifyJwt({ + jwt, + })) as Web5ConnectAuthRequest; + + return web5ConnectAuthRequest; +}; + +/** Take the encrypted JWE, decrypt using the code challenge and return a JWT string which will need to be verified */ +function decryptAuthRequest({ + jwe, + encryption_key, +}: { + jwe: string; + encryption_key: string; +}) { + const [ + protectedHeaderB64U, + , + nonceB64U, + ciphertextB64U, + authenticationTagB64U, + ] = jwe.split('.'); + + const encryptionKeyBytes = Convert.base64Url(encryption_key).toUint8Array(); + const protectedHeader = Convert.base64Url(protectedHeaderB64U).toUint8Array(); + const additionalData = protectedHeader; + const nonce = Convert.base64Url(nonceB64U).toUint8Array(); + const ciphertext = Convert.base64Url(ciphertextB64U).toUint8Array(); + const authenticationTag = Convert.base64Url( + authenticationTagB64U + ).toUint8Array(); + + // The cipher expects the encrypted data and tag to be concatenated. + const ciphertextAndTag = new Uint8Array([ + ...ciphertext, + ...authenticationTag, + ]); + const chacha = xchacha20poly1305(encryptionKeyBytes, nonce, additionalData); + const decryptedJwtBytes = chacha.decrypt(ciphertextAndTag); + const jwt = Convert.uint8Array(decryptedJwtBytes).toString(); + + return jwt; +} + +/** + * The client uses to decrypt the jwe obtained from the auth server which contains + * the {@link Web5ConnectAuthResponse} that was sent by the provider to the auth server. + * + * @async + * @param {BearerDid} clientDid - The did that was initially used by the client for ECDH at connect init. + * @param {string} jwe - The encrypted data as a jwe. + * @param {string} pin - The pin that was obtained from the user. + */ +async function decryptAuthResponse( + clientDid: BearerDid, + jwe: string, + pin: string +) { + const [ + protectedHeaderB64U, + , + nonceB64U, + ciphertextB64U, + authenticationTagB64U, + ] = jwe.split('.'); + + // get the delegatedid public key from the header + const header = Convert.base64Url(protectedHeaderB64U).toObject() as Jwk; + const delegateDid = await DidJwk.resolve(header.kid!.split('#')[0]); + + // derive ECDH shared key using the provider's public key and our clientDid private key + const sharedKey = await Oidc.deriveSharedKey( + clientDid, + delegateDid.didDocument! + ); + + // add the pin to the AAD + const additionalData = { ...header, pin: pin }; + const AAD = Convert.object(additionalData).toUint8Array(); + + const nonce = Convert.base64Url(nonceB64U).toUint8Array(); + const ciphertext = Convert.base64Url(ciphertextB64U).toUint8Array(); + const authenticationTag = Convert.base64Url( + authenticationTagB64U + ).toUint8Array(); + + // The cipher expects the encrypted data and tag to be concatenated. + const ciphertextAndTag = new Uint8Array([ + ...ciphertext, + ...authenticationTag, + ]); + + // decrypt using the sharedKey + const chacha = xchacha20poly1305(sharedKey, nonce, AAD); + const decryptedJwtBytes = chacha.decrypt(ciphertextAndTag); + const jwt = Convert.uint8Array(decryptedJwtBytes).toString(); + + return jwt; +} + +/** Derives a shared ECDH private key in order to encrypt the {@link Web5ConnectAuthResponse} */ +async function deriveSharedKey( + privateKeyDid: BearerDid, + publicKeyDid: DidDocument +) { + const privatePortableDid = await privateKeyDid.export(); + + const publicJwk = publicKeyDid.verificationMethod?.[0].publicKeyJwk!; + const privateJwk = privatePortableDid.privateKeys?.[0]!; + publicJwk.alg = 'EdDSA'; + + const publicX25519 = await Ed25519.convertPublicKeyToX25519({ + publicKey: publicJwk, + }); + const privateX25519 = await Ed25519.convertPrivateKeyToX25519({ + privateKey: privateJwk, + }); + + const sharedKey = await X25519.sharedSecret({ + privateKeyA : privateX25519, + publicKeyB : publicX25519, + }); + + const derivedKey = await crypto.subtle.importKey( + 'raw', + sharedKey, + { name: 'HKDF' }, + false, + ['deriveBits'] + ); + const derivedKeyBits = await crypto.subtle.deriveBits( + { + name : 'HKDF', + hash : 'SHA-256', + info : new Uint8Array(), + salt : new Uint8Array(), + }, + derivedKey, + 256 + ); + const sharedEncryptionKey = new Uint8Array(derivedKeyBits); + return sharedEncryptionKey; +} + +/** + * Encrypts the auth response jwt. Requires a randomPin is added to the AAD of the + * encryption algorithm in order to prevent man in the middle and eavesdropping attacks. + * The keyid of the delegate did is used to pass the public key to the client in order + * for the client to derive the shared ECDH private key. + */ +function encryptAuthResponse({ + jwt, + encryptionKey, + delegateDidKeyId, + randomPin, +}: { + jwt: string; + encryptionKey: Uint8Array; + delegateDidKeyId: string; + randomPin: string; +}) { + const protectedHeader = { + alg : 'dir', + cty : 'JWT', + enc : 'XC20P', + typ : 'JWT', + kid : delegateDidKeyId, + }; + const nonce = CryptoUtils.randomBytes(24); + const additionalData = Convert.object({ + ...protectedHeader, + pin: randomPin, + }).toUint8Array(); + + const jwtBytes = Convert.string(jwt).toUint8Array(); + const chacha = xchacha20poly1305(encryptionKey, nonce, additionalData); + const ciphertextAndTag = chacha.encrypt(jwtBytes); + + /** The cipher output concatenates the encrypted data and tag + * so we need to extract the values for use in the JWE. */ + const ciphertext = ciphertextAndTag.subarray(0, -16); + const authenticationTag = ciphertextAndTag.subarray(-16); + + const compactJwe = [ + Convert.object(protectedHeader).toBase64Url(), + '', // Empty string since there is no wrapped key. + Convert.uint8Array(nonce).toBase64Url(), + Convert.uint8Array(ciphertext).toBase64Url(), + Convert.uint8Array(authenticationTag).toBase64Url(), + ].join('.'); + + return compactJwe; +} + +/** + * Creates the permission grants that assign to the selectedDid the level of + * permissions that the web app requested in the {@link Web5ConnectAuthRequest} + */ +export async function createPermissionGrants( + selectedDid: string, + delegateDid: BearerDid, + dwn: AgentDwnApi +) { + // TODO: remove mock after adding functionality: https://github.com/TBD54566975/web5-js/issues/827 + const permissionRequestData = { + description: + 'The app is asking to Records Write to http://profile-protocol.xyz', + scope: { + interface : DwnInterfaceName.Records, + method : DwnMethodName.Write, + protocol : 'http://profile-protocol.xyz', + }, + }; + + // TODO: remove mock after adding functionality: https://github.com/TBD54566975/web5-js/issues/827 + const message = await dwn.processRequest({ + author : selectedDid, + target : selectedDid, + messageType : DwnInterface.RecordsWrite, + messageParams : { + recipient : delegateDid.uri, + protocolPath : 'grant', + protocol : ' https://tbd.website/dwn/permissions', + dataFormat : 'application/json', + data : Convert.object(permissionRequestData).toUint8Array(), + }, + // todo: is it data or datastream? + // dataStream: await Convert.object(permissionRequestData).toBlobAsync(), + }); + + return [message]; +} + +/** + * Creates a delegate did which the web app will use as its future indentity. + * Assigns to that DID the level of permissions that the web app requested in + * the {@link Web5ConnectAuthRequest}. Encrypts via ECDH key that the web app + * will have access to because the web app has the public key which it provided + * in the {@link Web5ConnectAuthRequest}. Then sends the ciphertext of this + * {@link Web5ConnectAuthResponse} to the callback endpoint. Which the + * web app will need to retrieve from the token endpoint and decrypt with the pin to access. + */ +async function submitAuthResponse( + selectedDid: string, + authRequest: Web5ConnectAuthRequest, + randomPin: string, + dwn: AgentDwnApi +) { + const delegateDid = await DidJwk.create(); + const delegateDidPortable = await delegateDid.export(); + + const permissionGrants = await Oidc.createPermissionGrants( + selectedDid, + delegateDid, + dwn + ); + + const responseObject = await Oidc.createResponseObject({ + //* the IDP's did that was selected to be connected + iss : selectedDid, + //* the client's new identity + sub : delegateDid.uri, + //* the client's temporary ephemeral did used for connect + aud : authRequest.client_id, + //* the nonce of the original auth request + nonce : authRequest.nonce, + delegateGrants : permissionGrants, + delegateDid : delegateDidPortable, + }); + + // Sign the Response Object using the ephemeral DID's signing key. + const responseObjectJwt = await Oidc.signJwt({ + did : delegateDid, + data : responseObject, + }); + const clientDid = await DidJwk.resolve(authRequest.client_id); + + const sharedKey = await Oidc.deriveSharedKey( + delegateDid, + clientDid?.didDocument! + ); + + const encryptedResponse = Oidc.encryptAuthResponse({ + jwt : responseObjectJwt!, + encryptionKey : sharedKey, + delegateDidKeyId : delegateDid.document.verificationMethod![0].id, + randomPin, + }); + + const formEncodedRequest = new URLSearchParams({ + id_token : encryptedResponse, + state : authRequest.state, + }).toString(); + + await fetch(authRequest.redirect_uri, { + body : formEncodedRequest, + method : 'POST', + headers : { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + }); +} + +export const Oidc = { + createAuthRequest, + encryptAuthRequest, + getAuthRequest, + decryptAuthRequest, + createPermissionGrants, + createResponseObject, + encryptAuthResponse, + decryptAuthResponse, + deriveSharedKey, + signJwt, + verifyJwt, + buildOidcUrl, + generateCodeChallenge, + submitAuthResponse, +}; diff --git a/packages/agent/src/prototyping/clients/json-rpc.ts b/packages/agent/src/prototyping/clients/json-rpc.ts index 73327d743..9973b709e 100644 --- a/packages/agent/src/prototyping/clients/json-rpc.ts +++ b/packages/agent/src/prototyping/clients/json-rpc.ts @@ -29,7 +29,8 @@ export enum JsonRpcErrorCodes { // App defined errors BadRequest = -50400, // equivalent to HTTP Status 400 Unauthorized = -50401, // equivalent to HTTP Status 401 - Forbidden = -50403, // equivalent to HTTP Status 403 + Forbidden = -50403, // equivalent to HTTP Status 403, + Conflict = -50409, // equivalent to HTTP Status 409 } export type JsonRpcResponse = JsonRpcSuccessResponse | JsonRpcErrorResponse; diff --git a/packages/agent/src/test-harness.ts b/packages/agent/src/test-harness.ts index bee6ae34b..40e02881f 100644 --- a/packages/agent/src/test-harness.ts +++ b/packages/agent/src/test-harness.ts @@ -43,12 +43,6 @@ type PlatformAgentTestHarnessParams = { } } -type PlatformAgentTestHarnessSetupParams = { - agentClass: new (params: any) => Web5PlatformAgent - agentStores?: 'dwn' | 'memory'; - testDataLocation?: string; -} - export class PlatformAgentTestHarness { public agent: Web5PlatformAgent; @@ -176,9 +170,11 @@ export class PlatformAgentTestHarness { await this.didResolverCache.set(didUri, resolutionResult); } - public static async setup({ agentClass, agentStores, testDataLocation }: - PlatformAgentTestHarnessSetupParams - ): Promise { + public static async setup({ agentClass, agentStores, testDataLocation }: { + agentClass: new (params: any) => Web5PlatformAgent + agentStores?: 'dwn' | 'memory'; + testDataLocation?: string; + }): Promise { agentStores ??= 'memory'; testDataLocation ??= '__TESTDATA__'; diff --git a/packages/agent/src/utils.ts b/packages/agent/src/utils.ts index 1715ac350..936d95980 100644 --- a/packages/agent/src/utils.ts +++ b/packages/agent/src/utils.ts @@ -87,9 +87,77 @@ export function webReadableToIsomorphicNodeReadable(webReadable: ReadableStream< } /** - * Concatenates a base URL and a path, ensuring that there is exactly one slash between them. - * TODO: Move this function to a more common shared utility library across pacakges. + * Polling function with interval, TTL accepting a custom fetch function + * @template T - the return you expect from the fetcher + * @param fetchFunction an http fetch function + * @param [interval=3000] how frequently to poll + * @param [ttl=300_000] how long until polling stops + * @returns T - the result of fetch */ +export function pollWithTtl( + fetchFunction: () => Promise, + interval = 3000, + ttl = 300_000, + abortSignal?: AbortSignal +): Promise { + const endTime = Date.now() + ttl; + let timeoutId: NodeJS.Timeout | null = null; + let isPolling = true; + return new Promise((resolve, reject) => { + if (abortSignal) { + abortSignal.addEventListener('abort', () => { + isPolling = false; + if (timeoutId !== null) { + clearTimeout(timeoutId); + } + console.log('Polling aborted by user'); + resolve(null); + }); + } + + async function poll() { + if (!isPolling) return; + + const remainingTime = endTime - Date.now(); + + if (remainingTime <= 0) { + isPolling = false; + console.log('Polling stopped: TTL reached'); + resolve(null); + return; + } + + console.log(`Polling... (Remaining time: ${Math.ceil(remainingTime / 1000)}s)`); + + try { + const response = await fetchFunction(); + + if (response.ok) { + isPolling = false; + + if (timeoutId !== null) { + clearTimeout(timeoutId); + } + + console.log('Polling stopped: Success condition met'); + resolve(response); + return; + } + } catch (error) { + console.error('Error fetching data:', error); + reject(error); + } + + if (isPolling) { + timeoutId = setTimeout(poll, interval); + } + } + + poll(); + }); +} + +/** Concatenates a base URL and a path ensuring that there is exactly one slash between them */ export function concatenateUrl(baseUrl: string, path: string): string { // Remove trailing slash from baseUrl if it exists if (baseUrl.endsWith('/')) { diff --git a/packages/agent/tests/connect.spec.ts b/packages/agent/tests/connect.spec.ts new file mode 100644 index 000000000..fb2929aed --- /dev/null +++ b/packages/agent/tests/connect.spec.ts @@ -0,0 +1,467 @@ +import { expect } from 'chai'; +import sinon from 'sinon'; +import { CryptoUtils } from '@web5/crypto'; +import { type BearerDid, DidDht, DidJwk, PortableDid } from '@web5/dids'; +import { Convert } from '@web5/common'; +import { + Oidc, + type Web5ConnectAuthRequest, + type Web5ConnectAuthResponse, +} from '../src/oidc.js'; +import { PlatformAgentTestHarness } from '../src/test-harness.js'; +import { TestAgent } from './utils/test-agent.js'; +import { testDwnUrl } from './utils/test-config.js'; +import { BearerIdentity, DwnResponse, WalletConnect } from '../src/index.js'; + +describe('web5 connect', function () { + this.timeout(20000); + + /** The temporary DID that web5 connect created on behalf of the client */ + let clientEphemeralBearerDid: BearerDid; + let clientEphemeralPortableDid: PortableDid; + + /** The real tenant (identity) of the DWN that the provider had chosen to connect */ + let providerIdentity: BearerIdentity; + + /** The new DID created for the delegate which it will impersonate in the future */ + let delegateBearerDid: BearerDid; + let delegatePortableDid: PortableDid; + + /** The real tenant (identity) of the DWN that the provider is using and selecting */ + let providerIdentityBearerDid: BearerDid; + const providerIdentityPortableDid = { + uri : 'did:dht:ksbkpsjytbm7kh6hnt3xi91t6to98zndtrrxzsqz9y87m5qztyqo', + document : { + '@context' : 'https://www.w3.org/ns/did/v1', + id : 'did:dht:ksbkpsjytbm7kh6hnt3xi91t6to98zndtrrxzsqz9y87m5qztyqo', + verificationMethod : [ + { + id : 'did:dht:ksbkpsjytbm7kh6hnt3xi91t6to98zndtrrxzsqz9y87m5qztyqo#0', + type : 'JsonWebKey', + controller: + 'did:dht:ksbkpsjytbm7kh6hnt3xi91t6to98zndtrrxzsqz9y87m5qztyqo', + publicKeyJwk: { + crv : 'Ed25519', + kty : 'OKP' as const, + x : 'VYKm2SCIV9Vz3BRy-v5R9GHz3EOJCPvZ1_gP1e3XiB0', + kid : 'cyvOypa6k-4ffsRWcza37s5XVOh1kO9ICUeo1ZxHVM8', + alg : 'EdDSA', + }, + }, + ], + authentication: [ + 'did:dht:ksbkpsjytbm7kh6hnt3xi91t6to98zndtrrxzsqz9y87m5qztyqo#0', + ], + assertionMethod: [ + 'did:dht:ksbkpsjytbm7kh6hnt3xi91t6to98zndtrrxzsqz9y87m5qztyqo#0', + ], + capabilityDelegation: [ + 'did:dht:ksbkpsjytbm7kh6hnt3xi91t6to98zndtrrxzsqz9y87m5qztyqo#0', + ], + capabilityInvocation: [ + 'did:dht:ksbkpsjytbm7kh6hnt3xi91t6to98zndtrrxzsqz9y87m5qztyqo#0', + ], + }, + metadata : {}, + privateKeys : [ + { + crv : 'Ed25519', + d : 'hdSIwbQwVD-fNOVEgt-k3mMl44Ip1iPi58Ex6VDGxqY', + kty : 'OKP' as const, + x : 'VYKm2SCIV9Vz3BRy-v5R9GHz3EOJCPvZ1_gP1e3XiB0', + kid : 'cyvOypa6k-4ffsRWcza37s5XVOh1kO9ICUeo1ZxHVM8', + alg : 'EdDSA', + }, + ], + }; + + let permissionGrants: DwnResponse[] = [ + { + reply : { status: { code: 202, detail: 'Accepted' } }, + message : { + recordId : 'bafyreifzveddv32ea3tzybpgphxvdvmk2qtgdi7ykt5atgo76m426jqp3m', + descriptor : { + interface : 'Records', + method : 'Write', + protocol : 'https://tbd.website/dwn/permissions', + protocolPath : 'grant', + recipient: + 'did:dht:pfm8f6w57srtci1k3spp73dqgk5eo3afkimtyi4zcqc5hg1ui5mo', + dataCid: + 'bafkreibesnbudco6hhuj5m4lc3jktvd2pd4ew4uypsiq66xxuaec4jwt7e', + dataSize : 156, + dateCreated : '2024-08-02T06:36:37.675594Z', + messageTimestamp : '2024-08-02T06:36:37.675594Z', + dataFormat : 'application/json', + }, + contextId: + 'bafyreifzveddv32ea3tzybpgphxvdvmk2qtgdi7ykt5atgo76m426jqp3m', + authorization: { + signature: { + payload: + 'eyJyZWNvcmRJZCI6ImJhZnlyZWlmenZlZGR2MzJlYTN0enlicGdwaHh2ZHZtazJxdGdkaTd5a3Q1YXRnbzc2bTQyNmpxcDNtIiwiZGVzY3JpcHRvckNpZCI6ImJhZnlyZWlid3Y1ajVhbHlmbmV0Mmh6NTNoYWRsZnF6eG1vNzVsZHYyeml5cGp4enlmN2ZuZWMyYnV1IiwiY29udGV4dElkIjoiYmFmeXJlaWZ6dmVkZHYzMmVhM3R6eWJwZ3BoeHZkdm1rMnF0Z2RpN3lrdDVhdGdvNzZtNDI2anFwM20ifQ', + signatures: [ + { + protected: + 'eyJraWQiOiJkaWQ6ZGh0OjFxbmdkZ2RlMzE2NHB1MTU3eDRyZWlqcWlzYm1yN2R4OG5raWNpOXltdG56ZWsxaWJpMXkjMCIsImFsZyI6IkVkRFNBIn0', + signature: + '7xiNZGsb8dlom2tCSdjUQgkBsAm6XSRt6i4cNS6NDDSkCGjVr79TB7tF5VQdtwMJCrDpKtSmXQ0eEN4j2dWMAQ', + }, + ], + }, + }, + }, + messageCid: 'bafyreievjytxn2qbfwg4fthnsrjnob3mm2j2haar6revl723v7q2up5g5i', + }, + ]; + + let testHarness: PlatformAgentTestHarness; + + let authRequest: Web5ConnectAuthRequest; + let authRequestJwt: string; + let authRequestJwe: string; + + let authResponse: Web5ConnectAuthResponse; + let authResponseJwt: string; + let authResponseJwe: string; + + let sharedECDHPrivateKey: Uint8Array; + + const authRequestEncryptionKey = CryptoUtils.randomBytes(32); + const encryptionNonce = CryptoUtils.randomBytes(24); + const randomPin = '9999'; + + before(async () => { + providerIdentityBearerDid = await DidDht.import({ + portableDid: providerIdentityPortableDid, + }); + sinon.stub(DidDht, 'create').resolves(providerIdentityBearerDid); + testHarness = await PlatformAgentTestHarness.setup({ + agentClass : TestAgent, + agentStores : 'memory', + }); + await testHarness.createAgentDid(); + sinon.restore(); + + providerIdentity = await testHarness.createIdentity({ + name : 'MrProvider', + testDwnUrls : [testDwnUrl], + }); + + clientEphemeralBearerDid = await DidJwk.create(); + clientEphemeralPortableDid = await clientEphemeralBearerDid.export(); + + // sinon.stub(DidDht, 'resolve').resolves({ + // didDocument : clientEphemeralPortableDid!.document, + // didDocumentMetadata : clientEphemeralPortableDid!.metadata, + // didResolutionMetadata : clientEphemeralPortableDid!.metadata, + // }); + // clientEphemeralBearerDid = await DidDht.import({ + // portableDid: clientEphemeralPortableDid, + // }); + // sinon.restore(); + + delegateBearerDid = await DidJwk.create(); + delegatePortableDid = await delegateBearerDid.export(); + + // sinon.stub(DidDht, 'resolve').resolves({ + // didDocument : delegatePortableDid!.document, + // didDocumentMetadata : delegatePortableDid!.metadata, + // didResolutionMetadata : delegatePortableDid!.metadata, + // }); + // delegateBearerDid = await DidDht.import({ + // portableDid: delegatePortableDid, + // }); + // sinon.restore(); + }); + + after(async () => { + await testHarness.clearStorage(); + await testHarness.closeStorage(); + }); + + afterEach(() => { + sinon.restore(); + }); + + describe('client authrequest phase', function () { + // it('should create a code challenge', async () => { + // const result = await Oidc.generateCodeChallenge(); + // expect(result.codeChallengeBytes).to.be.instanceOf(Uint8Array); + // expect(result.codeChallengeBase64Url).to.be.a('string'); + // }); + + it('should create an authrequest with the code challenge and client did', async () => { + const randomBytesStub = sinon + .stub(CryptoUtils, 'randomBytes') + .returns(authRequestEncryptionKey); + + const callbackUrl = Oidc.buildOidcUrl({ + baseURL : 'http://localhost:3000', + endpoint : 'callback', + }); + + const options = { + client_id : clientEphemeralPortableDid.uri, + scope : 'openid did:jwk', + // code_challenge : Convert.uint8Array(codeChallenge).toBase64Url(), + // code_challenge_method : 'S256' as const, + permissionRequests : {} as any, // TODO: use a better mock once DWN stuff is in place, + redirect_uri : callbackUrl, + }; + authRequest = await Oidc.createAuthRequest(options); + expect(authRequest).to.include(options); + expect(authRequest.nonce).to.be.a('string'); + expect(authRequest.state).to.be.a('string'); + expect(authRequest.redirect_uri).to.equal( + 'http://localhost:3000/callback' + ); + }); + + it('should construct a signed jwt of an authrequest', async () => { + authRequestJwt = await Oidc.signJwt({ + did : clientEphemeralBearerDid, + data : authRequest, + }); + expect(authRequestJwt).to.be.a('string'); + }); + + it('should encrypt an authrequest using the code challenge', async () => { + authRequestJwe = await Oidc.encryptAuthRequest({ + jwt : authRequestJwt, + encryptionKey : authRequestEncryptionKey + }); + expect(authRequestJwe).to.be.a('string'); + expect(authRequestJwe.split('.')).to.have.lengthOf(5); + }); + }); + + describe('provider authresponse phase', function () { + it('should get authrequest from server, decrypt and verify the jwt', async () => { + const fetchStub = sinon + .stub(globalThis, 'fetch') + .onFirstCall() + .resolves({ + text: sinon.stub().resolves(authRequestJwe), + } as any); + fetchStub.callThrough(); + + const authorizeUrl = Oidc.buildOidcUrl({ + baseURL : 'http://localhost:3000', + endpoint : 'authorize', + authParam : '12345', + }); + expect(authorizeUrl).to.equal( + 'http://localhost:3000/authorize/12345.jwt' + ); + + const result = await Oidc.getAuthRequest( + authorizeUrl, + Convert.uint8Array(authRequestEncryptionKey).toBase64Url() + ); + expect(result).to.deep.equal(authRequest); + }); + + // TODO: waiting for DWN feature complete + it('should create permission grants for each selected did', async () => { + const results = await Oidc.createPermissionGrants( + providerIdentity.did.uri, + delegateBearerDid, + testHarness.agent.dwn + ); + expect(results).to.have.lengthOf(1); + expect(results[0]).to.be.a('object'); + }); + + it('should create the authresponse which includes the permissionGrants, nonce, private key material', async () => { + const options = { + iss : providerIdentity.did.uri, + sub : delegateBearerDid.uri, + aud : authRequest.client_id, + nonce : authRequest.nonce, + delegateGrants : permissionGrants, + delegateDid : delegatePortableDid, + }; + authResponse = await Oidc.createResponseObject(options); + + expect(authResponse).to.include(options); + expect(authResponse.iat).to.be.a('number'); + expect(authResponse.exp).to.be.a('number'); + expect(authResponse.exp - authResponse.iat).to.equal(600); + }); + + it('should sign the authresponse with its provider did', async () => { + authResponseJwt = await Oidc.signJwt({ + did : delegateBearerDid, + data : authResponse, + }); + expect(authResponseJwt).to.be.a('string'); + }); + + it('should derive a valid ECDH private key for both provider and client which is identical', async () => { + const providerECDHDerivedPrivateKey = await Oidc.deriveSharedKey( + delegateBearerDid, + clientEphemeralBearerDid.document + ); + const clientECDHDerivedPrivateKey = await Oidc.deriveSharedKey( + clientEphemeralBearerDid, + delegateBearerDid.document + ); + + expect(providerECDHDerivedPrivateKey).to.be.instanceOf(Uint8Array); + expect(providerECDHDerivedPrivateKey.length).to.be.greaterThan(0); + + expect(clientECDHDerivedPrivateKey).to.be.instanceOf(Uint8Array); + expect(clientECDHDerivedPrivateKey.length).to.be.greaterThan(0); + expect( + Convert.uint8Array(providerECDHDerivedPrivateKey).toHex() + ).to.equal(Convert.uint8Array(clientECDHDerivedPrivateKey).toHex()); + + // doesnt matter client and provider are the same + sharedECDHPrivateKey = clientECDHDerivedPrivateKey; + }); + + it('should encrypt the jwt authresponse to pass back to the client', async () => { + const randomBytesStub = sinon + .stub(CryptoUtils, 'randomBytes') + .returns(encryptionNonce); + authResponseJwe = Oidc.encryptAuthResponse({ + jwt : authResponseJwt, + encryptionKey : sharedECDHPrivateKey, + randomPin, + delegateDidKeyId : delegateBearerDid.document.verificationMethod![0].id, + }); + expect(authResponseJwe).to.be.a('string'); + expect(randomBytesStub.calledOnce).to.be.true; + }); + + it('should send the encrypted jwe authresponse to the server', async () => { + sinon.stub(Oidc, 'createPermissionGrants').resolves(permissionGrants); + sinon.stub(CryptoUtils, 'randomBytes').returns(encryptionNonce); + sinon.stub(DidJwk, 'create').resolves(delegateBearerDid); + + const formEncodedRequest = new URLSearchParams({ + id_token : authResponseJwe, + state : authRequest.state, + }).toString(); + + const callbackUrl = Oidc.buildOidcUrl({ + baseURL : 'http://localhost:3000', + endpoint : 'callback', + }); + expect(callbackUrl).to.equal('http://localhost:3000/callback'); + + const fetchSpy = sinon.spy(globalThis, 'fetch').withArgs( + callbackUrl, + sinon.match({ + method : 'POST', + headers : { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: formEncodedRequest, + }) + ); + + const selectedDid = providerIdentity.did.uri; + await Oidc.submitAuthResponse( + selectedDid, + authRequest, + randomPin, + testHarness.agent.dwn + ); + expect(fetchSpy.calledOnce).to.be.true; + }); + }); + + describe('client pin entry final phase', function () { + it('should get the authresponse from server and decrypt the jwe using the pin', async () => { + const result = await Oidc.decryptAuthResponse( + clientEphemeralBearerDid, + authResponseJwe, + randomPin + ); + expect(result).to.be.a('string'); + expect(result).to.equal(authResponseJwt); + }); + + it('should fail decrypting the jwe if the wrong pin is entered', async () => { + try { + await Oidc.decryptAuthResponse( + clientEphemeralBearerDid, + authResponseJwe, + '87383837583757835737537734783' + ); + } catch (e: any) { + expect(e).to.be.instanceOf(Error); + expect(e.message).to.include('invalid tag'); + } + }); + + it('should validate the jwt and parse it into an object', async () => { + const result = (await Oidc.verifyJwt({ + jwt: authResponseJwt, + })) as Web5ConnectAuthResponse; + expect(result).to.be.a('object'); + expect(result.delegateGrants).to.have.length.above(0); + }); + }); + + describe('end to end client test', function () { + it('should complete the whole connect flow with the correct pin', async function () { + const fetchStub = sinon.stub(globalThis, 'fetch'); + const onWalletUriReadySpy = sinon.spy(); + sinon.stub(DidJwk, 'create').resolves(clientEphemeralBearerDid); + + const par = { + expires_in : 3600000, + request_uri : 'http://localhost:3000/connect/authorize/xyz.jwt', + }; + + const parResponse = new Response(JSON.stringify(par), { + status : 200, + headers : { 'Content-type': 'application/json' }, + }); + + const authResponse = new Response(authResponseJwe, { + status : 200, + headers : { 'Content-Type': 'application/x-www-form-urlencoded' }, + }); + + fetchStub.onFirstCall().resolves(parResponse); + fetchStub.callThrough(); + fetchStub.onThirdCall().resolves(authResponse); + fetchStub.callThrough(); + + const results = await WalletConnect.initClient({ + walletUri : 'http://localhost:3000/', + connectServerUrl : 'http://localhost:3000/connect', + permissionRequests : [ + { + protocolDefinition : {} as any, + permissionScopes : {} as any, + }, + ], + onWalletUriReady : (uri) => onWalletUriReadySpy(uri), + validatePin : async () => randomPin, + }); + + expect(fetchStub.firstCall.args[0]).to.equal( + 'http://localhost:3000/connect/par' + ); + expect(onWalletUriReadySpy.calledOnce).to.be.true; + expect(onWalletUriReadySpy.firstCall.args[0]).to.match( + new RegExp( + 'http:\\/\\/[\\w.-]+:\\d+\\/\\?request_uri=http%3A%2F%2F[\\w.-]+%3A(\\d+|%24%7Bport%7D)%2Fconnect%2Fauthorize%2F[\\w.-]+\\.jwt&encryption_key=.+', + 'i' + ) + ); + expect(fetchStub.thirdCall.args[0]).to.match( + new RegExp('^http:\\/\\/localhost:3000\\/connect\\/token\\/.+\\.jwt$') + ); + + expect(results).to.be.an('object'); + expect(results?.delegateGrants).to.be.an('array'); + expect(results?.delegateDid).to.be.an('object'); + }); + }); +}); diff --git a/packages/api/package.json b/packages/api/package.json index a14d2df1d..be8c293b7 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -79,7 +79,7 @@ "dependencies": { "@web5/agent": "workspace:*", "@web5/common": "1.0.0", - "@web5/crypto": "1.0.0", + "@web5/crypto": "workspace:*", "@web5/dids": "1.1.0", "@web5/user-agent": "workspace:*" }, @@ -89,8 +89,8 @@ "@types/chai": "4.3.6", "@types/eslint": "8.56.10", "@types/mocha": "10.0.1", - "@types/node": "20.11.19", - "@types/sinon": "17.0.2", + "@types/node": "20.14.8", + "@types/sinon": "17.0.3", "@typescript-eslint/eslint-plugin": "7.9.0", "@typescript-eslint/parser": "7.14.1", "@web/test-runner": "0.18.2", @@ -105,7 +105,7 @@ "node-stdlib-browser": "1.2.0", "playwright": "1.45.3", "rimraf": "4.4.0", - "sinon": "16.1.3", + "sinon": "18.0.0", "source-map-loader": "4.0.2", "typescript": "5.1.6" } diff --git a/packages/api/src/web5.ts b/packages/api/src/web5.ts index 243f250aa..9325bfdae 100644 --- a/packages/api/src/web5.ts +++ b/packages/api/src/web5.ts @@ -1,16 +1,22 @@ -import type { BearerIdentity, HdIdentityVault, Web5Agent } from '@web5/agent'; - +import { + WalletConnect, + type BearerIdentity, + type HdIdentityVault, + type WalletConnectOptions, + type Web5Agent, +} from '@web5/agent'; +import { Web5UserAgent } from '@web5/user-agent'; import { DidApi } from './did-api.js'; import { DwnApi } from './dwn-api.js'; -import { DwnRecordsPermissionScope, DwnProtocolDefinition, DwnRegistrar } from '@web5/agent'; +import { DwnRegistrar } from '@web5/agent'; import { VcApi } from './vc-api.js'; -import { Web5UserAgent } from '@web5/user-agent'; +import { PortableDid } from '@web5/dids'; /** Override defaults configured during the technical preview phase. */ export type TechPreviewOptions = { /** Override default dwnEndpoints provided for technical preview. */ dwnEndpoints?: string[]; -} +}; /** Override defaults for DID creation. */ export type DidCreateOptions = { @@ -18,56 +24,12 @@ export type DidCreateOptions = { dwnEndpoints?: string[]; } -/** - * Options to provide when the initiating app wants to import a delegated identity/DID from an external wallet. - */ -export type WalletConnectOptions = { - /** - * The URL of the wallet connect server to use for relaying messages between the app and the wallet. - */ - connectServerUrl: string; - - /** - * The protocols of permissions requested, along with the definition and permission copes for each protocol. - * The key is the protocol URL and the value is an object with the protocol definition and the permission scopes. - */ - requestedProtocolsAndScopes: Map< - string, - { - /** - * The definition of the protocol the permissions are being requested for. - * In the event that the protocol is not already installed, the wallet will install this given protocol definition. - */ - protocolDefinition: DwnProtocolDefinition; - - /** - * The scope of the permissions being requested for the given protocol. - */ - permissionScopes: DwnRecordsPermissionScope[]; - } - >; - - /** - * A handler to be called when the request URL is ready to be used to fetch the permission request by the wallet. - * This method should be used by the calling app to pass the request URL to the wallet via a QR code or a deep link. - * - * @param requestUrl - The request URL for the wallet to fetch the permission request. - */ - onRequestReady: (requestUrl: string) => void; - - /** - * An async method to get the PIN from the user to decrypt the response from the wallet. - * - * @returns A promise that resolves to the PIN as a string. - */ - pinCapture: () => Promise; -} - /** Optional overrides that can be provided when calling {@link Web5.connect}. */ export type Web5ConnectOptions = { - /** - * When specified, wallet connect flow interacting with an external wallet would be triggered. + * When specified, external wallet connect flow is triggered. + * This param currently will not work in apps that are currently connected. + * It must only be invoked at registration with a reset and empty DWN and agent. */ walletConnectOptions?: WalletConnectOptions; @@ -180,6 +142,12 @@ export type Web5ConnectResult = { * and should be stored securely by the user. */ recoveryPhrase?: string; + + /** + * The resulting did of a successful wallet connect. Only returned on success if + * {@link WalletConnectOptions} was provided. + */ + delegateDid?: PortableDid }; /** @@ -237,7 +205,16 @@ export class Web5 { * @returns A promise that resolves to a {@link Web5} instance and the connected DID. */ static async connect({ - agent, agentVault, connectedDid, password, recoveryPhrase, sync, techPreview, didCreateOptions, registration + agent, + agentVault, + connectedDid, + password, + recoveryPhrase, + sync, + techPreview, + didCreateOptions, + registration, + walletConnectOptions, }: Web5ConnectOptions = {}): Promise { if (agent === undefined) { // A custom Web5Agent implementation was not specified, so use default managed user agent. @@ -263,69 +240,74 @@ export class Web5 { } await userAgent.start({ password }); - // TODO: Replace stubbed connection attempt once Connect Protocol has been implemented. - // Attempt to Connect to localhost agent or via Connect Server. - // userAgent.connect(); - - const notConnected = true; - if (/* !userAgent.isConnected() */ notConnected) { - // Connect attempt failed or was rejected so fallback to local user agent. - let identity: BearerIdentity; - - // Query the Agent's DWN tenant for identity records. - const identities = await userAgent.identity.list(); - - // If an existing identity is not found found, create a new one. - const existingIdentityCount = identities.length; - if (existingIdentityCount === 0) { - // Use the specified DWN endpoints or the latest TBD hosted DWN - const serviceEndpointNodes = techPreview?.dwnEndpoints ?? didCreateOptions?.dwnEndpoints ?? ['https://dwn.tbddev.org/beta']; - - // Generate a new Identity for the end-user. - identity = await userAgent.identity.create({ - didMethod : 'dht', - metadata : { name: 'Default' }, - didOptions : { - services: [ - { - id : 'dwn', - type : 'DecentralizedWebNode', - serviceEndpoint : serviceEndpointNodes, - enc : '#enc', - sig : '#sig', - } - ], - verificationMethods: [ - { - algorithm : 'Ed25519', - id : 'sig', - purposes : ['assertionMethod', 'authentication'] - }, - { - algorithm : 'secp256k1', - id : 'enc', - purposes : ['keyAgreement'] - } - ] - } - }); - - // The User Agent will manage the Identity, which ensures it will be available on future - // sessions. - await userAgent.identity.manage({ portableIdentity: await identity.export() }); - - } else if (existingIdentityCount === 1) { - // An existing identity was found in the User Agent's tenant. - identity = identities[0]; - - } else { - throw new Error(`connect() failed due to unexpected state: Expected 1 but found ${existingIdentityCount} stored identities.`); + let identity: BearerIdentity; + + // Query the Agent's DWN tenant for identity records. + const identities = await userAgent.identity.list(); + + // If an existing identity is not found found, create a new one. + const existingIdentityCount = identities.length; + + // on init/registration + if (existingIdentityCount === 0) { + if (walletConnectOptions) { + // WIP: ingest this + const { delegateDid } = await WalletConnect.initClient(walletConnectOptions); + // WIP + // identity = await userAgent.identity.import({ + // portableIdentity: { + // portableDid : did, + // metadata : { name: 'Connection', uri: did.uri, tenant: did.uri } + // } + // }); + + // WIP. just going to early return for now. + return { web5: null, did: null, delegateDid }; } - // Set the stored identity as the connected DID. - connectedDid = identity.did.uri; + // Use the specified DWN endpoints or get default tech preview hosted nodes. + const serviceEndpointNodes = techPreview?.dwnEndpoints ?? didCreateOptions?.dwnEndpoints ?? ['https://dwn.tbddev.org/beta']; + + // Generate a new Identity for the end-user. + identity = await userAgent.identity.create({ + didMethod : 'dht', + metadata : { name: 'Default' }, + didOptions : { + services: [ + { + id : 'dwn', + type : 'DecentralizedWebNode', + serviceEndpoint : serviceEndpointNodes, + enc : '#enc', + sig : '#sig', + } + ], + verificationMethods: [ + { + algorithm : 'Ed25519', + id : 'sig', + purposes : ['assertionMethod', 'authentication'] + }, + { + algorithm : 'secp256k1', + id : 'enc', + purposes : ['keyAgreement'] + } + ] + } + }); + + // Persists the Identity to be available in future sessions + await userAgent.identity.manage({ portableIdentity: await identity.export() }); + } else if (existingIdentityCount === 1) { + // An existing identity was found in the User Agent's tenant. + identity = identities[0]; + } else { + throw new Error(`connect() failed due to unexpected state: Expected 1 but found ${existingIdentityCount} stored identities.`); } + connectedDid = identity.did.uri; + if (registration !== undefined) { // If a registration object is passed, we attempt to register the AgentDID and the ConnectedDID with the DWN endpoints provided const serviceEndpointNodes = techPreview?.dwnEndpoints ?? didCreateOptions?.dwnEndpoints; @@ -369,7 +351,6 @@ export class Web5 { } const web5 = new Web5({ agent, connectedDid }); - return { web5, did: connectedDid, recoveryPhrase }; } -} \ No newline at end of file +} diff --git a/packages/api/tests/web5.spec.ts b/packages/api/tests/web5.spec.ts index c5afee939..1d6fe7f0e 100644 --- a/packages/api/tests/web5.spec.ts +++ b/packages/api/tests/web5.spec.ts @@ -3,18 +3,27 @@ import sinon from 'sinon'; import { MemoryStore } from '@web5/common'; import { Web5UserAgent } from '@web5/user-agent'; -import { AgentIdentityApi, DwnRegistrar, HdIdentityVault, PlatformAgentTestHarness } from '@web5/agent'; +import { + AgentDidApi, + AgentIdentityApi, + DwnRegistrar, + HdIdentityVault, + PlatformAgentTestHarness, + WalletConnect, +} from '@web5/agent'; import { Web5 } from '../src/web5.js'; +import { testDwnUrl } from './utils/test-config.js'; +import { DidDht } from '@web5/dids'; -describe('Web5', () => { +describe('web5 api', () => { describe('using Test Harness', () => { let testHarness: PlatformAgentTestHarness; before(async () => { testHarness = await PlatformAgentTestHarness.setup({ agentClass : Web5UserAgent, - agentStores : 'memory' + agentStores : 'memory', }); }); @@ -28,24 +37,6 @@ describe('Web5', () => { await testHarness.closeStorage(); }); - describe('connect()', () => { - it('accepts an externally created DID', async () => { - const testIdentity = await testHarness.createIdentity({ - name : 'Test', - testDwnUrls : ['https://dwn.example.com'] - }); - - // Call connect() with the custom agent. - const { web5, did } = await Web5.connect({ - agent : testHarness.agent, - connectedDid : testIdentity.did.uri - }); - - expect(did).to.exist; - expect(web5).to.exist; - }); - }); - describe('constructor', () => { it('instantiates Web5 API with provided Web5Agent and connectedDid', async () => { // Create a new Identity. @@ -55,7 +46,10 @@ describe('Web5', () => { }); // Instantiates Web5 instance with test agent and new Identity's DID. - const web5 = new Web5({ agent: testHarness.agent, connectedDid: socialIdentity.did.uri }); + const web5 = new Web5({ + agent : testHarness.agent, + connectedDid : socialIdentity.did.uri, + }); expect(web5).to.exist; expect(web5).to.have.property('did'); expect(web5).to.have.property('dwn'); @@ -66,19 +60,25 @@ describe('Web5', () => { // Create two identities, each of which is stored in a new tenant. const careerIdentity = await testHarness.agent.identity.create({ metadata : { name: 'Social' }, - didMethod : 'jwk' + didMethod : 'jwk', }); const socialIdentity = await testHarness.agent.identity.create({ metadata : { name: 'Social' }, - didMethod : 'jwk' + didMethod : 'jwk', }); // Instantiate a Web5 instance with the "Career" Identity, write a record, and verify the result. - const web5Career = new Web5({ agent: testHarness.agent, connectedDid: careerIdentity.did.uri }); + const web5Career = new Web5({ + agent : testHarness.agent, + connectedDid : careerIdentity.did.uri, + }); expect(web5Career).to.exist; // Instantiate a Web5 instance with the "Social" Identity, write a record, and verify the result. - const web5Social = new Web5({ agent: testHarness.agent, connectedDid: socialIdentity.did.uri }); + const web5Social = new Web5({ + agent : testHarness.agent, + connectedDid : socialIdentity.did.uri, + }); expect(web5Social).to.exist; }); }); @@ -94,40 +94,50 @@ describe('Web5', () => { // Create two identities, each of which is stored in a new tenant. const careerIdentity = await testHarness.agent.identity.create({ metadata : { name: 'Social' }, - didMethod : 'jwk' + didMethod : 'jwk', }); const socialIdentity = await testHarness.agent.identity.create({ metadata : { name: 'Social' }, - didMethod : 'jwk' + didMethod : 'jwk', }); // Instantiate a Web5 instance with the "Career" Identity, write a record, and verify the result. - const web5Career = new Web5({ agent: testHarness.agent, connectedDid: careerIdentity.did.uri }); + const web5Career = new Web5({ + agent : testHarness.agent, + connectedDid : careerIdentity.did.uri, + }); const careerResult = await web5Career.dwn.records.write({ data : 'Hello, world!', message : { schema : 'foo/bar', - dataFormat : 'text/plain' - } + dataFormat : 'text/plain', + }, }); expect(careerResult.status.code).to.equal(202); expect(careerResult.record).to.exist; expect(careerResult.record?.author).to.equal(careerIdentity.did.uri); - expect(await careerResult.record?.data.text()).to.equal('Hello, world!'); + expect(await careerResult.record?.data.text()).to.equal( + 'Hello, world!' + ); // Instantiate a Web5 instance with the "Social" Identity, write a record, and verify the result. - const web5Social = new Web5({ agent: testHarness.agent, connectedDid: socialIdentity.did.uri }); + const web5Social = new Web5({ + agent : testHarness.agent, + connectedDid : socialIdentity.did.uri, + }); const socialResult = await web5Social.dwn.records.write({ data : 'Hello, everyone!', message : { schema : 'foo/bar', - dataFormat : 'text/plain' - } + dataFormat : 'text/plain', + }, }); expect(socialResult.status.code).to.equal(202); expect(socialResult.record).to.exist; expect(socialResult.record?.author).to.equal(socialIdentity.did.uri); - expect(await socialResult.record?.data.text()).to.equal('Hello, everyone!'); + expect(await socialResult.record?.data.text()).to.equal( + 'Hello, everyone!' + ); }); }); }); @@ -138,7 +148,7 @@ describe('Web5', () => { before(async () => { testHarness = await PlatformAgentTestHarness.setup({ agentClass : Web5UserAgent, - agentStores : 'memory' + agentStores : 'memory', }); }); @@ -158,77 +168,214 @@ describe('Web5', () => { // Create an in-memory identity vault store to speed up tests. const agentVault = new HdIdentityVault({ keyDerivationWorkFactor : 1, - store : new MemoryStore() + store : new MemoryStore(), }); const { web5, recoveryPhrase } = await Web5.connect({ agentVault }); + const walletConnectSpy = sinon.spy(WalletConnect, 'initClient'); expect(web5).to.exist; expect(web5.agent).to.be.instanceOf(Web5UserAgent); // Verify recovery phrase is a 12-word string. expect(recoveryPhrase).to.be.a('string'); expect(recoveryPhrase.split(' ')).to.have.lengthOf(12); + expect(walletConnectSpy.called).to.be.false; + }); + + it('accepts an externally created DID', async () => { + const walletConnectSpy = sinon.spy(WalletConnect, 'initClient'); + + const testIdentity = await testHarness.createIdentity({ + name : 'Test', + testDwnUrls : ['https://dwn.example.com'], + }); + + // Call connect() with the custom agent. + const { web5, did } = await Web5.connect({ + agent : testHarness.agent, + connectedDid : testIdentity.did.uri, + }); + + expect(did).to.exist; + expect(web5).to.exist; + expect(walletConnectSpy.called).to.be.false; }); it('creates an identity using the provided techPreview dwnEndpoints', async () => { - sinon.stub(Web5UserAgent, 'create').resolves(testHarness.agent as Web5UserAgent); + sinon + .stub(Web5UserAgent, 'create') + .resolves(testHarness.agent as Web5UserAgent); + const walletConnectSpy = sinon.spy(WalletConnect, 'initClient'); const identityApiSpy = sinon.spy(AgentIdentityApi.prototype, 'create'); - const { web5, did } = await Web5.connect({ techPreview: { dwnEndpoints: ['https://dwn.example.com/preview'] }}); + const { web5, did } = await Web5.connect({ + techPreview: { dwnEndpoints: ['https://dwn.example.com/preview'] }, + }); expect(web5).to.exist; expect(did).to.exist; expect(identityApiSpy.calledOnce, 'identityApiSpy called').to.be.true; - const serviceEndpoints = (identityApiSpy.firstCall.args[0].didOptions as any).services[0].serviceEndpoint; - expect(serviceEndpoints).to.deep.equal(['https://dwn.example.com/preview']); + const serviceEndpoints = ( + identityApiSpy.firstCall.args[0].didOptions as any + ).services[0].serviceEndpoint; + expect(serviceEndpoints).to.deep.equal([ + 'https://dwn.example.com/preview', + ]); + expect(walletConnectSpy.called).to.be.false; }); it('creates an identity using the provided didCreateOptions dwnEndpoints', async () => { - sinon.stub(Web5UserAgent, 'create').resolves(testHarness.agent as Web5UserAgent); + sinon + .stub(Web5UserAgent, 'create') + .resolves(testHarness.agent as Web5UserAgent); const identityApiSpy = sinon.spy(AgentIdentityApi.prototype, 'create'); - const { web5, did } = await Web5.connect({ didCreateOptions: { dwnEndpoints: ['https://dwn.example.com'] }}); + const walletConnectSpy = sinon.spy(WalletConnect, 'initClient'); + const { web5, did } = await Web5.connect({ + didCreateOptions: { dwnEndpoints: ['https://dwn.example.com'] }, + }); expect(web5).to.exist; expect(did).to.exist; expect(identityApiSpy.calledOnce, 'identityApiSpy called').to.be.true; - const serviceEndpoints = (identityApiSpy.firstCall.args[0].didOptions as any).services[0].serviceEndpoint; + const serviceEndpoints = ( + identityApiSpy.firstCall.args[0].didOptions as any + ).services[0].serviceEndpoint; expect(serviceEndpoints).to.deep.equal(['https://dwn.example.com']); + expect(walletConnectSpy.called).to.be.false; }); it('defaults to `https://dwn.tbddev.org/beta` as the single DWN Service endpoint if non is provided', async () => { - sinon.stub(Web5UserAgent, 'create').resolves(testHarness.agent as Web5UserAgent); + sinon + .stub(Web5UserAgent, 'create') + .resolves(testHarness.agent as Web5UserAgent); const identityApiSpy = sinon.spy(AgentIdentityApi.prototype, 'create'); const { web5, did } = await Web5.connect(); expect(web5).to.exist; expect(did).to.exist; expect(identityApiSpy.calledOnce, 'identityApiSpy called').to.be.true; - const serviceEndpoints = (identityApiSpy.firstCall.args[0].didOptions as any).services[0].serviceEndpoint; + const serviceEndpoints = ( + identityApiSpy.firstCall.args[0].didOptions as any + ).services[0].serviceEndpoint; expect(serviceEndpoints).to.deep.equal(['https://dwn.tbddev.org/beta']); }); - describe('registration', () => { - it('should call onSuccess if registration is successful', async () => { + it('should throw if more than one identity because thats unsupported by user agent', async () => { + const walletConnectSpy = sinon.spy(WalletConnect, 'initClient'); + sinon + .stub(Web5UserAgent, 'create') + .resolves(testHarness.agent as Web5UserAgent); + const existingIdentity = await testHarness.createIdentity({ + name : 'Mr FooBarovich', + testDwnUrls : [testDwnUrl], + }); + sinon + .stub(testHarness.agent.identity, 'list') + .resolves([existingIdentity, existingIdentity]); + + let web5: any, did: any; + + try { + const results = await Web5.connect({ + walletConnectOptions: {} as any, + }); + web5 = results.web5; + did = results.did; + } catch (e) { + expect(e.message).to.include( + 'connect() failed due to unexpected state: Expected 1 but found' + ); + } + + expect(walletConnectSpy.called).to.be.false; + expect(web5).not.to.exist; + expect(did).not.to.exist; + }); + + describe('wallet connect', () => { + it('should not initiate wallet connect if has walletConnectOptions and stored identities', async () => { + const walletConnectStub = sinon + .stub(WalletConnect, 'initClient') + .resolves({ + delegateDid : { garfield: 'i hate mondays' } as any, + delegateGrants : {} as any, + connectedDid : {} as any, + }); + sinon + .stub(Web5UserAgent, 'create') + .resolves(testHarness.agent as Web5UserAgent); + const existingIdentity = await testHarness.createIdentity({ + name : 'Mr FooBarovich', + testDwnUrls : [testDwnUrl], + }); + sinon + .stub(testHarness.agent.identity, 'list') + .resolves([existingIdentity]); + + const { web5, did } = await Web5.connect({ + walletConnectOptions: {} as any, + }); + + expect(walletConnectStub.called).to.be.false; + expect(web5).to.exist; + expect(did).to.exist; + }); + + it('should initiate wallet connect if has walletConnectOptions and no stored identities', async () => { sinon.stub(Web5UserAgent, 'create').resolves(testHarness.agent as Web5UserAgent); - const serverInfoStub = sinon.stub(testHarness.agent.rpc, 'getServerInfo').resolves({ - registrationRequirements : ['terms-of-service'], - maxFileSize : 10000, - webSocketSupport : true, + + const walletConnectStub = sinon + .stub(WalletConnect, 'initClient') + .resolves({ + delegateDid : { garfield: 'i hate mondays' } as any, + delegateGrants : {} as any, + connectedDid : {} as any, + }); + + const { web5, did, delegateDid } = await Web5.connect({ + walletConnectOptions: {} as any, }); + expect(walletConnectStub.called).to.be.true; + expect(web5).to.be.null; + expect(did).to.be.null; + expect(delegateDid).to.deep.equal({ garfield: 'i hate mondays' }); + }); + }); + + describe('registration', () => { + it('should call onSuccess if registration is successful', async () => { + sinon + .stub(Web5UserAgent, 'create') + .resolves(testHarness.agent as Web5UserAgent); + const serverInfoStub = sinon + .stub(testHarness.agent.rpc, 'getServerInfo') + .resolves({ + registrationRequirements : ['terms-of-service'], + maxFileSize : 10000, + webSocketSupport : true, + }); + // stub a successful registration - const registerStub = sinon.stub(DwnRegistrar, 'registerTenant').resolves(); + const registerStub = sinon + .stub(DwnRegistrar, 'registerTenant') + .resolves(); const registration = { onSuccess : () => {}, - onFailure : () => {} + onFailure : () => {}, }; const registerSuccessSpy = sinon.spy(registration, 'onSuccess'); const registerFailureSpy = sinon.spy(registration, 'onFailure'); - const { web5, did } = await Web5.connect({ registration, didCreateOptions: { dwnEndpoints: [ - 'https://dwn.example.com', - 'https://dwn.production.com/' - ] } }); + const { web5, did } = await Web5.connect({ + registration, + didCreateOptions: { + dwnEndpoints: [ + 'https://dwn.example.com', + 'https://dwn.production.com/', + ], + }, + }); expect(web5).to.exist; expect(did).to.exist; @@ -242,28 +389,39 @@ describe('Web5', () => { }); it('should call onFailure if the registration attempts fail', async () => { - sinon.stub(Web5UserAgent, 'create').resolves(testHarness.agent as Web5UserAgent); - const serverInfoStub = sinon.stub(testHarness.agent.rpc, 'getServerInfo').resolves({ - registrationRequirements : ['terms-of-service'], - maxFileSize : 10000, - webSocketSupport : true, - }); + sinon + .stub(Web5UserAgent, 'create') + .resolves(testHarness.agent as Web5UserAgent); + const serverInfoStub = sinon + .stub(testHarness.agent.rpc, 'getServerInfo') + .resolves({ + registrationRequirements : ['terms-of-service'], + maxFileSize : 10000, + webSocketSupport : true, + }); // stub a successful registration - const registerStub = sinon.stub(DwnRegistrar, 'registerTenant').rejects(); + const registerStub = sinon + .stub(DwnRegistrar, 'registerTenant') + .rejects(); const registration = { onSuccess : () => {}, - onFailure : () => {} + onFailure : () => {}, }; const registerSuccessSpy = sinon.spy(registration, 'onSuccess'); const registerFailureSpy = sinon.spy(registration, 'onFailure'); - const { web5, did } = await Web5.connect({ registration, didCreateOptions: { dwnEndpoints: [ - 'https://dwn.example.com', - 'https://dwn.production.com/' - ] } }); + const { web5, did } = await Web5.connect({ + registration, + didCreateOptions: { + dwnEndpoints: [ + 'https://dwn.example.com', + 'https://dwn.production.com/', + ], + }, + }); expect(web5).to.exist; expect(did).to.exist; @@ -277,28 +435,39 @@ describe('Web5', () => { }); it('should not attempt registration if the server does not require it', async () => { - sinon.stub(Web5UserAgent, 'create').resolves(testHarness.agent as Web5UserAgent); - const serverInfoStub = sinon.stub(testHarness.agent.rpc, 'getServerInfo').resolves({ - registrationRequirements : [], // no registration requirements - maxFileSize : 10000, - webSocketSupport : true, - }); + sinon + .stub(Web5UserAgent, 'create') + .resolves(testHarness.agent as Web5UserAgent); + const serverInfoStub = sinon + .stub(testHarness.agent.rpc, 'getServerInfo') + .resolves({ + registrationRequirements : [], // no registration requirements + maxFileSize : 10000, + webSocketSupport : true, + }); // stub a successful registration - const registerStub = sinon.stub(DwnRegistrar, 'registerTenant').resolves(); + const registerStub = sinon + .stub(DwnRegistrar, 'registerTenant') + .resolves(); const registration = { onSuccess : () => {}, - onFailure : () => {} + onFailure : () => {}, }; const registerSuccessSpy = sinon.spy(registration, 'onSuccess'); const registerFailureSpy = sinon.spy(registration, 'onFailure'); - const { web5, did } = await Web5.connect({ registration, didCreateOptions: { dwnEndpoints: [ - 'https://dwn.example.com', - 'https://dwn.production.com/' - ] } }); + const { web5, did } = await Web5.connect({ + registration, + didCreateOptions: { + dwnEndpoints: [ + 'https://dwn.example.com', + 'https://dwn.production.com/', + ], + }, + }); expect(web5).to.exist; expect(did).to.exist; @@ -312,27 +481,39 @@ describe('Web5', () => { }); it('techPreview.dwnEndpoints should take precedence over didCreateOptions.dwnEndpoints', async () => { - sinon.stub(Web5UserAgent, 'create').resolves(testHarness.agent as Web5UserAgent); - const serverInfoStub = sinon.stub(testHarness.agent.rpc, 'getServerInfo').resolves({ - registrationRequirements : ['terms-of-service'], - maxFileSize : 10000, - webSocketSupport : true, - }); + sinon + .stub(Web5UserAgent, 'create') + .resolves(testHarness.agent as Web5UserAgent); + const serverInfoStub = sinon + .stub(testHarness.agent.rpc, 'getServerInfo') + .resolves({ + registrationRequirements : ['terms-of-service'], + maxFileSize : 10000, + webSocketSupport : true, + }); // stub a successful registration - const registerStub = sinon.stub(DwnRegistrar, 'registerTenant').resolves(); + const registerStub = sinon + .stub(DwnRegistrar, 'registerTenant') + .resolves(); const registration = { onSuccess : () => {}, - onFailure : () => {} + onFailure : () => {}, }; const registerSuccessSpy = sinon.spy(registration, 'onSuccess'); const registerFailureSpy = sinon.spy(registration, 'onFailure'); - const { web5, did } = await Web5.connect({ registration, - didCreateOptions : { dwnEndpoints: [ 'https://dwn.example.com', 'https://dwn.production.com/' ] }, // two endpoints, - techPreview : { dwnEndpoints: [ 'https://dwn.production.com/' ] }, // one endpoint + const { web5, did } = await Web5.connect({ + registration, + didCreateOptions: { + dwnEndpoints: [ + 'https://dwn.example.com', + 'https://dwn.production.com/', + ], + }, // two endpoints, + techPreview: { dwnEndpoints: ['https://dwn.production.com/'] }, // one endpoint }); expect(web5).to.exist; expect(did).to.exist; @@ -346,6 +527,5 @@ describe('Web5', () => { expect(registerStub.callCount, 'registerTenant called').to.equal(2); // called twice, once for Agent DID once for Identity DID }); }); - }); -}); \ No newline at end of file +}); diff --git a/packages/credentials/package.json b/packages/credentials/package.json index d772a69c3..64581ab49 100644 --- a/packages/credentials/package.json +++ b/packages/credentials/package.json @@ -77,7 +77,7 @@ "dependencies": { "@sphereon/pex": "3.3.3", "@web5/common": "1.0.1", - "@web5/crypto": "1.0.1", + "@web5/crypto": "workspace:*", "@web5/dids": "1.1.1", "jsonschema": "1.4.1", "pako": "^2.1.0" @@ -89,7 +89,7 @@ "@types/chai": "4.3.16", "@types/eslint": "8.56.10", "@types/mocha": "10.0.6", - "@types/node": "20.14.11", + "@types/node": "20.14.8", "@types/pako": "^2.0.3", "@types/sinon": "17.0.3", "@typescript-eslint/eslint-plugin": "7.10.0", diff --git a/packages/crypto-aws-kms/package.json b/packages/crypto-aws-kms/package.json index 7e8bc76a9..9ed0eed86 100644 --- a/packages/crypto-aws-kms/package.json +++ b/packages/crypto-aws-kms/package.json @@ -71,7 +71,7 @@ }, "dependencies": { "@aws-sdk/client-kms": "3.616.0", - "@web5/crypto": "1.0.0" + "@web5/crypto": "workspace:*" }, "devDependencies": { "@playwright/test": "1.45.3", @@ -99,4 +99,4 @@ "source-map-loader": "5.0.0", "typescript": "5.4.5" } -} \ No newline at end of file +} diff --git a/packages/crypto/package.json b/packages/crypto/package.json index 12d84a692..711d2622b 100644 --- a/packages/crypto/package.json +++ b/packages/crypto/package.json @@ -86,7 +86,7 @@ "@types/chai-as-promised": "7.1.8", "@types/eslint": "8.56.10", "@types/mocha": "10.0.6", - "@types/node": "20.12.11", + "@types/node": "20.14.8", "@types/sinon": "17.0.3", "@typescript-eslint/eslint-plugin": "7.14.1", "@typescript-eslint/parser": "7.14.1", diff --git a/packages/crypto/src/index.ts b/packages/crypto/src/index.ts index 755d74f87..424820cc3 100644 --- a/packages/crypto/src/index.ts +++ b/packages/crypto/src/index.ts @@ -1,5 +1,6 @@ export * from './local-key-manager.js'; export * as utils from './utils.js'; +export * from './utils.js'; export * from './algorithms/aes-ctr.js'; export * from './algorithms/aes-gcm.js'; diff --git a/packages/crypto/src/utils.ts b/packages/crypto/src/utils.ts index a51c8f2c0..51f90d160 100644 --- a/packages/crypto/src/utils.ts +++ b/packages/crypto/src/utils.ts @@ -72,6 +72,7 @@ export function checkValidProperty(params: { * If the `alg` property is present, its value takes precedence and is returned. Otherwise, the * `crv` property is used to determine the algorithm. * + * @memberof CryptoUtils * @see {@link https://www.iana.org/assignments/jose/jose.xhtml#web-signature-encryption-algorithms | JOSE Algorithms} * @see {@link https://datatracker.ietf.org/doc/draft-ietf-jose-fully-specified-algorithms/ | Fully-Specified Algorithms for JOSE and COSE} * @@ -85,7 +86,6 @@ export function checkValidProperty(params: { * const algorithm = getJoseSignatureAlgorithmFromPublicKey(publicKey); * console.log(algorithm); // Output: "EdDSA" * ``` - * * @param publicKey - A JWK containing the `alg` and/or `crv` properties. * @returns The name of the algorithm associated with the key. * @throws Error if the algorithm cannot be determined from the provided input. @@ -156,6 +156,7 @@ export function isWebCryptoSupported(): boolean { * Generates secure pseudorandom values of the specified length using * `crypto.getRandomValues`, which defers to the operating system. * + * @memberof CryptoUtils * @remarks * This function is a wrapper around `randomBytes` from the '@noble/hashes' * package. It's designed to be cryptographically strong, suitable for @@ -192,7 +193,7 @@ export function randomBytes(bytesLength: number): Uint8Array { * Note that while UUIDs are not guaranteed to be unique, they are * practically unique" given the large number of possible UUIDs and * the randomness of generation. - * + * @memberof CryptoUtils * @example * ```ts * const uuid = randomUuid(); @@ -205,4 +206,85 @@ export function randomUuid(): string { const uuid = crypto.randomUUID(); return uuid; -} \ No newline at end of file +} + + +/** + * Generates a secure random PIN (Personal Identification Number) of a + * specified length. + * + * This function ensures that the generated PIN is cryptographically secure and + * uniformly distributed by using rejection sampling. It repeatedly generates + * random numbers until it gets one in the desired range [0, max]. This avoids + * bias introduced by simply taking the modulus or truncating the number. + * + * Note: The function can generate PINs of 3 to 10 digits in length. + * Any request for a PIN outside this range will result in an error. + * + * Example usage: + * + * ```ts + * const pin = randomPin({ length: 4 }); + * console.log(pin); // Outputs a 4-digit PIN, e.g., "0231" + * ``` + * @memberof CryptoUtils + * @param options - The options object containing the desired length of the generated PIN. + * @param options.length - The desired length of the generated PIN. The value should be + * an integer between 3 and 8 inclusive. + * + * @returns A string representing the generated PIN. The PIN will be zero-padded + * to match the specified length, if necessary. + * + * @throws Will throw an error if the requested PIN length is less than 3 or greater than 8. + */ +export function randomPin({ length }: { length: number }): string { + if (3 > length || length > 10) { + throw new Error('randomPin() can securely generate a PIN between 3 to 10 digits.'); + } + + const max = Math.pow(10, length) - 1; + + let pin; + + if (length <= 6) { + const rejectionRange = Math.pow(10, length); + do { + // Adjust the byte generation based on length. + const randomBuffer = randomBytes(Math.ceil(length / 2) ); // 2 digits per byte. + const view = new DataView(randomBuffer.buffer); + // Convert the buffer to integer and take modulus based on length. + pin = view.getUint16(0, false) % rejectionRange; + } while (pin > max); + } else { + const rejectionRange = Math.pow(10, 10); // For max 10 digit number. + do { + // Generates 4 random bytes. + const randomBuffer = randomBytes(4); + // Create a DataView to read from the randomBuffer. + const view = new DataView(randomBuffer.buffer); + // Transform bytes to number (big endian). + pin = view.getUint32(0, false) % rejectionRange; + } while (pin > max); // Reject if the number is outside the desired range. + } + + // Pad the PIN with leading zeros to the desired length. + return pin.toString().padStart(length, '0'); +} + +/** Utility functions for cryptographic operations. */ +export const CryptoUtils = { + /** Generates a secure random PIN (Personal Identification Number) of a specified length. */ + randomPin, + /** Generates a UUID following the version 4 format, as specified in RFC 4122. */ + randomUuid, + /** Generates secure pseudorandom values of the specified length using `crypto.getRandomValues`, which defers to the operating system. */ + randomBytes, + /** Checks if the Web Crypto API is supported in the current runtime environment. */ + isWebCryptoSupported, + /** Determines the JOSE algorithm identifier of the digital signature algorithm based on the `alg` or `crv` property of a {@link Jwk | JWK}. */ + getJoseSignatureAlgorithmFromPublicKey, + /** Checks whether the property specified is a member of the list of valid properties. */ + checkValidProperty, + /** Checks whether the properties object provided contains the specified property. */ + checkRequiredProperty +}; \ No newline at end of file diff --git a/packages/crypto/tests/utils.spec.ts b/packages/crypto/tests/utils.spec.ts index aa6ff702e..15a6a8886 100644 --- a/packages/crypto/tests/utils.spec.ts +++ b/packages/crypto/tests/utils.spec.ts @@ -10,6 +10,7 @@ import { isWebCryptoSupported, checkRequiredProperty, getJoseSignatureAlgorithmFromPublicKey, + randomPin } from '../src/utils.js'; // TODO: Remove this polyfill once Node.js v18 is no longer supported by @web5/crypto. @@ -171,4 +172,58 @@ describe('Crypto Utils', () => { expect(set.size).to.equal(100); }); }); + + describe('randomPin', () => { + it('generates a 3-digit PIN', () => { + const pin = randomPin({ length: 3 }); + expect(pin).to.match(/^\d{3}$/); + }); + + it('generates a 4-digit PIN', () => { + const pin = randomPin({ length: 4 }); + expect(pin).to.match(/^\d{4}$/); + }); + + it('generates a 5-digit PIN', () => { + const pin = randomPin({ length: 5 }); + expect(pin).to.match(/^\d{5}$/); + }); + + it('generates a 6-digit PIN', () => { + const pin = randomPin({ length: 6 }); + expect(pin).to.match(/^\d{6}$/); + }); + + it('generates a 7-digit PIN', () => { + const pin = randomPin({ length: 7 }); + expect(pin).to.match(/^\d{7}$/); + }); + + it('generates an 8-digit PIN', () => { + const pin = randomPin({ length: 8 }); + expect(pin).to.match(/^\d{8}$/); + }); + + it('generates an 9-digit PIN', () => { + const pin = randomPin({ length: 9 }); + expect(pin).to.match(/^\d{9}$/); + }); + + it('generates an 10-digit PIN', () => { + const pin = randomPin({ length: 10 }); + expect(pin).to.match(/^\d{10}$/); + }); + + it('throws an error for a PIN length less than 3', () => { + expect( + () => randomPin({ length: 2 }) + ).to.throw(Error, 'randomPin() can securely generate a PIN between 3 to 10 digits.'); + }); + + it('throws an error for a PIN length greater than 10', () => { + expect( + () => randomPin({ length: 11 }) + ).to.throw(Error, 'randomPin() can securely generate a PIN between 3 to 10 digits.'); + }); + }); }); \ No newline at end of file diff --git a/packages/dids/package.json b/packages/dids/package.json index 35bb77d0b..dfde31e68 100644 --- a/packages/dids/package.json +++ b/packages/dids/package.json @@ -79,7 +79,7 @@ "@decentralized-identity/ion-sdk": "1.0.4", "@dnsquery/dns-packet": "6.1.1", "@web5/common": "1.0.0", - "@web5/crypto": "1.0.1", + "@web5/crypto": "workspace:*", "abstract-level": "1.0.4", "bencode": "4.0.0", "buffer": "6.0.3", @@ -94,7 +94,7 @@ "@types/eslint": "8.56.10", "@types/mocha": "10.0.7", "@types/ms": "0.7.34", - "@types/node": "20.12.12", + "@types/node": "20.14.8", "@types/sinon": "17.0.3", "@typescript-eslint/eslint-plugin": "7.9.0", "@typescript-eslint/parser": "7.14.1", @@ -114,4 +114,4 @@ "source-map-loader": "5.0.0", "typescript": "5.5.4" } -} \ No newline at end of file +} diff --git a/packages/identity-agent/package.json b/packages/identity-agent/package.json index c053af2d5..fe9efe7ec 100644 --- a/packages/identity-agent/package.json +++ b/packages/identity-agent/package.json @@ -71,7 +71,7 @@ "dependencies": { "@web5/agent": "workspace:*", "@web5/common": "1.0.0", - "@web5/crypto": "1.0.0", + "@web5/crypto": "workspace:*", "@web5/dids": "1.1.0" }, "devDependencies": { @@ -80,8 +80,8 @@ "@types/chai-as-promised": "7.1.5", "@types/eslint": "8.56.10", "@types/mocha": "10.0.1", - "@types/node": "20.11.19", - "@types/sinon": "17.0.2", + "@types/node": "20.14.8", + "@types/sinon": "17.0.3", "@typescript-eslint/eslint-plugin": "7.9.0", "@typescript-eslint/parser": "7.14.1", "@web/test-runner": "0.18.2", @@ -97,7 +97,7 @@ "node-stdlib-browser": "1.2.0", "playwright": "1.45.3", "rimraf": "4.4.0", - "sinon": "16.1.3", + "sinon": "18.0.0", "typescript": "5.1.6" } } diff --git a/packages/proxy-agent/package.json b/packages/proxy-agent/package.json index bf9f6c6c5..f6fecd515 100644 --- a/packages/proxy-agent/package.json +++ b/packages/proxy-agent/package.json @@ -71,7 +71,7 @@ "dependencies": { "@web5/agent": "workspace:*", "@web5/common": "1.0.0", - "@web5/crypto": "1.0.0", + "@web5/crypto": "workspace:*", "@web5/dids": "1.1.0" }, "devDependencies": { @@ -81,7 +81,7 @@ "@types/dns-packet": "5.6.4", "@types/eslint": "8.56.10", "@types/mocha": "10.0.1", - "@types/node": "20.11.19", + "@types/node": "20.14.8", "@typescript-eslint/eslint-plugin": "7.9.0", "@typescript-eslint/parser": "7.14.1", "@web/test-runner": "0.18.2", diff --git a/packages/user-agent/package.json b/packages/user-agent/package.json index 403620952..815b1603d 100644 --- a/packages/user-agent/package.json +++ b/packages/user-agent/package.json @@ -71,7 +71,7 @@ "dependencies": { "@web5/agent": "workspace:*", "@web5/common": "1.0.0", - "@web5/crypto": "1.0.0", + "@web5/crypto": "workspace:*", "@web5/dids": "1.1.0" }, "devDependencies": { @@ -81,7 +81,7 @@ "@types/dns-packet": "5.6.4", "@types/eslint": "8.56.10", "@types/mocha": "10.0.1", - "@types/node": "20.11.19", + "@types/node": "20.14.8", "@typescript-eslint/eslint-plugin": "7.9.0", "@typescript-eslint/parser": "7.14.1", "@web/test-runner": "0.18.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e3750c745..c2c252ffb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,7 +20,7 @@ importers: version: 0.5.0 '@changesets/cli': specifier: ^2.27.5 - version: 2.27.5 + version: 2.27.7 '@npmcli/package-json': specifier: 5.0.0 version: 5.0.0 @@ -28,14 +28,17 @@ importers: specifier: 7.9.0 version: 7.9.0(@typescript-eslint/parser@7.14.1(eslint@9.7.0)(typescript@5.5.4))(eslint@9.7.0)(typescript@5.5.4) '@web5/dwn-server': - specifier: 0.4.3 - version: 0.4.3 + specifier: 0.4.4 + version: 0.4.4 audit-ci: specifier: ^7.0.1 - version: 7.0.1 + version: 7.1.0 eslint-plugin-mocha: specifier: 10.4.3 version: 10.4.3(eslint@9.7.0) + globals: + specifier: ^13.24.0 + version: 13.24.0 npkill: specifier: 0.11.3 version: 0.11.3 @@ -55,8 +58,8 @@ importers: specifier: 1.0.0 version: 1.0.0 '@web5/crypto': - specifier: 1.0.0 - version: 1.0.0 + specifier: workspace:* + version: link:../crypto '@web5/dids': specifier: 1.1.0 version: 1.1.0 @@ -101,8 +104,8 @@ importers: specifier: 0.7.31 version: 0.7.31 '@types/node': - specifier: 20.11.19 - version: 20.11.19 + specifier: 20.14.8 + version: 20.14.8 '@types/sinon': specifier: 17.0.3 version: 17.0.3 @@ -164,8 +167,8 @@ importers: specifier: 1.0.0 version: 1.0.0 '@web5/crypto': - specifier: 1.0.0 - version: 1.0.0 + specifier: workspace:* + version: link:../crypto '@web5/dids': specifier: 1.1.0 version: 1.1.0 @@ -189,11 +192,11 @@ importers: specifier: 10.0.1 version: 10.0.1 '@types/node': - specifier: 20.11.19 - version: 20.11.19 + specifier: 20.14.8 + version: 20.14.8 '@types/sinon': - specifier: 17.0.2 - version: 17.0.2 + specifier: 17.0.3 + version: 17.0.3 '@typescript-eslint/eslint-plugin': specifier: 7.9.0 version: 7.9.0(@typescript-eslint/parser@7.14.1(eslint@9.3.0)(typescript@5.1.6))(eslint@9.3.0)(typescript@5.1.6) @@ -237,11 +240,11 @@ importers: specifier: 4.4.0 version: 4.4.0 sinon: - specifier: 16.1.3 - version: 16.1.3 + specifier: 18.0.0 + version: 18.0.0 source-map-loader: specifier: 4.0.2 - version: 4.0.2(webpack@5.92.0(esbuild@0.19.8)) + version: 4.0.2(webpack@5.93.0(esbuild@0.19.8)) typescript: specifier: 5.1.6 version: 5.1.6 @@ -340,8 +343,8 @@ importers: specifier: 1.0.1 version: 1.0.1 '@web5/crypto': - specifier: 1.0.1 - version: 1.0.1 + specifier: workspace:* + version: link:../crypto '@web5/dids': specifier: 1.1.1 version: 1.1.1 @@ -371,8 +374,8 @@ importers: specifier: 10.0.6 version: 10.0.6 '@types/node': - specifier: 20.14.11 - version: 20.14.11 + specifier: 20.14.8 + version: 20.14.8 '@types/pako': specifier: ^2.0.3 version: 2.0.3 @@ -456,8 +459,8 @@ importers: specifier: 10.0.6 version: 10.0.6 '@types/node': - specifier: 20.12.11 - version: 20.12.11 + specifier: 20.14.8 + version: 20.14.8 '@types/sinon': specifier: 17.0.3 version: 17.0.3 @@ -508,7 +511,7 @@ importers: version: 18.0.0 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.92.0(esbuild@0.23.0)) + version: 5.0.0(webpack@5.93.0(esbuild@0.23.0)) typescript: specifier: 5.4.5 version: 5.4.5 @@ -519,8 +522,8 @@ importers: specifier: 3.616.0 version: 3.616.0 '@web5/crypto': - specifier: 1.0.0 - version: 1.0.0 + specifier: workspace:* + version: link:../crypto devDependencies: '@playwright/test': specifier: 1.45.3 @@ -590,7 +593,7 @@ importers: version: 18.0.0 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.92.0) + version: 5.0.0(webpack@5.93.0) typescript: specifier: 5.4.5 version: 5.4.5 @@ -607,8 +610,8 @@ importers: specifier: 1.0.0 version: 1.0.0 '@web5/crypto': - specifier: 1.0.1 - version: 1.0.1 + specifier: workspace:* + version: link:../crypto abstract-level: specifier: 1.0.4 version: 1.0.4 @@ -647,8 +650,8 @@ importers: specifier: 0.7.34 version: 0.7.34 '@types/node': - specifier: 20.12.12 - version: 20.12.12 + specifier: 20.14.8 + version: 20.14.8 '@types/sinon': specifier: 17.0.3 version: 17.0.3 @@ -699,7 +702,7 @@ importers: version: 18.0.0 source-map-loader: specifier: 5.0.0 - version: 5.0.0(webpack@5.92.0(esbuild@0.23.0)) + version: 5.0.0(webpack@5.93.0(esbuild@0.23.0)) typescript: specifier: 5.5.4 version: 5.5.4 @@ -713,8 +716,8 @@ importers: specifier: 1.0.0 version: 1.0.0 '@web5/crypto': - specifier: 1.0.0 - version: 1.0.0 + specifier: workspace:* + version: link:../crypto '@web5/dids': specifier: 1.1.0 version: 1.1.0 @@ -735,11 +738,11 @@ importers: specifier: 10.0.1 version: 10.0.1 '@types/node': - specifier: 20.11.19 - version: 20.11.19 + specifier: 20.14.8 + version: 20.14.8 '@types/sinon': - specifier: 17.0.2 - version: 17.0.2 + specifier: 17.0.3 + version: 17.0.3 '@typescript-eslint/eslint-plugin': specifier: 7.9.0 version: 7.9.0(@typescript-eslint/parser@7.14.1(eslint@9.3.0)(typescript@5.1.6))(eslint@9.3.0)(typescript@5.1.6) @@ -786,8 +789,8 @@ importers: specifier: 4.4.0 version: 4.4.0 sinon: - specifier: 16.1.3 - version: 16.1.3 + specifier: 18.0.0 + version: 18.0.0 typescript: specifier: 5.1.6 version: 5.1.6 @@ -801,8 +804,8 @@ importers: specifier: 1.0.0 version: 1.0.0 '@web5/crypto': - specifier: 1.0.0 - version: 1.0.0 + specifier: workspace:* + version: link:../crypto '@web5/dids': specifier: 1.1.0 version: 1.1.0 @@ -826,8 +829,8 @@ importers: specifier: 10.0.1 version: 10.0.1 '@types/node': - specifier: 20.11.19 - version: 20.11.19 + specifier: 20.14.8 + version: 20.14.8 '@typescript-eslint/eslint-plugin': specifier: 7.9.0 version: 7.9.0(@typescript-eslint/parser@7.14.1(eslint@9.3.0)(typescript@5.1.6))(eslint@9.3.0)(typescript@5.1.6) @@ -886,8 +889,8 @@ importers: specifier: 1.0.0 version: 1.0.0 '@web5/crypto': - specifier: 1.0.0 - version: 1.0.0 + specifier: workspace:* + version: link:../crypto '@web5/dids': specifier: 1.1.0 version: 1.1.0 @@ -911,8 +914,8 @@ importers: specifier: 10.0.1 version: 10.0.1 '@types/node': - specifier: 20.11.19 - version: 20.11.19 + specifier: 20.14.8 + version: 20.14.8 '@typescript-eslint/eslint-plugin': specifier: 7.9.0 version: 7.9.0(@typescript-eslint/parser@7.14.1(eslint@9.3.0)(typescript@5.1.6))(eslint@9.3.0)(typescript@5.1.6) @@ -964,14 +967,6 @@ importers: packages: - '@75lb/deep-merge@1.1.2': - resolution: {integrity: sha512-08K9ou5VNbheZFxM5tDWoqjA3ImC50DiuuJ2tj1yEPRfkp8lLLg6XAaJ4On+a0yAXor/8ay5gHnAIshRM44Kpw==} - engines: {node: '>=12.17'} - - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - '@assemblyscript/loader@0.9.4': resolution: {integrity: sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA==} @@ -1079,9 +1074,9 @@ packages: resolution: {integrity: sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==} engines: {node: '>=16.0.0'} - '@aws-sdk/util-locate-window@3.495.0': - resolution: {integrity: sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==} - engines: {node: '>=14.0.0'} + '@aws-sdk/util-locate-window@3.568.0': + resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} + engines: {node: '>=16.0.0'} '@aws-sdk/util-user-agent-browser@3.609.0': resolution: {integrity: sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==} @@ -1095,30 +1090,30 @@ packages: aws-crt: optional: true - '@babel/code-frame@7.23.5': - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.23.4': - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.24.1': - resolution: {integrity: sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==} + '@babel/runtime@7.25.0': + resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@changesets/apply-release-plan@7.0.3': - resolution: {integrity: sha512-klL6LCdmfbEe9oyfLxnidIf/stFXmrbFO/3gT5LU5pcyoZytzJe4gWpTBx3BPmyNPl16dZ1xrkcW7b98e3tYkA==} + '@changesets/apply-release-plan@7.0.4': + resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==} - '@changesets/assemble-release-plan@6.0.2': - resolution: {integrity: sha512-n9/Tdq+ze+iUtjmq0mZO3pEhJTKkku9hUxtUadW30jlN7kONqJG3O6ALeXrmc6gsi/nvoCuKjqEJ68Hk8RbMTQ==} + '@changesets/assemble-release-plan@6.0.3': + resolution: {integrity: sha512-bLNh9/Lgl1VwkjWZTq8JmRqH+hj7/Yzfz0jsQ/zJJ+FTmVqmqPj3szeKOri8O/hEM8JmHW019vh2gTO9iq5Cuw==} '@changesets/changelog-git@0.2.0': resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} @@ -1126,24 +1121,24 @@ packages: '@changesets/changelog-github@0.5.0': resolution: {integrity: sha512-zoeq2LJJVcPJcIotHRJEEA2qCqX0AQIeFE+L21L8sRLPVqDhSXY8ZWAt2sohtBpFZkBwu+LUwMSKRr2lMy3LJA==} - '@changesets/cli@2.27.5': - resolution: {integrity: sha512-UVppOvzCjjylBenFcwcZNG5IaZ8jsIaEVraV/pbXgukYNb0Oqa0d8UWb0LkYzA1Bf1HmUrOfccFcRLheRuA7pA==} + '@changesets/cli@2.27.7': + resolution: {integrity: sha512-6lr8JltiiXPIjDeYg4iM2MeePP6VN/JkmqBsVA5XRiy01hGS3y629LtSDvKcycj/w/5Eur1rEwby/MjcYS+e2A==} hasBin: true - '@changesets/config@3.0.1': - resolution: {integrity: sha512-nCr8pOemUjvGJ8aUu8TYVjqnUL+++bFOQHBVmtNbLvKzIDkN/uiP/Z4RKmr7NNaiujIURHySDEGFPftR4GbTUA==} + '@changesets/config@3.0.2': + resolution: {integrity: sha512-cdEhS4t8woKCX2M8AotcV2BOWnBp09sqICxKapgLHf9m5KdENpWjyrFNMjkLqGJtUys9U+w93OxWT0czorVDfw==} '@changesets/errors@0.2.0': resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - '@changesets/get-dependents-graph@2.1.0': - resolution: {integrity: sha512-QOt6pQq9RVXKGHPVvyKimJDYJumx7p4DO5MO9AhRJYgAPgv0emhNqAqqysSVKHBm4sxKlGN4S1zXOIb5yCFuhQ==} + '@changesets/get-dependents-graph@2.1.1': + resolution: {integrity: sha512-LRFjjvigBSzfnPU2n/AhFsuWR5DK++1x47aq6qZ8dzYsPtS/I5mNhIGAS68IAxh1xjO9BTtz55FwefhANZ+FCA==} '@changesets/get-github-info@0.6.0': resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} - '@changesets/get-release-plan@4.0.2': - resolution: {integrity: sha512-rOalz7nMuMV2vyeP7KBeAhqEB7FM2GFPO5RQSoOoUKKH9L6wW3QyPA2K+/rG9kBrWl2HckPVES73/AuwPvbH3w==} + '@changesets/get-release-plan@4.0.3': + resolution: {integrity: sha512-6PLgvOIwTSdJPTtpdcr3sLtGatT+Jr22+cQwEBJBy6wP0rjB4yJ9lv583J9fVpn1bfQlBkDa8JxbS2g/n9lIyA==} '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} @@ -1602,14 +1597,6 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint-community/regexpp@4.10.1': - resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-community/regexpp@4.11.0': resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -1642,9 +1629,13 @@ packages: resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@hapi/bourne@3.0.0': + resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} + '@humanwhocodes/config-array@0.13.0': resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -1652,6 +1643,7 @@ packages: '@humanwhocodes/object-schema@2.0.3': resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead '@humanwhocodes/retry@0.3.0': resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} @@ -1665,12 +1657,8 @@ packages: resolution: {integrity: sha512-TyqgtxEojc98rvxg4NGM+73JzQeM4+tK2VQes/in2mdyhO+1wbGuBijh1tvi9BErQ/dEblxs9v4vEQSX8mFCIw==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - '@ipld/dag-cbor@9.2.0': - resolution: {integrity: sha512-N14oMy0q4gM6OuZkIpisKe0JBSjf1Jb39VI+7jMLiWX9124u1Z3Fdj/Tag1NA0cVxxqWDh0CqsjcVfOKtelPDA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - - '@ipld/dag-pb@4.1.0': - resolution: {integrity: sha512-LJU451Drqs5zjFm7jI4Hs3kHlilOqkjcSfPiQgVsZnWaYb2C7YdfhnclrVn/X+ucKejlU9BL3+gXFCZUXkMuCg==} + '@ipld/dag-pb@4.1.2': + resolution: {integrity: sha512-BSztO4l3C+ya9HjCaQot26Y4AVsqIKtnn6+23ubc1usucnf6yoTBme18oCCdM6gKBMxuPqju5ye3lh9WEJsdeQ==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} '@isaacs/cliui@8.0.2': @@ -1700,11 +1688,8 @@ packages: '@jridgewell/source-map@0.3.6': resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/trace-mapping@0.3.22': - resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} @@ -1713,8 +1698,8 @@ packages: resolution: {integrity: sha512-2X6bvghJ/JAoZO52lbgyAPFj8uCflhTo2g7nkFzEQdXd/D8rEeD4HtmTEpmtGCva260fcd66YNXBOYdnmHqSOg==} engines: {node: '>=12'} - '@leichtgewicht/ip-codec@2.0.4': - resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -1744,6 +1729,9 @@ packages: '@noble/ed25519@2.0.0': resolution: {integrity: sha512-/extjhkwFupyopDrt80OMWKdLgP429qLZj+z6sYJz90rF2Iz0gjZh2ArMKPImUl13Kx+0EXI2hN9T/KJV0/Zng==} + '@noble/ed25519@2.1.0': + resolution: {integrity: sha512-KM4qTyXPinyCgMzeYJH/UudpdL+paJXtY3CHtHYZQtBkS8MZoPr4rOikZllIutJe0d06QDQKisyn02gxZ8TcQA==} + '@noble/hashes@1.3.3': resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} engines: {node: '>= 16'} @@ -1755,6 +1743,9 @@ packages: '@noble/secp256k1@2.0.0': resolution: {integrity: sha512-rUGBd95e2a45rlmFTqQJYEFA4/gdIARFfuTuTqLglz0PZ6AKyzyXsEZZq7UZn8hZsvaBgpCzKKBJizT2cJERXw==} + '@noble/secp256k1@2.1.0': + resolution: {integrity: sha512-XLEQQNdablO0XZOIniFQimiXsZDNwaYgL96dZwC54Q30imSbAOFf3NKtepc+cXyuZf5Q1HCgbqgZ2UFFuHVcEw==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1767,16 +1758,16 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@npmcli/git@5.0.4': - resolution: {integrity: sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ==} + '@npmcli/git@5.0.8': + resolution: {integrity: sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==} engines: {node: ^16.14.0 || >=18.0.0} '@npmcli/package-json@5.0.0': resolution: {integrity: sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g==} engines: {node: ^16.14.0 || >=18.0.0} - '@npmcli/promise-spawn@7.0.1': - resolution: {integrity: sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==} + '@npmcli/promise-spawn@7.0.2': + resolution: {integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==} engines: {node: ^16.14.0 || >=18.0.0} '@pkgjs/parseargs@0.11.0': @@ -1788,8 +1779,8 @@ packages: engines: {node: '>=18'} hasBin: true - '@puppeteer/browsers@2.2.3': - resolution: {integrity: sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==} + '@puppeteer/browsers@2.3.0': + resolution: {integrity: sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==} engines: {node: '>=18'} hasBin: true @@ -1811,73 +1802,88 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.12.0': - resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} + '@rollup/rollup-android-arm-eabi@4.20.0': + resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.12.0': - resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==} + '@rollup/rollup-android-arm64@4.20.0': + resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.12.0': - resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==} + '@rollup/rollup-darwin-arm64@4.20.0': + resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.12.0': - resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==} + '@rollup/rollup-darwin-x64@4.20.0': + resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.12.0': - resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==} + '@rollup/rollup-linux-arm-gnueabihf@4.20.0': + resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.20.0': + resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.12.0': - resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==} + '@rollup/rollup-linux-arm64-gnu@4.20.0': + resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.12.0': - resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==} + '@rollup/rollup-linux-arm64-musl@4.20.0': + resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.12.0': - resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': + resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.20.0': + resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.12.0': - resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==} + '@rollup/rollup-linux-s390x-gnu@4.20.0': + resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.20.0': + resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.12.0': - resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==} + '@rollup/rollup-linux-x64-musl@4.20.0': + resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.12.0': - resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==} + '@rollup/rollup-win32-arm64-msvc@4.20.0': + resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.12.0': - resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==} + '@rollup/rollup-win32-ia32-msvc@4.20.0': + resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.12.0': - resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==} + '@rollup/rollup-win32-x64-msvc@4.20.0': + resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==} cpu: [x64] os: [win32] - '@scure/base@1.1.5': - resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} + '@scure/base@1.1.7': + resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==} '@scure/bip39@1.2.2': resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} @@ -1904,9 +1910,6 @@ packages: '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@sinonjs/fake-timers@11.2.2': resolution: {integrity: sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==} @@ -1924,16 +1927,16 @@ packages: resolution: {integrity: sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==} engines: {node: '>=16.0.0'} - '@smithy/core@2.2.8': - resolution: {integrity: sha512-1Y0XX0Ucyg0LWTfTVLWpmvSRtFRniykUl3dQ0os1sTd03mKDudR6mVyX+2ak1phwPXx2aEWMAAdW52JNi0mc3A==} + '@smithy/core@2.3.2': + resolution: {integrity: sha512-in5wwt6chDBcUv1Lw1+QzZxN9fBffi+qOixfb65yK4sDuKG7zAUO9HAFqmVzsZM3N+3tTyvZjtnDXePpvp007Q==} engines: {node: '>=16.0.0'} - '@smithy/credential-provider-imds@3.1.4': - resolution: {integrity: sha512-NKyH01m97Xa5xf3pB2QOF3lnuE8RIK0hTVNU5zvZAwZU8uspYO4DHQVlK+Y5gwSrujTfHvbfd1D9UFJAc0iYKQ==} + '@smithy/credential-provider-imds@3.2.0': + resolution: {integrity: sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==} engines: {node: '>=16.0.0'} - '@smithy/fetch-http-handler@3.2.2': - resolution: {integrity: sha512-3LaWlBZObyGrOOd7e5MlacnAKEwFBmAeiW/TOj2eR9475Vnq30uS2510+tnKbxrGjROfNdOhQqGo5j3sqLT6bA==} + '@smithy/fetch-http-handler@3.2.4': + resolution: {integrity: sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==} '@smithy/hash-node@3.0.3': resolution: {integrity: sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==} @@ -1950,16 +1953,16 @@ packages: resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} engines: {node: '>=16.0.0'} - '@smithy/middleware-content-length@3.0.4': - resolution: {integrity: sha512-wySGje/KfhsnF8YSh9hP16pZcl3C+X6zRsvSfItQGvCyte92LliilU3SD0nR7kTlxnAJwxY8vE/k4Eoezj847Q==} + '@smithy/middleware-content-length@3.0.5': + resolution: {integrity: sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==} engines: {node: '>=16.0.0'} - '@smithy/middleware-endpoint@3.0.5': - resolution: {integrity: sha512-V4acqqrh5tDxUEGVTOgf2lYMZqPQsoGntCrjrJZEeBzEzDry2d2vcI1QCXhGltXPPY+BMc6eksZMguA9fIY8vA==} + '@smithy/middleware-endpoint@3.1.0': + resolution: {integrity: sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==} engines: {node: '>=16.0.0'} - '@smithy/middleware-retry@3.0.11': - resolution: {integrity: sha512-/TIRWmhwMpv99JCGuMhJPnH7ggk/Lah7s/uNDyr7faF02BxNsyD/fz9Tw7pgCf9tYOKgjimm2Qml1Aq1pbkt6g==} + '@smithy/middleware-retry@3.0.14': + resolution: {integrity: sha512-7ZaWZJOjUxa5hgmuMspyt8v/zVsh0GXYuF7OvCmdcbVa/xbnKQoYC+uYKunAqRGTkxjOyuOCw9rmFUFOqqC0eQ==} engines: {node: '>=16.0.0'} '@smithy/middleware-serde@3.0.3': @@ -1974,16 +1977,16 @@ packages: resolution: {integrity: sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==} engines: {node: '>=16.0.0'} - '@smithy/node-http-handler@3.1.3': - resolution: {integrity: sha512-UiKZm8KHb/JeOPzHZtRUfyaRDO1KPKPpsd7iplhiwVGOeVdkiVJ5bVe7+NhWREMOKomrDIDdSZyglvMothLg0Q==} + '@smithy/node-http-handler@3.1.4': + resolution: {integrity: sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==} engines: {node: '>=16.0.0'} '@smithy/property-provider@3.1.3': resolution: {integrity: sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==} engines: {node: '>=16.0.0'} - '@smithy/protocol-http@4.0.4': - resolution: {integrity: sha512-fAA2O4EFyNRyYdFLVIv5xMMeRb+3fRKc/Rt2flh5k831vLvUmNFXcydeg7V3UeEhGURJI4c1asmGJBjvmF6j8Q==} + '@smithy/protocol-http@4.1.0': + resolution: {integrity: sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==} engines: {node: '>=16.0.0'} '@smithy/querystring-builder@3.0.3': @@ -2002,12 +2005,12 @@ packages: resolution: {integrity: sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==} engines: {node: '>=16.0.0'} - '@smithy/signature-v4@4.0.0': - resolution: {integrity: sha512-ervYjQ+ZvmNG51Ui77IOTPri7nOyo8Kembzt9uwwlmtXJPmFXvslOahbA1blvAVs7G0KlYMiOBog1rAt7RVXxg==} + '@smithy/signature-v4@4.1.0': + resolution: {integrity: sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==} engines: {node: '>=16.0.0'} - '@smithy/smithy-client@3.1.9': - resolution: {integrity: sha512-My2RaInZ4gSwJUPMaiLR/Nk82+c4LlvqpXA+n7lonGYgCZq23Tg+/xFhgmiejJ6XPElYJysTPyV90vKyp17+1g==} + '@smithy/smithy-client@3.1.12': + resolution: {integrity: sha512-wtm8JtsycthkHy1YA4zjIh2thJgIQ9vGkoR639DBx5lLlLNU0v4GARpQZkr2WjXue74nZ7MiTSWfVrLkyD8RkA==} engines: {node: '>=16.0.0'} '@smithy/types@3.3.0': @@ -2040,12 +2043,12 @@ packages: resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} engines: {node: '>=16.0.0'} - '@smithy/util-defaults-mode-browser@3.0.11': - resolution: {integrity: sha512-O3s9DGb3bmRvEKmT8RwvSWK4A9r6svfd+MnJB+UMi9ZcCkAnoRtliulOnGF0qCMkKF9mwk2tkopBBstalPY/vg==} + '@smithy/util-defaults-mode-browser@3.0.14': + resolution: {integrity: sha512-0iwTgKKmAIf+vFLV8fji21Jb2px11ktKVxbX6LIDPAUJyWQqGqBVfwba7xwa1f2FZUoolYQgLvxQEpJycXuQ5w==} engines: {node: '>= 10.0.0'} - '@smithy/util-defaults-mode-node@3.0.11': - resolution: {integrity: sha512-qd4a9qtyOa/WY14aHHOkMafhh9z8D2QTwlcBoXMTPnEwtcY+xpe1JyFm9vya7VsB8hHsfn3XodEtwqREiu4ygQ==} + '@smithy/util-defaults-mode-node@3.0.14': + resolution: {integrity: sha512-e9uQarJKfXApkTMMruIdxHprhcXivH1flYCe8JRDTzkkLx8dA3V5J8GZlST9yfDiRWkJpZJlUXGN9Rc9Ade3OQ==} engines: {node: '>= 10.0.0'} '@smithy/util-endpoints@2.0.5': @@ -2064,8 +2067,8 @@ packages: resolution: {integrity: sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==} engines: {node: '>=16.0.0'} - '@smithy/util-stream@3.1.1': - resolution: {integrity: sha512-EhRnVvl3AhoHAT2rGQ5o+oSDRM/BUSMPLZZdRJZLcNVUsFAjOs4vHaPdNQivTSzRcFxf5DA4gtO46WWU2zimaw==} + '@smithy/util-stream@3.1.3': + resolution: {integrity: sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==} engines: {node: '>=16.0.0'} '@smithy/util-uri-escape@3.0.0': @@ -2164,8 +2167,8 @@ packages: '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - '@types/express-serve-static-core@4.17.43': - resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} + '@types/express-serve-static-core@4.19.5': + resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==} '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} @@ -2194,18 +2197,12 @@ packages: '@types/koa-compose@3.2.8': resolution: {integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==} - '@types/koa@2.14.0': - resolution: {integrity: sha512-DTDUyznHGNHAl+wd1n0z1jxNajduyTh8R53xoewuerdBzGo6Ogj6F2299BFtrexJw4NtgjsI5SMPCmV9gZwGXA==} + '@types/koa@2.15.0': + resolution: {integrity: sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==} '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/mime@3.0.4': - resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} - - '@types/minimist@1.2.5': - resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} - '@types/mocha@10.0.1': resolution: {integrity: sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==} @@ -2224,32 +2221,17 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@20.11.19': - resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==} - - '@types/node@20.12.11': - resolution: {integrity: sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==} - - '@types/node@20.12.12': - resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} - - '@types/node@20.14.11': - resolution: {integrity: sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==} - '@types/node@20.14.8': resolution: {integrity: sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==} - '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/pako@2.0.3': resolution: {integrity: sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q==} '@types/parse5@6.0.3': resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} - '@types/qs@6.9.11': - resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} + '@types/qs@6.9.15': + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} @@ -2260,17 +2242,14 @@ packages: '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - '@types/semver@7.5.7': - resolution: {integrity: sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} '@types/send@0.17.4': resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} - '@types/serve-static@1.15.5': - resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} - - '@types/sinon@17.0.2': - resolution: {integrity: sha512-Zt6heIGsdqERkxctIpvN5Pv3edgBrhoeb3yHyxffd4InN0AX2SVNKSrhdDZKGQICVOxWP/q4DyhpfPNMSrpIiA==} + '@types/serve-static@1.15.7': + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} '@types/sinon@17.0.3': resolution: {integrity: sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==} @@ -2446,16 +2425,16 @@ packages: resolution: {integrity: sha512-IYjHXUgSGGNpO3YJQ9foLcazbJlAWDdJGRe9be7aOhon0Nd6Na5JIOJAej7jsMu76fKHr4b4w2LfIdNQ4fJ8pA==} engines: {node: '>=18.0.0'} - '@web/dev-server-core@0.7.1': - resolution: {integrity: sha512-alHd2j0f4e1ekqYDR8lWScrzR7D5gfsUZq3BP3De9bkFWM3AELINCmqqlVKmCtlkAdEc9VyQvNiEqrxraOdc2A==} + '@web/dev-server-core@0.7.2': + resolution: {integrity: sha512-Q/0jpF13Ipk+qGGQ+Yx/FW1TQBYazpkfgYHHo96HBE7qv4V4KKHqHglZcSUxti/zd4bToxX1cFTz8dmbTlb8JA==} engines: {node: '>=18.0.0'} - '@web/dev-server-rollup@0.6.1': - resolution: {integrity: sha512-vhtsQ8qu1pBHailOBOYJwZnYDc1Lmx6ZAd2j+y5PD2ck0R1LmVsZ7dZK8hDCpkvpvlu2ndURjL9tbzdcsBRJmg==} + '@web/dev-server-rollup@0.6.4': + resolution: {integrity: sha512-sJZfTGCCrdku5xYnQQG51odGI092hKY9YFM0X3Z0tRY3iXKXcYRaLZrErw5KfCxr6g0JRuhe4BBhqXTA5Q2I3Q==} engines: {node: '>=18.0.0'} - '@web/dev-server@0.4.3': - resolution: {integrity: sha512-vf2ZVjdTj8ExrMSYagyHD+snRue9oRetynxd1p0P7ndEpZDKeNLYsvkJyo0pNU6moBxHmXnYeC5VrAT4E3+lNg==} + '@web/dev-server@0.4.6': + resolution: {integrity: sha512-jj/1bcElAy5EZet8m2CcUdzxT+CRvUjIXGh8Lt7vxtthkN9PzY9wlhWx/9WOs5iwlnG1oj0VGo6f/zvbPO0s9w==} engines: {node: '>=18.0.0'} hasBin: true @@ -2471,8 +2450,8 @@ packages: resolution: {integrity: sha512-zeLI6QdH0jzzJMDV5O42Pd8WLJtYqovgdt0JdytgHc0d1EpzXDsc7NTCJSImboc2NcayIsWAvvGGeRF69SMMYg==} engines: {node: '>=18.0.0'} - '@web/test-runner-core@0.13.1': - resolution: {integrity: sha512-2hESALx/UFsAzK+ApWXAkFp2eCmwcs2yj1v4YjwV8F38sQumJ40P3px3BMjFwkOYDORtQOicW0RUeSw1g3BMLA==} + '@web/test-runner-core@0.13.3': + resolution: {integrity: sha512-ilDqF/v2sj0sD69FNSIDT7uw4M1yTVedLBt32/lXy3MMi6suCM7m/ZlhsBy8PXhf879WMvzBOl/vhJBpEMB9vA==} engines: {node: '>=18.0.0'} '@web/test-runner-coverage-v8@0.8.0': @@ -2504,10 +2483,6 @@ packages: resolution: {integrity: sha512-z1CsgycTqiXEsS6pPlJDDLGAeGsgzfdBeWvyxLXTgh08Q8ACULmEGRXjSsgWHFn6DO6MpWFn55h/hF4wZZRxvA==} engines: {node: '>=18.0.0'} - '@web5/crypto@1.0.1': - resolution: {integrity: sha512-LqJsJTDgzEZoxsYSWjhIKDTE3xwjfPF3rpkClMFAxmK4dur/KmYHgeZW2/HjRrFrUhNeaNVClcl7Fg2ZnvjsWw==} - engines: {node: '>=18.0.0'} - '@web5/dids@1.1.0': resolution: {integrity: sha512-d9pKf/DW+ziUiV5g3McC71utyAhQyT1tYGPbQSYWt2ji6FHGNC6tffHMfLXXK/W+vbwV3eNTn06JqTXRaYhxBA==} engines: {node: '>=18.0.0'} @@ -2516,8 +2491,8 @@ packages: resolution: {integrity: sha512-LKc6Okl2iz78QGJCsd8QKQq3LdtmfQ9cfiRKu1BU4ITWteWsg4JD089hKmslNDd2KKnEf9LE72TqEYWxr/e8JA==} engines: {node: '>=18.0.0'} - '@web5/dwn-server@0.4.3': - resolution: {integrity: sha512-wKdVhOMBsTJTIfYRiD/5crYwiPBZIsaVsr3CKjEj3HMY2HzeoDnACdLFpKq0CzvcU2qfXe9X8S6B0ObAfIDZQA==} + '@web5/dwn-server@0.4.4': + resolution: {integrity: sha512-lebeZUQjr7wGm1UfRVv49sAiY6W62dvkM/ayxRpEbHefjiN6p4CyCXHbiqwzOT+569B3lkblDW1eJ7E8kQb3hA==} hasBin: true '@webassemblyjs/ast@1.12.1': @@ -2597,18 +2572,13 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.12.1: resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true - agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} ajv-formats@2.1.1: @@ -2630,6 +2600,9 @@ packages: ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ansi-colors@4.1.1: resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} engines: {node: '>=6'} @@ -2642,8 +2615,8 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@6.2.0: - resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} + ansi-escapes@6.2.1: + resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} engines: {node: '>=14.16'} ansi-regex@5.0.1: @@ -2695,20 +2668,12 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.3: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - - asn1.js@5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + asn1.js@4.10.1: + resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} @@ -2734,8 +2699,8 @@ packages: async@2.6.4: resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - audit-ci@7.0.1: - resolution: {integrity: sha512-NAZuQYyZHmtrNGpS4qfUp8nFvB+6UdfSOg7NUcsyvuDVfulXH3lpnN2PcXOUj7Jr3epAoQ6BCpXmjMODC8SBgQ==} + audit-ci@7.1.0: + resolution: {integrity: sha512-PjjEejlST57S/aDbeWLic0glJ8CNl/ekY3kfGFPMrPkmuaYaDKcMH0F9x9yS9Vp6URhuefSCubl/G0Y2r6oP0g==} engines: {node: '>=16'} hasBin: true @@ -2743,29 +2708,30 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + aws-ssl-profiles@1.1.1: + resolution: {integrity: sha512-+H+kuK34PfMaI9PNU/NSjBKL5hh/KDM9J72kwYeYEm0A8B1AC4fuCy3qsjnA7lxklgyXsB68yn8Z2xoZEjgwCQ==} + engines: {node: '>= 6.0.0'} + b4a@1.6.6: resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.2.0: - resolution: {integrity: sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==} - - bare-events@2.3.1: - resolution: {integrity: sha512-sJnSOTVESURZ61XgEleqmP255T6zTYwHPwE4r6SssIh0U9/uDvfpdoJYpVUerJJZH2fueO+CdT8ZT+OC/7aZDA==} + bare-events@2.4.2: + resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==} bare-fs@2.3.1: resolution: {integrity: sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==} - bare-os@2.3.0: - resolution: {integrity: sha512-oPb8oMM1xZbhRQBngTgpcQ5gXw6kjOaRsSWsIeNyRxGed2w/ARyP7ScBYpWR1qfX2E5rS3gBw6OWcSQo+s+kUg==} + bare-os@2.4.0: + resolution: {integrity: sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==} bare-path@2.1.3: resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} - bare-stream@2.1.2: - resolution: {integrity: sha512-az/7TFOh4Gk9Tqs1/xMFq5FuFoeZ9hZ3orsM2x69u8NXVUDXZnpdhG8mZY/Pv6DF954MGn+iIt4rFrG34eQsvg==} + bare-stream@2.1.3: + resolution: {integrity: sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==} base64-arraybuffer@1.0.2: resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} @@ -2774,8 +2740,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - basic-ftp@5.0.4: - resolution: {integrity: sha512-8PzkB0arJFV4jJWSGOYR+OEic6aeKMu/osRhBULN6RY0ykby6LKhbmuQ5ublvaas5BOwboah5D87nrHyuh8PPA==} + basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} bencode@4.0.0: @@ -2789,8 +2755,8 @@ packages: better-sqlite3@8.7.0: resolution: {integrity: sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw==} - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} bindings@1.5.0: @@ -2832,9 +2798,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - breakword@1.0.6: - resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} - brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} @@ -2859,15 +2822,15 @@ packages: browserify-rsa@4.1.0: resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} - browserify-sign@4.2.2: - resolution: {integrity: sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==} - engines: {node: '>= 4'} + browserify-sign@4.2.3: + resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} + engines: {node: '>= 0.12'} browserify-zlib@0.2.0: resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} - browserslist@4.23.1: - resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2893,9 +2856,6 @@ packages: builtin-status-codes@3.0.0: resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} - builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} - bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -2927,20 +2887,12 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001632: - resolution: {integrity: sha512-udx3o7yHJfUxMLkGohMlVHCvFvWmirKh9JAH/d7WOLPetlH+LTL5cocMZ0t7oZx/mdlOWXti97xLZWc8uURRHg==} + caniuse-lite@1.0.30001647: + resolution: {integrity: sha512-n83xdNiyeNcHpzWY+1aFbqCK7LuLfBricc4+alSQL2Xb6OR3XpnQAmlDG+pQcdTfiHRuLcQ96VOfrPSGiNJYSg==} canonicalize@2.0.0: resolution: {integrity: sha512-ulDEYPv7asdKvqahuAY35c1selLdzDwHqugK92hfkzvlDCwXRRelDkR+Er33md/PtnpqHemgkuDPanZ4fiYZ8w==} @@ -2953,8 +2905,8 @@ packages: resolution: {integrity: sha512-xVW1rSIw1ZXbkwl2XhJ7o/jAv0vnVoQv/QlfQxV8a7V5PlA4UU/AcIiXqmpyybwNWy/GPQU1m/aBVNIWr7/T0w==} hasBin: true - cborg@4.0.9: - resolution: {integrity: sha512-xAuZbCDUOZxCe/ZJuIrnlG1Bk1R0qhwCXdnPYxVmqBSqm9M3BeE3G6Qoj5Zq+8epas36bT3vjiInDTJ6BVH6Rg==} + cborg@4.2.3: + resolution: {integrity: sha512-XBFbEJ6WMfn9L7woc2t+EzOxF8vGqddoopKBbrhIvZBt2WIUgSlT8xLmM6Aq1xv8eWt4yOSjwxWjYeuHU3CpJA==} hasBin: true chai-as-promised@7.1.1: @@ -3025,8 +2977,8 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - chromium-bidi@0.5.19: - resolution: {integrity: sha512-UA6zL77b7RYCjJkZBsZ0wlvCTD+jTjllZ8f6wdO4buevXgTZYjV+XLB9CiEa2OuuTGGTLnI7eN9I60YxuALGQg==} + chromium-bidi@0.6.3: + resolution: {integrity: sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==} peerDependencies: devtools-protocol: '*' @@ -3045,9 +2997,6 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} @@ -3055,16 +3004,13 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - clone@2.1.2: resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} - co-body@6.1.0: - resolution: {integrity: sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==} + co-body@6.2.0: + resolution: {integrity: sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA==} + engines: {node: '>=8.0.0'} co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} @@ -3091,8 +3037,8 @@ packages: resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} engines: {node: '>=4.0.0'} - command-line-usage@7.0.1: - resolution: {integrity: sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==} + command-line-usage@7.0.3: + resolution: {integrity: sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==} engines: {node: '>=12.20.0'} commander@2.20.3: @@ -3129,6 +3075,9 @@ packages: resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} engines: {node: '>= 0.8'} + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} @@ -3161,19 +3110,6 @@ packages: crypto-browserify@3.12.0: resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} - csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - - csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - - csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - - csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} - data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} @@ -3182,6 +3118,18 @@ packages: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} @@ -3213,8 +3161,8 @@ packages: supports-color: optional: true - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -3222,14 +3170,6 @@ packages: supports-color: optional: true - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - decamelize@4.0.0: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} engines: {node: '>=10'} @@ -3238,12 +3178,12 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} engines: {node: '>=6'} - deep-eql@5.0.1: - resolution: {integrity: sha512-nwQCf6ne2gez3o1MxWifqkciwt0zhl0LO1/UwVu4uMBuPmflWM4oQ70XMqHqnBJA+nhzncaqL9HVL6KkHJ28lw==} + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} deep-equal@1.0.1: @@ -3260,8 +3200,9 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} @@ -3313,8 +3254,8 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} - devtools-protocol@0.0.1286932: - resolution: {integrity: sha512-wu58HMQll9voDjR4NlPyoDEw1syfzaBNHymMMZ/QOXiHRNluOnDgu9hp1yHOKYoMlxCh4lSSiugLITe6Fvu1eA==} + devtools-protocol@0.0.1312386: + resolution: {integrity: sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==} diff@5.0.0: resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} @@ -3351,15 +3292,16 @@ packages: ed25519-keygen@0.4.11: resolution: {integrity: sha512-UKxebk/eoW/0yy6BcyCkgAvN2/VzwVXiMVHgKNYBMX6T0fJRAE3WWvH2inyuBvMIJaOqlkc3utylUvL8yW6SOg==} + deprecated: 'Switch to micro-key-producer: the package has been merged into it' ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.4.798: - resolution: {integrity: sha512-by9J2CiM9KPGj9qfp5U4FcPSbXJG7FNzqnYaY4WLzX+v2PHieVGmnsA4dxfpGE3QEC7JofpPZmn7Vn1B9NR2+Q==} + electron-to-chromium@1.5.4: + resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} - elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + elliptic@6.5.6: + resolution: {integrity: sha512-mpzdtpeCLuS3BmE3pO3Cpp5bbjlOPY2Q0PgoF+Od1XZrHLYI28Xe3ossCmYCQt11FQKEYd9+PF8jymTvtWJSHQ==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3374,8 +3316,8 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.17.0: - resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} enquirer@2.4.1: @@ -3388,14 +3330,11 @@ packages: err-code@3.0.1: resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - errorstacks@2.4.1: resolution: {integrity: sha512-jE4i0SMYevwu/xxAuzhly/KTwtj0xDhbzB6m1xPImxTkw8wcCbgarOQPfCVMi5JKVyW7in29pNJCCJrry3Ynnw==} - es-abstract@1.22.4: - resolution: {integrity: sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==} + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} es-define-property@1.0.0: @@ -3406,19 +3345,17 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - es-module-lexer@1.5.3: - resolution: {integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==} + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} es-set-tostringtag@2.0.3: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} @@ -3473,10 +3410,6 @@ packages: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} - eslint-scope@8.0.1: - resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-scope@8.0.2: resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3514,10 +3447,6 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true - espree@10.0.1: - resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@10.1.0: resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3527,8 +3456,8 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -3571,6 +3500,10 @@ packages: evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} @@ -3607,6 +3540,9 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-uri@3.0.1: + resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + fast-xml-parser@4.4.1: resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} hasBin: true @@ -3659,14 +3595,14 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - flatted@3.3.0: - resolution: {integrity: sha512-noqGuLw158+DuD9UPRKHpJ2hGxpFyDlYYrfM0mWt4XhT4n0lwzTLh70Tkdyy4kyTmyTT9Bv7bWAJqw7cgkEXDg==} + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} engines: {node: '>=14'} formdata-polyfill@4.0.10: @@ -3774,24 +3710,22 @@ packages: glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true glob@7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + deprecated: Glob versions prior to v9 are no longer supported glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported glob@9.3.5: resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} @@ -3805,8 +3739,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} globby@11.1.0: @@ -3819,19 +3753,12 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} hamt-sharding@3.0.6: resolution: {integrity: sha512-nZeamxfymIWLpVcAN0CRrb7uVq3hCOGj9IcL6NMA6VVCVWqj+h9Jo/SmaWuS92AEDf1thmHsM5D5c70hM3j2Tg==} - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -3858,6 +3785,10 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} + hash-base@3.0.4: + resolution: {integrity: sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==} + engines: {node: '>=4'} + hash-base@3.1.0: resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} engines: {node: '>=4'} @@ -3865,8 +3796,8 @@ packages: hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - hasown@2.0.1: - resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} he@1.2.0: @@ -3876,11 +3807,8 @@ packages: hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - - hosted-git-info@7.0.1: - resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} html-escaper@2.0.2: @@ -3909,13 +3837,17 @@ packages: https-browserify@1.0.0: resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} - https-proxy-agent@7.0.4: - resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -3939,16 +3871,13 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - inflation@2.1.0: resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==} engines: {node: '>= 0.8.0'} inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} @@ -3959,6 +3888,10 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + ini@4.1.3: + resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + interface-blockstore@5.2.3: resolution: {integrity: sha512-15cN+ZFdcVXdXo6I/SrSzFDsuJyDTyEI52XuvXQlR/G5fe3cK8p0tvVjfu5diRQH1XqNgmJEdMPixyt0xgjtvQ==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} @@ -3967,6 +3900,10 @@ packages: resolution: {integrity: sha512-q2sLoqC+UdaWnjwGyghsH0jwqqVk226lsG207e3QwPB8sAZYmYIWUnJwJH3JjFNNRV9e6CUTmm+gDO0Xg4KRiw==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} + internal-ip@6.2.0: + resolution: {integrity: sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==} + engines: {node: '>=10'} + internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} @@ -3975,8 +3912,9 @@ packages: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} - ip@2.0.1: - resolution: {integrity: sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==} + ip-regex@4.3.0: + resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} + engines: {node: '>=8'} ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} @@ -3990,8 +3928,8 @@ packages: resolution: {integrity: sha512-TXaOI0M5KNpq2+qLw8AIYd0Lnc0gWTKCBqUd9eErBUwaP3Fna4qauF+JX9Rj2UrwaOvG/1xbF8Vm+92eOcKWMA==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - ipfs-unixfs@11.1.3: - resolution: {integrity: sha512-sy6Koojwm/EcM8yvDlycRYA89C8wIcLcGTMMpqnCPUtqTCdl+JxsuPNCBgAu7tmO8Nipm7Tv7f0g/erxTGKKRA==} + ipfs-unixfs@11.1.4: + resolution: {integrity: sha512-RE4nyx5qgG2w7JOLj0Y0D7SfAR1ZkEdramNaBx0OSD4DlQ2Y2NORgc4FHfej3Pgy31v+QISDVP1pQJhdv3bUUg==} is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} @@ -4001,9 +3939,6 @@ packages: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} @@ -4030,8 +3965,13 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.15.0: + resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -4058,6 +3998,10 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-ip@3.1.0: + resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==} + engines: {node: '>=8'} + is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} @@ -4081,10 +4025,6 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} @@ -4096,8 +4036,9 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} @@ -4134,6 +4075,9 @@ packages: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -4169,35 +4113,35 @@ packages: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} - it-all@3.0.4: - resolution: {integrity: sha512-UMiy0i9DqCHBdWvMbzdYvVGa5/w4t1cc4nchpbnjdLhklglv8mQeEYnii0gvKESJuL1zV32Cqdb33R6/GPfxpQ==} + it-all@3.0.6: + resolution: {integrity: sha512-HXZWbxCgQZJfrv5rXvaVeaayXED8nTKx9tj9fpBhmcUJcedVZshMMMqTj0RG2+scGypb9Ut1zd1ifbf3lA8L+Q==} - it-batch@3.0.4: - resolution: {integrity: sha512-WRu2mqOYIs+T9k7+yxSK9VJdk0UE4R0jKQsWQcti5c6vhb1FhjC2+yCB5XBrctQ9edNfCMU/wVzdDj8qSwimbA==} + it-batch@3.0.6: + resolution: {integrity: sha512-pQAAlSvJ4aV6xM/6LRvkPdKSKXxS4my2fGzNUxJyAQ8ccFdxPmK1bUuF5OoeUDkcdrbs8jtsmc4DypCMrGY6sg==} - it-filter@3.0.4: - resolution: {integrity: sha512-e0sz+st4sudK/zH6GZ/gRTRP8A/ADuJFCYDmRgMbZvR79y5+v4ZXav850bBZk5wL9zXaYZFxS1v/6Qi+Vjwh5g==} + it-filter@3.1.1: + resolution: {integrity: sha512-TOXmVuaSkxlLp2hXKoMTra0WMZMKVFxE3vSsbIA+PbADNCBAHhjJ/lM31vBOUTddHMO34Ku++vU8T9PLlBxQtg==} - it-first@3.0.4: - resolution: {integrity: sha512-FtQl84iTNxN5EItP/JgL28V2rzNMkCzTUlNoj41eVdfix2z1DBuLnBqZ0hzYhGGa1rMpbQf0M7CQSA2adlrLJg==} + it-first@3.0.6: + resolution: {integrity: sha512-ExIewyK9kXKNAplg2GMeWfgjUcfC1FnUXz/RPfAvIXby+w7U4b3//5Lic0NV03gXT8O/isj5Nmp6KiY0d45pIQ==} - it-last@3.0.4: - resolution: {integrity: sha512-Ns+KTsQWhs0KCvfv5X3Ck3lpoYxHcp4zUp4d+AOdmC8cXXqDuoZqAjfWhgCbxJubXyIYWdfE2nRcfWqgvZHP8Q==} + it-last@3.0.6: + resolution: {integrity: sha512-M4/get95O85u2vWvWQinF8SJUc/RPC5bWTveBTYXvlP2q5TF9Y+QhT3nz+CRCyS2YEc66VJkyl/da6WrJ0wKhw==} - it-map@3.0.5: - resolution: {integrity: sha512-hB0TDXo/h4KSJJDSRLgAPmDroiXP6Fx1ck4Bzl3US9hHfZweTKsuiP0y4gXuTMcJlS6vj0bb+f70rhkD47ZA3w==} + it-map@3.1.1: + resolution: {integrity: sha512-9bCSwKD1yN1wCOgJ9UOl+46NQtdatosPWzxxUk2NdTLwRPXLh+L7iwCC9QKsbgM60RQxT/nH8bKMqm3H/o8IHQ==} - it-merge@3.0.3: - resolution: {integrity: sha512-FYVU15KC5pb/GQX1Ims+lee8d4pdqGVCpWr0lkNj8o4xuNo7jY71k6GuEiWdP+T7W1bJqewSxX5yoTy5yZpRVA==} + it-merge@3.0.5: + resolution: {integrity: sha512-2l7+mPf85pyRF5pqi0dKcA54E5Jm/2FyY5GsOaN51Ta0ipC7YZ3szuAsH8wOoB6eKY4XsU4k2X+mzPmFBMayEA==} - it-parallel-batch@3.0.4: - resolution: {integrity: sha512-O1omh8ss8+UtXiMjE+8kM5C20DT0Ma4VtKVfrSHOJU0UHZ+iWBXarabzPYEp+WiuQmrv+klDPPlTZ9KaLN9xOA==} + it-parallel-batch@3.0.6: + resolution: {integrity: sha512-3wgiQGvMMHy65OXScrtrtmY+bJSF7P6St1AP+BU+SK83fEr8NNk/MrmJKrtB1+MahYX2a8I+pOGKDj8qVtuV0Q==} - it-parallel@3.0.6: - resolution: {integrity: sha512-i7UM7I9LTkDJw3YIqXHFAPZX6CWYzGc+X3irdNrVExI4vPazrJdI7t5OqrSVN8CONXLAunCiqaSV/zZRbQR56A==} + it-parallel@3.0.8: + resolution: {integrity: sha512-URLhs6eG4Hdr4OdvgBBPDzOjBeSSmI+Kqex2rv/aAyYClME26RYHirLVhZsZP5M+ZP6M34iRlXk8Wlqtezuqpg==} - it-peekable@3.0.3: - resolution: {integrity: sha512-Wx21JX/rMzTEl9flx3DGHuPV1KQFGOl8uoKfQtmZHgPQtGb89eQ6RyVd82h3HuP9Ghpt0WgBDlmmdWeHXqyx7w==} + it-peekable@3.0.5: + resolution: {integrity: sha512-JWQOGMt6rKiPcY30zUVMR4g6YxkpueTwHVE7CMs/aGqCf4OydM6w+7ZM3PvmO1e0TocjuR4aL8xyZWR46cTqCQ==} it-pipe@3.0.1: resolution: {integrity: sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA==} @@ -4210,10 +4154,6 @@ packages: resolution: {integrity: sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -4250,8 +4190,8 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-parse-even-better-errors@3.0.1: - resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} + json-parse-even-better-errors@3.0.2: + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} json-schema-traverse@0.4.1: @@ -4294,14 +4234,6 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - koa-compose@4.1.0: resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} @@ -4320,16 +4252,16 @@ packages: resolution: {integrity: sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==} engines: {node: '>= 7.6.0'} - koa@2.15.0: - resolution: {integrity: sha512-KEL/vU1knsoUvfP4MC4/GthpQrY/p6dzwaaGI6Rt4NQuFqkw3qrvsdYF5pz3wOfi7IGTvMPHC9aZIcUKYFNxsw==} + koa@2.15.3: + resolution: {integrity: sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==} engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} kysely@0.26.3: resolution: {integrity: sha512-yWSgGi9bY13b/W06DD2OCDDHQmq1kwTGYlQ4wpZkMOJqMGCstVCFIvxCCVG4KfY1/3G0MhDAcZsip/Lw8/vJWw==} engines: {node: '>=14.0.0'} - layerr@2.0.1: - resolution: {integrity: sha512-z0730CwG/JO24evdORnyDkwG1Q7b7mF2Tp1qRQ0YvrMMARbt1DFG694SOv439Gm7hYKolyZyaB49YIrYIfZBdg==} + layerr@2.1.0: + resolution: {integrity: sha512-xDD9suWxfBYeXgqffRVH/Wqh+mqZrQcqPRn0I0ijl7iJQ7vu8gMGPt1Qop59pEW/jaIDNUN7+PX1Qk40+vuflg==} level-supports@4.0.1: resolution: {integrity: sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==} @@ -4358,9 +4290,6 @@ packages: lighthouse-logger@1.4.2: resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - load-yaml-file@0.2.0: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} @@ -4416,17 +4345,12 @@ packages: loupe@3.1.1: resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - lru-cache@7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} @@ -4443,14 +4367,6 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - map-stream@0.0.7: resolution: {integrity: sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==} @@ -4467,10 +4383,6 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} - meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} - merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} @@ -4485,12 +4397,8 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} - micro-packed@0.5.2: - resolution: {integrity: sha512-l8sgdeDNz4KMFdEyk2o0qt+GfmzGZH7sV5+XcHRyBS8LQLCHh/7LYlFlQ5k+axqz7hgANsn8SqzDxRe7O2DIIg==} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + micro-packed@0.5.3: + resolution: {integrity: sha512-zWRoH+qUb/ZMp9gVZhexvRGCENDM5HEQF4sflqpdilUHWK2/zKR7/MT8GBctnTwbhNJwy1iuk5q6+TYP7/twYA==} micromatch@4.0.7: resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} @@ -4521,10 +4429,6 @@ packages: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} @@ -4546,18 +4450,10 @@ packages: resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -4565,10 +4461,6 @@ packages: resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} engines: {node: '>=8'} - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -4576,10 +4468,6 @@ packages: mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mixme@0.5.10: - resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==} - engines: {node: '>= 8.0.0'} - mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -4621,6 +4509,10 @@ packages: resolution: {integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==} engines: {node: '>=10'} + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -4652,8 +4544,8 @@ packages: resolution: {integrity: sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==} engines: {node: '>=8.0.0'} - mysql2@3.10.0: - resolution: {integrity: sha512-qx0mfWYt1DpTPkw8mAcHW/OwqqyNqBLBHvY5IjN8+icIYTjt6znrgYJ+gxqNNRpVknb5Wc/gcCM4XjbCR0j5tw==} + mysql2@3.11.0: + resolution: {integrity: sha512-J9phbsXGvTOcRVPR95YedzVSxJecpW5A5+cQ57rhHIFXteTP10HCs+VBjS7DHIKfEaI1zQ5tlVrquCd64A6YvA==} engines: {node: '>= 8.0'} named-placeholders@1.1.3: @@ -4693,14 +4585,11 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - nise@5.1.9: - resolution: {integrity: sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==} - nise@6.0.0: resolution: {integrity: sha512-K8ePqo9BFvN31HXwEtTNGzgrPpmvgciDsFz8aztFjt4LqKO/JeFD8tBOeuDiCMXrIl/m1YvfH8auSpxfaD09wg==} - node-abi@3.63.0: - resolution: {integrity: sha512-vAszCsOUrUxjGAmdnM/pq7gUgie0IRteCQMX6d4A534fQCR93EJU5qgzBvU6EkFfK27s0T3HEV3BOyJIr7OMYw==} + node-abi@3.65.0: + resolution: {integrity: sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==} engines: {node: '>=10'} node-domexception@1.0.0: @@ -4723,22 +4612,19 @@ packages: resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-gyp-build@4.8.0: - resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + node-gyp-build@4.8.1: + resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} hasBin: true - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} node-stdlib-browser@1.2.0: resolution: {integrity: sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==} engines: {node: '>=10'} - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - - normalize-package-data@6.0.0: - resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} normalize-path@3.0.0: @@ -4758,23 +4644,28 @@ packages: resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - npm-package-arg@11.0.1: - resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} + npm-package-arg@11.0.3: + resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} engines: {node: ^16.14.0 || >=18.0.0} - npm-pick-manifest@9.0.0: - resolution: {integrity: sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==} + npm-pick-manifest@9.1.0: + resolution: {integrity: sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==} engines: {node: ^16.14.0 || >=18.0.0} + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} - object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} engines: {node: '>= 0.4'} object-keys@1.1.1: @@ -4811,10 +4702,6 @@ packages: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -4829,14 +4716,22 @@ packages: outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - p-defer@4.0.0: - resolution: {integrity: sha512-Vb3QRvQ0Y5XnF40ZUWW7JfLogicVh/EnA5gBIvKDJoYpeI82+1E3AlB9yOcKFS0AhHrWVnAQO39fbR0G99IVEQ==} + p-defer@4.0.1: + resolution: {integrity: sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==} engines: {node: '>=12'} + p-event@4.2.0: + resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} + engines: {node: '>=8'} + p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -4861,6 +4756,10 @@ packages: resolution: {integrity: sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA==} engines: {node: '>=12'} + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + p-timeout@5.1.0: resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} engines: {node: '>=12'} @@ -4869,8 +4768,8 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - pac-proxy-agent@7.0.1: - resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} + pac-proxy-agent@7.0.2: + resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==} engines: {node: '>= 14'} pac-resolver@7.0.1: @@ -4890,12 +4789,9 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-asn1@5.1.6: - resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + parse-asn1@5.1.7: + resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} + engines: {node: '>= 0.10'} parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} @@ -4922,10 +4818,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} - path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} @@ -4933,8 +4825,8 @@ packages: path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - path-to-regexp@6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -4963,8 +4855,8 @@ packages: pg-connection-string@2.6.4: resolution: {integrity: sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==} - pg-cursor@2.10.5: - resolution: {integrity: sha512-wzgmyk+k9mwuYe30ylLA6qRWw2TBFSee4Bw23oTz66YL9RdRJjDi2TaROMMF+V3QB6QWB3FFCju22loDftjKkw==} + pg-cursor@2.11.0: + resolution: {integrity: sha512-TLCOCtu+rqMarzjUi+/Ffc2DV5ZqO/27y5GqnK9Z3w51rWXMwC8FcO96Uf9/ORo5o+qRXEVJxM9Ts3K2K31MLg==} peerDependencies: pg: ^8 @@ -4984,8 +4876,8 @@ packages: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - pg@8.11.5: - resolution: {integrity: sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==} + pg@8.12.0: + resolution: {integrity: sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==} engines: {node: '>= 8.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -5054,8 +4946,8 @@ packages: engines: {node: '>=10'} hasBin: true - preferred-pm@3.1.3: - resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} + preferred-pm@3.1.4: + resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} engines: {node: '>=10'} prelude-ls@1.1.2: @@ -5075,13 +4967,19 @@ packages: resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + proc-log@4.2.0: + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - progress-events@1.0.0: - resolution: {integrity: sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} + progress-events@1.0.1: + resolution: {integrity: sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw==} progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} @@ -5133,16 +5031,16 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - puppeteer-core@22.9.0: - resolution: {integrity: sha512-Q2SYVZ1SIE7jCd/Pp+1/mNLFtdJfGvAF+CqOTDG8HcCNCiBvoXfopXfOfMHQ/FueXhGfJW/I6DartWv6QzpNGg==} + puppeteer-core@22.15.0: + resolution: {integrity: sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==} engines: {node: '>=18'} qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} - qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} querystring-es3@0.2.1: @@ -5155,10 +5053,6 @@ packages: queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - rabin-wasm@0.1.5: resolution: {integrity: sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA==} hasBin: true @@ -5184,18 +5078,13 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - - read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -5220,10 +5109,6 @@ packages: resolution: {integrity: sha512-7KA6+N9IGat52d83dvxnApAWN+MtVb1MiVuMR/cf1O4kYsJG+g/Aav0AHcHKsb6StinayfPLne0+fMX2sOzAKg==} engines: {node: '>=6'} - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -5239,9 +5124,6 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -5287,8 +5169,8 @@ packages: ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - rollup@4.12.0: - resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==} + rollup@4.20.0: + resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -5301,8 +5183,8 @@ packages: rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - safe-array-concat@1.1.0: - resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} safe-buffer@5.1.2: @@ -5322,17 +5204,8 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true @@ -5353,11 +5226,8 @@ packages: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - set-function-length@1.2.1: - resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} set-function-name@2.0.2: @@ -5393,10 +5263,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - side-channel@1.0.5: - resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} - engines: {node: '>= 0.4'} - side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} @@ -5414,9 +5280,6 @@ packages: simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - sinon@16.1.3: - resolution: {integrity: sha512-mjnWWeyxcAf9nC0bXcPmiDut+oE8HYridTNzBbF98AYVLmWwGRp2ISEpyhYflG1ifILT+eNn3BmKUJPxjXUPlA==} - sinon@18.0.0: resolution: {integrity: sha512-+dXDXzD1sBO6HlmZDd7mXZCR/y5ECiEiGCBSGuFD/kZ0bDTofPYc6JaeGmPSF+1j1MejGUWkORbYOLDyvqCWpA==} @@ -5432,21 +5295,16 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - smartwrap@2.0.2: - resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} - engines: {node: '>=6'} - hasBin: true - - socks-proxy-agent@8.0.2: - resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} + socks-proxy-agent@8.0.4: + resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} engines: {node: '>= 14'} - socks@2.7.3: - resolution: {integrity: sha512-vfuYK48HXCTFD03G/1/zkIls3Ebr2YNa4qU9gHDZdblHLiqhJrJGkY3+0Nx0JpN9qBhJbVObc1CNciT1bIZJxw==} + socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} source-map-loader@4.0.2: @@ -5487,8 +5345,8 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.17: - resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} + spdx-license-ids@3.0.18: + resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} @@ -5527,13 +5385,6 @@ packages: stream-http@3.2.0: resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} - stream-read-all@3.0.1: - resolution: {integrity: sha512-EWZT9XOceBPlVJRrYcykW8jyRSZYbkb/0ZK36uLEmoWVO5gxBOnntNTseNzfREsqxqdfEGQrD8SXQ3QWbBmq8A==} - engines: {node: '>=10'} - - stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} - streamx@2.18.0: resolution: {integrity: sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==} @@ -5545,18 +5396,23 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} - string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} - string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -5573,9 +5429,9 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} @@ -5604,10 +5460,9 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - table-layout@3.0.2: - resolution: {integrity: sha512-rpyNZYRw+/C+dYkcQ3Pr+rLxW4CfHpXjPDnG7lYhdRoUcZTUt+KEsX+94RGp/aVp/MQU35JCITv2T/beY4m+hw==} + table-layout@4.1.1: + resolution: {integrity: sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==} engines: {node: '>=12.17'} - hasBin: true tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} @@ -5616,8 +5471,8 @@ packages: tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - tar-fs@3.0.5: - resolution: {integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==} + tar-fs@3.0.6: + resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==} tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} @@ -5649,8 +5504,8 @@ packages: uglify-js: optional: true - terser@5.31.1: - resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==} + terser@5.31.3: + resolution: {integrity: sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==} engines: {node: '>=10'} hasBin: true @@ -5662,8 +5517,8 @@ packages: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} - text-decoder@1.1.0: - resolution: {integrity: sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==} + text-decoder@1.1.1: + resolution: {integrity: sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==} text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -5696,13 +5551,9 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} - - trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} + tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} @@ -5710,8 +5561,8 @@ packages: peerDependencies: typescript: '>=4.2.0' - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} tsscmp@1.0.6: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} @@ -5720,11 +5571,6 @@ packages: tty-browserify@0.0.1: resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} - tty-table@4.2.3: - resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==} - engines: {node: '>=8.0.0'} - hasBin: true - tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -5740,9 +5586,9 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} @@ -5752,18 +5598,6 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - - type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} - type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -5772,16 +5606,16 @@ packages: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} typed-array-byte-offset@1.0.2: resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} engines: {node: '>= 0.4'} - typed-array-length@1.0.5: - resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} typescript@5.1.6: @@ -5812,8 +5646,8 @@ packages: resolution: {integrity: sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==} engines: {node: '>=12.17'} - uint8-util@2.2.4: - resolution: {integrity: sha512-uEI5lLozmKQPYEevfEhP9LY3Je5ZmrQhaWXrzTVqrLNQl36xsRh8NiAxYwB9J+2BAt99TRbmCkROQB2ZKhx4UA==} + uint8-util@2.2.5: + resolution: {integrity: sha512-/QxVQD7CttWpVUKVPz9znO+3Dd4BdTSnFQ7pv/4drVhC9m4BaL2LFHTkJn6EsYoxT79VDq/2Gg8L0H22PrzyMw==} uint8-varint@2.0.4: resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} @@ -5855,8 +5689,8 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - update-browserslist-db@1.0.16: - resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -5864,8 +5698,9 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - url@0.11.3: - resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} + url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} urlpattern-polyfill@10.0.0: resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} @@ -5895,15 +5730,15 @@ packages: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true - v8-to-istanbul@9.2.0: - resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validate-npm-package-name@5.0.0: - resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} varint@6.0.0: @@ -5920,9 +5755,6 @@ packages: resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} engines: {node: '>=10.13.0'} - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} @@ -5938,8 +5770,8 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - webpack@5.92.0: - resolution: {integrity: sha512-Bsw2X39MYIgxouNATyVpCNVWBCuUwDgWtN78g6lSdPJRLaQ/PUVm/oXcaRAyY/sMFoKFQrsPeqvTizWtq7QPCA==} + webpack@5.93.0: + resolution: {integrity: sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -5948,9 +5780,9 @@ packages: webpack-cli: optional: true - whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} + whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -5958,15 +5790,12 @@ packages: which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - - which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + which-pm@2.2.0: + resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==} engines: {node: '>=8.15'} - which-typed-array@1.1.14: - resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} which@1.3.1: @@ -6012,18 +5841,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@8.18.0: resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} @@ -6043,9 +5860,6 @@ packages: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -6053,13 +5867,6 @@ packages: yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - yargs-parser@20.2.4: resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} engines: {node: '>=10'} @@ -6076,10 +5883,6 @@ packages: resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} engines: {node: '>=10'} - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} @@ -6091,26 +5894,19 @@ packages: yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - ylru@1.3.2: - resolution: {integrity: sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==} + ylru@1.4.0: + resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} engines: {node: '>= 4.0.0'} yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} snapshots: - '@75lb/deep-merge@1.1.2': - dependencies: - lodash: 4.17.21 - typical: 7.1.1 - - '@aashutoshrathi/word-wrap@1.2.6': {} - '@assemblyscript/loader@0.9.4': {} '@astronautlabs/jsonpath@1.1.2': @@ -6123,25 +5919,25 @@ snapshots: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.609.0 - '@aws-sdk/util-locate-window': 3.495.0 + '@aws-sdk/util-locate-window': 3.568.0 '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.609.0 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-crypto/supports-web-crypto@5.2.0': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 '@aws-crypto/util@5.2.0': dependencies: '@aws-sdk/types': 3.609.0 '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-sdk/client-kms@3.616.0': dependencies: @@ -6161,31 +5957,31 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.609.0 '@aws-sdk/util-user-agent-node': 3.614.0 '@smithy/config-resolver': 3.0.5 - '@smithy/core': 2.2.8 - '@smithy/fetch-http-handler': 3.2.2 + '@smithy/core': 2.3.2 + '@smithy/fetch-http-handler': 3.2.4 '@smithy/hash-node': 3.0.3 '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.4 - '@smithy/middleware-endpoint': 3.0.5 - '@smithy/middleware-retry': 3.0.11 + '@smithy/middleware-content-length': 3.0.5 + '@smithy/middleware-endpoint': 3.1.0 + '@smithy/middleware-retry': 3.0.14 '@smithy/middleware-serde': 3.0.3 '@smithy/middleware-stack': 3.0.3 '@smithy/node-config-provider': 3.1.4 - '@smithy/node-http-handler': 3.1.3 - '@smithy/protocol-http': 4.0.4 - '@smithy/smithy-client': 3.1.9 + '@smithy/node-http-handler': 3.1.4 + '@smithy/protocol-http': 4.1.0 + '@smithy/smithy-client': 3.1.12 '@smithy/types': 3.3.0 '@smithy/url-parser': 3.0.3 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.11 - '@smithy/util-defaults-mode-node': 3.0.11 + '@smithy/util-defaults-mode-browser': 3.0.14 + '@smithy/util-defaults-mode-node': 3.0.14 '@smithy/util-endpoints': 2.0.5 '@smithy/util-middleware': 3.0.3 '@smithy/util-retry': 3.0.3 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - aws-crt @@ -6206,31 +6002,31 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.609.0 '@aws-sdk/util-user-agent-node': 3.614.0 '@smithy/config-resolver': 3.0.5 - '@smithy/core': 2.2.8 - '@smithy/fetch-http-handler': 3.2.2 + '@smithy/core': 2.3.2 + '@smithy/fetch-http-handler': 3.2.4 '@smithy/hash-node': 3.0.3 '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.4 - '@smithy/middleware-endpoint': 3.0.5 - '@smithy/middleware-retry': 3.0.11 + '@smithy/middleware-content-length': 3.0.5 + '@smithy/middleware-endpoint': 3.1.0 + '@smithy/middleware-retry': 3.0.14 '@smithy/middleware-serde': 3.0.3 '@smithy/middleware-stack': 3.0.3 '@smithy/node-config-provider': 3.1.4 - '@smithy/node-http-handler': 3.1.3 - '@smithy/protocol-http': 4.0.4 - '@smithy/smithy-client': 3.1.9 + '@smithy/node-http-handler': 3.1.4 + '@smithy/protocol-http': 4.1.0 + '@smithy/smithy-client': 3.1.12 '@smithy/types': 3.3.0 '@smithy/url-parser': 3.0.3 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.11 - '@smithy/util-defaults-mode-node': 3.0.11 + '@smithy/util-defaults-mode-browser': 3.0.14 + '@smithy/util-defaults-mode-node': 3.0.14 '@smithy/util-endpoints': 2.0.5 '@smithy/util-middleware': 3.0.3 '@smithy/util-retry': 3.0.3 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - aws-crt @@ -6249,31 +6045,31 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.609.0 '@aws-sdk/util-user-agent-node': 3.614.0 '@smithy/config-resolver': 3.0.5 - '@smithy/core': 2.2.8 - '@smithy/fetch-http-handler': 3.2.2 + '@smithy/core': 2.3.2 + '@smithy/fetch-http-handler': 3.2.4 '@smithy/hash-node': 3.0.3 '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.4 - '@smithy/middleware-endpoint': 3.0.5 - '@smithy/middleware-retry': 3.0.11 + '@smithy/middleware-content-length': 3.0.5 + '@smithy/middleware-endpoint': 3.1.0 + '@smithy/middleware-retry': 3.0.14 '@smithy/middleware-serde': 3.0.3 '@smithy/middleware-stack': 3.0.3 '@smithy/node-config-provider': 3.1.4 - '@smithy/node-http-handler': 3.1.3 - '@smithy/protocol-http': 4.0.4 - '@smithy/smithy-client': 3.1.9 + '@smithy/node-http-handler': 3.1.4 + '@smithy/protocol-http': 4.1.0 + '@smithy/smithy-client': 3.1.12 '@smithy/types': 3.3.0 '@smithy/url-parser': 3.0.3 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.11 - '@smithy/util-defaults-mode-node': 3.0.11 + '@smithy/util-defaults-mode-browser': 3.0.14 + '@smithy/util-defaults-mode-node': 3.0.14 '@smithy/util-endpoints': 2.0.5 '@smithy/util-middleware': 3.0.3 '@smithy/util-retry': 3.0.3 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - aws-crt @@ -6294,62 +6090,62 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.609.0 '@aws-sdk/util-user-agent-node': 3.614.0 '@smithy/config-resolver': 3.0.5 - '@smithy/core': 2.2.8 - '@smithy/fetch-http-handler': 3.2.2 + '@smithy/core': 2.3.2 + '@smithy/fetch-http-handler': 3.2.4 '@smithy/hash-node': 3.0.3 '@smithy/invalid-dependency': 3.0.3 - '@smithy/middleware-content-length': 3.0.4 - '@smithy/middleware-endpoint': 3.0.5 - '@smithy/middleware-retry': 3.0.11 + '@smithy/middleware-content-length': 3.0.5 + '@smithy/middleware-endpoint': 3.1.0 + '@smithy/middleware-retry': 3.0.14 '@smithy/middleware-serde': 3.0.3 '@smithy/middleware-stack': 3.0.3 '@smithy/node-config-provider': 3.1.4 - '@smithy/node-http-handler': 3.1.3 - '@smithy/protocol-http': 4.0.4 - '@smithy/smithy-client': 3.1.9 + '@smithy/node-http-handler': 3.1.4 + '@smithy/protocol-http': 4.1.0 + '@smithy/smithy-client': 3.1.12 '@smithy/types': 3.3.0 '@smithy/url-parser': 3.0.3 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.11 - '@smithy/util-defaults-mode-node': 3.0.11 + '@smithy/util-defaults-mode-browser': 3.0.14 + '@smithy/util-defaults-mode-node': 3.0.14 '@smithy/util-endpoints': 2.0.5 '@smithy/util-middleware': 3.0.3 '@smithy/util-retry': 3.0.3 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - aws-crt '@aws-sdk/core@3.616.0': dependencies: - '@smithy/core': 2.2.8 - '@smithy/protocol-http': 4.0.4 - '@smithy/signature-v4': 4.0.0 - '@smithy/smithy-client': 3.1.9 + '@smithy/core': 2.3.2 + '@smithy/protocol-http': 4.1.0 + '@smithy/signature-v4': 4.1.0 + '@smithy/smithy-client': 3.1.12 '@smithy/types': 3.3.0 fast-xml-parser: 4.4.1 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-sdk/credential-provider-env@3.609.0': dependencies: '@aws-sdk/types': 3.609.0 '@smithy/property-provider': 3.1.3 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-sdk/credential-provider-http@3.616.0': dependencies: '@aws-sdk/types': 3.609.0 - '@smithy/fetch-http-handler': 3.2.2 - '@smithy/node-http-handler': 3.1.3 + '@smithy/fetch-http-handler': 3.2.4 + '@smithy/node-http-handler': 3.1.4 '@smithy/property-provider': 3.1.3 - '@smithy/protocol-http': 4.0.4 - '@smithy/smithy-client': 3.1.9 + '@smithy/protocol-http': 4.1.0 + '@smithy/smithy-client': 3.1.12 '@smithy/types': 3.3.0 - '@smithy/util-stream': 3.1.1 - tslib: 2.6.2 + '@smithy/util-stream': 3.1.3 + tslib: 2.6.3 '@aws-sdk/credential-provider-ini@3.616.0(@aws-sdk/client-sso-oidc@3.616.0(@aws-sdk/client-sts@3.616.0))(@aws-sdk/client-sts@3.616.0)': dependencies: @@ -6360,11 +6156,11 @@ snapshots: '@aws-sdk/credential-provider-sso': 3.616.0(@aws-sdk/client-sso-oidc@3.616.0(@aws-sdk/client-sts@3.616.0)) '@aws-sdk/credential-provider-web-identity': 3.609.0(@aws-sdk/client-sts@3.616.0) '@aws-sdk/types': 3.609.0 - '@smithy/credential-provider-imds': 3.1.4 + '@smithy/credential-provider-imds': 3.2.0 '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.4 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt @@ -6378,11 +6174,11 @@ snapshots: '@aws-sdk/credential-provider-sso': 3.616.0(@aws-sdk/client-sso-oidc@3.616.0(@aws-sdk/client-sts@3.616.0)) '@aws-sdk/credential-provider-web-identity': 3.609.0(@aws-sdk/client-sts@3.616.0) '@aws-sdk/types': 3.609.0 - '@smithy/credential-provider-imds': 3.1.4 + '@smithy/credential-provider-imds': 3.2.0 '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.4 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - '@aws-sdk/client-sts' @@ -6394,7 +6190,7 @@ snapshots: '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.4 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-sdk/credential-provider-sso@3.616.0(@aws-sdk/client-sso-oidc@3.616.0(@aws-sdk/client-sts@3.616.0))': dependencies: @@ -6404,7 +6200,7 @@ snapshots: '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.4 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt @@ -6415,35 +6211,35 @@ snapshots: '@aws-sdk/types': 3.609.0 '@smithy/property-provider': 3.1.3 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-sdk/middleware-host-header@3.616.0': dependencies: '@aws-sdk/types': 3.609.0 - '@smithy/protocol-http': 4.0.4 + '@smithy/protocol-http': 4.1.0 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-sdk/middleware-logger@3.609.0': dependencies: '@aws-sdk/types': 3.609.0 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-sdk/middleware-recursion-detection@3.616.0': dependencies: '@aws-sdk/types': 3.609.0 - '@smithy/protocol-http': 4.0.4 + '@smithy/protocol-http': 4.1.0 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-sdk/middleware-user-agent@3.616.0': dependencies: '@aws-sdk/types': 3.609.0 '@aws-sdk/util-endpoints': 3.614.0 - '@smithy/protocol-http': 4.0.4 + '@smithy/protocol-http': 4.1.0 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-sdk/region-config-resolver@3.614.0': dependencies: @@ -6452,7 +6248,7 @@ snapshots: '@smithy/types': 3.3.0 '@smithy/util-config-provider': 3.0.0 '@smithy/util-middleware': 3.0.3 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-sdk/token-providers@3.614.0(@aws-sdk/client-sso-oidc@3.616.0(@aws-sdk/client-sts@3.616.0))': dependencies: @@ -6461,61 +6257,62 @@ snapshots: '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.4 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-sdk/types@3.609.0': dependencies: '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-sdk/util-endpoints@3.614.0': dependencies: '@aws-sdk/types': 3.609.0 '@smithy/types': 3.3.0 '@smithy/util-endpoints': 2.0.5 - tslib: 2.6.2 + tslib: 2.6.3 - '@aws-sdk/util-locate-window@3.495.0': + '@aws-sdk/util-locate-window@3.568.0': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 '@aws-sdk/util-user-agent-browser@3.609.0': dependencies: '@aws-sdk/types': 3.609.0 '@smithy/types': 3.3.0 bowser: 2.11.0 - tslib: 2.6.2 + tslib: 2.6.3 '@aws-sdk/util-user-agent-node@3.614.0': dependencies: '@aws-sdk/types': 3.609.0 '@smithy/node-config-provider': 3.1.4 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 - '@babel/code-frame@7.23.5': + '@babel/code-frame@7.24.7': dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 - '@babel/helper-validator-identifier@7.22.20': {} + '@babel/helper-validator-identifier@7.24.7': {} - '@babel/highlight@7.23.4': + '@babel/highlight@7.24.7': dependencies: - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 + picocolors: 1.0.1 - '@babel/runtime@7.24.1': + '@babel/runtime@7.25.0': dependencies: regenerator-runtime: 0.14.1 '@bcoe/v8-coverage@0.2.3': {} - '@changesets/apply-release-plan@7.0.3': + '@changesets/apply-release-plan@7.0.4': dependencies: - '@babel/runtime': 7.24.1 - '@changesets/config': 3.0.1 + '@babel/runtime': 7.25.0 + '@changesets/config': 3.0.2 '@changesets/get-version-range-type': 0.4.0 '@changesets/git': 3.0.0 '@changesets/should-skip-package': 0.1.0 @@ -6527,17 +6324,17 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.6.3 - '@changesets/assemble-release-plan@6.0.2': + '@changesets/assemble-release-plan@6.0.3': dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.25.0 '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.0 + '@changesets/get-dependents-graph': 2.1.1 '@changesets/should-skip-package': 0.1.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - semver: 7.6.0 + semver: 7.6.3 '@changesets/changelog-git@0.2.0': dependencies: @@ -6551,16 +6348,16 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/cli@2.27.5': + '@changesets/cli@2.27.7': dependencies: - '@babel/runtime': 7.24.1 - '@changesets/apply-release-plan': 7.0.3 - '@changesets/assemble-release-plan': 6.0.2 + '@babel/runtime': 7.25.0 + '@changesets/apply-release-plan': 7.0.4 + '@changesets/assemble-release-plan': 6.0.3 '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.1 + '@changesets/config': 3.0.2 '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.0 - '@changesets/get-release-plan': 4.0.2 + '@changesets/get-dependents-graph': 2.1.1 + '@changesets/get-release-plan': 4.0.3 '@changesets/git': 3.0.0 '@changesets/logger': 0.1.0 '@changesets/pre': 2.0.0 @@ -6569,7 +6366,7 @@ snapshots: '@changesets/types': 6.0.0 '@changesets/write': 0.3.1 '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.5.7 + '@types/semver': 7.5.8 ansi-colors: 4.1.3 chalk: 2.4.2 ci-info: 3.9.0 @@ -6577,20 +6374,19 @@ snapshots: external-editor: 3.1.0 fs-extra: 7.0.1 human-id: 1.0.2 - meow: 6.1.1 + mri: 1.2.0 outdent: 0.5.0 p-limit: 2.3.0 - preferred-pm: 3.1.3 + preferred-pm: 3.1.4 resolve-from: 5.0.0 - semver: 7.6.0 + semver: 7.6.3 spawndamnit: 2.0.0 term-size: 2.2.1 - tty-table: 4.2.3 - '@changesets/config@3.0.1': + '@changesets/config@3.0.2': dependencies: '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.0 + '@changesets/get-dependents-graph': 2.1.1 '@changesets/logger': 0.1.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -6601,13 +6397,13 @@ snapshots: dependencies: extendable-error: 0.1.7 - '@changesets/get-dependents-graph@2.1.0': + '@changesets/get-dependents-graph@2.1.1': dependencies: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 - semver: 7.6.0 + semver: 7.6.3 '@changesets/get-github-info@0.6.0': dependencies: @@ -6616,11 +6412,11 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/get-release-plan@4.0.2': + '@changesets/get-release-plan@4.0.3': dependencies: - '@babel/runtime': 7.24.1 - '@changesets/assemble-release-plan': 6.0.2 - '@changesets/config': 3.0.1 + '@babel/runtime': 7.25.0 + '@changesets/assemble-release-plan': 6.0.3 + '@changesets/config': 3.0.2 '@changesets/pre': 2.0.0 '@changesets/read': 0.6.0 '@changesets/types': 6.0.0 @@ -6630,12 +6426,12 @@ snapshots: '@changesets/git@3.0.0': dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.25.0 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 - micromatch: 4.0.5 + micromatch: 4.0.7 spawndamnit: 2.0.0 '@changesets/logger@0.1.0': @@ -6649,7 +6445,7 @@ snapshots: '@changesets/pre@2.0.0': dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.25.0 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -6657,7 +6453,7 @@ snapshots: '@changesets/read@0.6.0': dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.25.0 '@changesets/git': 3.0.0 '@changesets/logger': 0.1.0 '@changesets/parse': 0.4.0 @@ -6668,7 +6464,7 @@ snapshots: '@changesets/should-skip-package@0.1.0': dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.25.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -6678,7 +6474,7 @@ snapshots: '@changesets/write@0.3.1': dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.25.0 '@changesets/types': 6.0.0 fs-extra: 7.0.1 human-id: 1.0.2 @@ -6686,15 +6482,15 @@ snapshots: '@decentralized-identity/ion-sdk@1.0.4': dependencies: - '@noble/ed25519': 2.0.0 - '@noble/secp256k1': 2.0.0 + '@noble/ed25519': 2.1.0 + '@noble/secp256k1': 2.1.0 canonicalize: 2.0.0 multiformats: 12.1.3 uri-js: 4.4.1 '@dnsquery/dns-packet@6.1.1': dependencies: - '@leichtgewicht/ip-codec': 2.0.4 + '@leichtgewicht/ip-codec': 2.0.5 utf8-codec: 1.0.0 '@esbuild/aix-ppc64@0.21.3': @@ -6919,16 +6715,12 @@ snapshots: eslint: 9.7.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.10.0': {} - - '@eslint-community/regexpp@4.10.1': {} - '@eslint-community/regexpp@4.11.0': {} '@eslint/config-array@0.16.0': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -6936,7 +6728,7 @@ snapshots: '@eslint/config-array@0.17.1': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -6944,8 +6736,8 @@ snapshots: '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) - espree: 10.0.1 + debug: 4.3.6(supports-color@8.1.1) + espree: 10.1.0 globals: 14.0.0 ignore: 5.3.1 import-fresh: 3.3.0 @@ -6963,10 +6755,12 @@ snapshots: '@eslint/object-schema@2.1.4': {} + '@hapi/bourne@3.0.0': {} + '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -6984,15 +6778,10 @@ snapshots: '@ipld/dag-cbor@9.0.5': dependencies: - cborg: 4.0.9 + cborg: 4.2.3 multiformats: 12.1.3 - '@ipld/dag-cbor@9.2.0': - dependencies: - cborg: 4.0.9 - multiformats: 13.1.0 - - '@ipld/dag-pb@4.1.0': + '@ipld/dag-pb@4.1.2': dependencies: multiformats: 13.1.0 @@ -7012,7 +6801,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/resolve-uri@3.1.2': {} @@ -7024,35 +6813,30 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.22': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@js-temporal/polyfill@0.4.4': dependencies: jsbi: 4.3.0 - tslib: 2.6.2 + tslib: 2.6.3 - '@leichtgewicht/ip-codec@2.0.4': {} + '@leichtgewicht/ip-codec@2.0.5': {} '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.25.0 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.25.0 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -7080,12 +6864,16 @@ snapshots: '@noble/ed25519@2.0.0': {} + '@noble/ed25519@2.1.0': {} + '@noble/hashes@1.3.3': {} '@noble/hashes@1.4.0': {} '@noble/secp256k1@2.0.0': {} + '@noble/secp256k1@2.1.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -7098,32 +6886,33 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@npmcli/git@5.0.4': + '@npmcli/git@5.0.8': dependencies: - '@npmcli/promise-spawn': 7.0.1 - lru-cache: 10.2.0 - npm-pick-manifest: 9.0.0 - proc-log: 3.0.0 + '@npmcli/promise-spawn': 7.0.2 + ini: 4.1.3 + lru-cache: 10.4.3 + npm-pick-manifest: 9.1.0 + proc-log: 4.2.0 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.6.0 + semver: 7.6.3 which: 4.0.0 transitivePeerDependencies: - bluebird '@npmcli/package-json@5.0.0': dependencies: - '@npmcli/git': 5.0.4 - glob: 10.3.10 - hosted-git-info: 7.0.1 - json-parse-even-better-errors: 3.0.1 - normalize-package-data: 6.0.0 + '@npmcli/git': 5.0.8 + glob: 10.4.5 + hosted-git-info: 7.0.2 + json-parse-even-better-errors: 3.0.2 + normalize-package-data: 6.0.2 proc-log: 3.0.0 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - bluebird - '@npmcli/promise-spawn@7.0.1': + '@npmcli/promise-spawn@7.0.2': dependencies: which: 4.0.0 @@ -7134,83 +6923,92 @@ snapshots: dependencies: playwright: 1.45.3 - '@puppeteer/browsers@2.2.3': + '@puppeteer/browsers@2.3.0': dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.4.0 - semver: 7.6.0 - tar-fs: 3.0.5 + semver: 7.6.3 + tar-fs: 3.0.6 unbzip2-stream: 1.4.3 yargs: 17.7.2 transitivePeerDependencies: - supports-color - '@rollup/plugin-node-resolve@15.2.3(rollup@4.12.0)': + '@rollup/plugin-node-resolve@15.2.3(rollup@4.20.0)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.12.0) + '@rollup/pluginutils': 5.1.0(rollup@4.20.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 optionalDependencies: - rollup: 4.12.0 + rollup: 4.20.0 - '@rollup/pluginutils@5.1.0(rollup@4.12.0)': + '@rollup/pluginutils@5.1.0(rollup@4.20.0)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.12.0 + rollup: 4.20.0 + + '@rollup/rollup-android-arm-eabi@4.20.0': + optional: true + + '@rollup/rollup-android-arm64@4.20.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.20.0': + optional: true - '@rollup/rollup-android-arm-eabi@4.12.0': + '@rollup/rollup-darwin-x64@4.20.0': optional: true - '@rollup/rollup-android-arm64@4.12.0': + '@rollup/rollup-linux-arm-gnueabihf@4.20.0': optional: true - '@rollup/rollup-darwin-arm64@4.12.0': + '@rollup/rollup-linux-arm-musleabihf@4.20.0': optional: true - '@rollup/rollup-darwin-x64@4.12.0': + '@rollup/rollup-linux-arm64-gnu@4.20.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.12.0': + '@rollup/rollup-linux-arm64-musl@4.20.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.12.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.12.0': + '@rollup/rollup-linux-riscv64-gnu@4.20.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.12.0': + '@rollup/rollup-linux-s390x-gnu@4.20.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.12.0': + '@rollup/rollup-linux-x64-gnu@4.20.0': optional: true - '@rollup/rollup-linux-x64-musl@4.12.0': + '@rollup/rollup-linux-x64-musl@4.20.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.12.0': + '@rollup/rollup-win32-arm64-msvc@4.20.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.12.0': + '@rollup/rollup-win32-ia32-msvc@4.20.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.12.0': + '@rollup/rollup-win32-x64-msvc@4.20.0': optional: true - '@scure/base@1.1.5': {} + '@scure/base@1.1.7': {} '@scure/bip39@1.2.2': dependencies: '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@scure/base': 1.1.7 '@sd-jwt/decode@0.6.1': dependencies: @@ -7238,10 +7036,6 @@ snapshots: dependencies: type-detect: 4.0.8 - '@sinonjs/fake-timers@10.3.0': - dependencies: - '@sinonjs/commons': 3.0.1 - '@sinonjs/fake-timers@11.2.2': dependencies: '@sinonjs/commons': 3.0.1 @@ -7250,14 +7044,14 @@ snapshots: dependencies: '@sinonjs/commons': 2.0.0 lodash.get: 4.4.2 - type-detect: 4.0.8 + type-detect: 4.1.0 '@sinonjs/text-encoding@0.7.2': {} '@smithy/abort-controller@3.1.1': dependencies: '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/config-resolver@3.0.5': dependencies: @@ -7265,62 +7059,62 @@ snapshots: '@smithy/types': 3.3.0 '@smithy/util-config-provider': 3.0.0 '@smithy/util-middleware': 3.0.3 - tslib: 2.6.2 + tslib: 2.6.3 - '@smithy/core@2.2.8': + '@smithy/core@2.3.2': dependencies: - '@smithy/middleware-endpoint': 3.0.5 - '@smithy/middleware-retry': 3.0.11 + '@smithy/middleware-endpoint': 3.1.0 + '@smithy/middleware-retry': 3.0.14 '@smithy/middleware-serde': 3.0.3 - '@smithy/protocol-http': 4.0.4 - '@smithy/smithy-client': 3.1.9 + '@smithy/protocol-http': 4.1.0 + '@smithy/smithy-client': 3.1.12 '@smithy/types': 3.3.0 '@smithy/util-middleware': 3.0.3 - tslib: 2.6.2 + tslib: 2.6.3 - '@smithy/credential-provider-imds@3.1.4': + '@smithy/credential-provider-imds@3.2.0': dependencies: '@smithy/node-config-provider': 3.1.4 '@smithy/property-provider': 3.1.3 '@smithy/types': 3.3.0 '@smithy/url-parser': 3.0.3 - tslib: 2.6.2 + tslib: 2.6.3 - '@smithy/fetch-http-handler@3.2.2': + '@smithy/fetch-http-handler@3.2.4': dependencies: - '@smithy/protocol-http': 4.0.4 + '@smithy/protocol-http': 4.1.0 '@smithy/querystring-builder': 3.0.3 '@smithy/types': 3.3.0 '@smithy/util-base64': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/hash-node@3.0.3': dependencies: '@smithy/types': 3.3.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/invalid-dependency@3.0.3': dependencies: '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/is-array-buffer@2.2.0': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/is-array-buffer@3.0.0': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 - '@smithy/middleware-content-length@3.0.4': + '@smithy/middleware-content-length@3.0.5': dependencies: - '@smithy/protocol-http': 4.0.4 + '@smithy/protocol-http': 4.1.0 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 - '@smithy/middleware-endpoint@3.0.5': + '@smithy/middleware-endpoint@3.1.0': dependencies: '@smithy/middleware-serde': 3.0.3 '@smithy/node-config-provider': 3.1.4 @@ -7328,65 +7122,65 @@ snapshots: '@smithy/types': 3.3.0 '@smithy/url-parser': 3.0.3 '@smithy/util-middleware': 3.0.3 - tslib: 2.6.2 + tslib: 2.6.3 - '@smithy/middleware-retry@3.0.11': + '@smithy/middleware-retry@3.0.14': dependencies: '@smithy/node-config-provider': 3.1.4 - '@smithy/protocol-http': 4.0.4 + '@smithy/protocol-http': 4.1.0 '@smithy/service-error-classification': 3.0.3 - '@smithy/smithy-client': 3.1.9 + '@smithy/smithy-client': 3.1.12 '@smithy/types': 3.3.0 '@smithy/util-middleware': 3.0.3 '@smithy/util-retry': 3.0.3 - tslib: 2.6.2 + tslib: 2.6.3 uuid: 9.0.1 '@smithy/middleware-serde@3.0.3': dependencies: '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/middleware-stack@3.0.3': dependencies: '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/node-config-provider@3.1.4': dependencies: '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.4 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 - '@smithy/node-http-handler@3.1.3': + '@smithy/node-http-handler@3.1.4': dependencies: '@smithy/abort-controller': 3.1.1 - '@smithy/protocol-http': 4.0.4 + '@smithy/protocol-http': 4.1.0 '@smithy/querystring-builder': 3.0.3 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/property-provider@3.1.3': dependencies: '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 - '@smithy/protocol-http@4.0.4': + '@smithy/protocol-http@4.1.0': dependencies: '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/querystring-builder@3.0.3': dependencies: '@smithy/types': 3.3.0 '@smithy/util-uri-escape': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/querystring-parser@3.0.3': dependencies: '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/service-error-classification@3.0.3': dependencies: @@ -7395,128 +7189,129 @@ snapshots: '@smithy/shared-ini-file-loader@3.1.4': dependencies: '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 - '@smithy/signature-v4@4.0.0': + '@smithy/signature-v4@4.1.0': dependencies: '@smithy/is-array-buffer': 3.0.0 + '@smithy/protocol-http': 4.1.0 '@smithy/types': 3.3.0 '@smithy/util-hex-encoding': 3.0.0 '@smithy/util-middleware': 3.0.3 '@smithy/util-uri-escape': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 - '@smithy/smithy-client@3.1.9': + '@smithy/smithy-client@3.1.12': dependencies: - '@smithy/middleware-endpoint': 3.0.5 + '@smithy/middleware-endpoint': 3.1.0 '@smithy/middleware-stack': 3.0.3 - '@smithy/protocol-http': 4.0.4 + '@smithy/protocol-http': 4.1.0 '@smithy/types': 3.3.0 - '@smithy/util-stream': 3.1.1 - tslib: 2.6.2 + '@smithy/util-stream': 3.1.3 + tslib: 2.6.3 '@smithy/types@3.3.0': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/url-parser@3.0.3': dependencies: '@smithy/querystring-parser': 3.0.3 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/util-base64@3.0.0': dependencies: '@smithy/util-buffer-from': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/util-body-length-browser@3.0.0': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/util-body-length-node@3.0.0': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/util-buffer-from@2.2.0': dependencies: '@smithy/is-array-buffer': 2.2.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/util-buffer-from@3.0.0': dependencies: '@smithy/is-array-buffer': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/util-config-provider@3.0.0': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 - '@smithy/util-defaults-mode-browser@3.0.11': + '@smithy/util-defaults-mode-browser@3.0.14': dependencies: '@smithy/property-provider': 3.1.3 - '@smithy/smithy-client': 3.1.9 + '@smithy/smithy-client': 3.1.12 '@smithy/types': 3.3.0 bowser: 2.11.0 - tslib: 2.6.2 + tslib: 2.6.3 - '@smithy/util-defaults-mode-node@3.0.11': + '@smithy/util-defaults-mode-node@3.0.14': dependencies: '@smithy/config-resolver': 3.0.5 - '@smithy/credential-provider-imds': 3.1.4 + '@smithy/credential-provider-imds': 3.2.0 '@smithy/node-config-provider': 3.1.4 '@smithy/property-provider': 3.1.3 - '@smithy/smithy-client': 3.1.9 + '@smithy/smithy-client': 3.1.12 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/util-endpoints@2.0.5': dependencies: '@smithy/node-config-provider': 3.1.4 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/util-hex-encoding@3.0.0': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/util-middleware@3.0.3': dependencies: '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/util-retry@3.0.3': dependencies: '@smithy/service-error-classification': 3.0.3 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 - '@smithy/util-stream@3.1.1': + '@smithy/util-stream@3.1.3': dependencies: - '@smithy/fetch-http-handler': 3.2.2 - '@smithy/node-http-handler': 3.1.3 + '@smithy/fetch-http-handler': 3.2.4 + '@smithy/node-http-handler': 3.1.4 '@smithy/types': 3.3.0 '@smithy/util-base64': 3.0.0 '@smithy/util-buffer-from': 3.0.0 '@smithy/util-hex-encoding': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/util-uri-escape@3.0.0': dependencies: - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/util-utf8@2.3.0': dependencies: '@smithy/util-buffer-from': 2.2.0 - tslib: 2.6.2 + tslib: 2.6.3 '@smithy/util-utf8@3.0.0': dependencies: '@smithy/util-buffer-from': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 '@sphereon/pex-models@2.2.4': {} @@ -7528,11 +7323,11 @@ snapshots: '@sd-jwt/types': 0.6.1 '@sphereon/pex-models': 2.2.4 '@sphereon/ssi-types': 0.22.0 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) jwt-decode: 3.1.2 nanoid: 3.3.7 - string.prototype.matchall: 4.0.10 + string.prototype.matchall: 4.0.11 uint8arrays: 3.1.1 '@sphereon/ssi-types@0.22.0': @@ -7543,7 +7338,7 @@ snapshots: '@sphereon/ssi-types@0.26.0': dependencies: '@sd-jwt/decode': 0.6.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) events: 3.3.0 jwt-decode: 3.1.2 transitivePeerDependencies: @@ -7597,18 +7392,18 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 20.14.11 + '@types/node': 20.14.8 '@types/babel__code-frame@7.0.6': {} '@types/bencode@2.0.4': dependencies: - '@types/node': 20.14.11 + '@types/node': 20.14.8 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.14.11 + '@types/node': 20.14.8 '@types/chai-as-promised@7.1.5': dependencies: @@ -7624,14 +7419,14 @@ snapshots: '@types/co-body@6.1.3': dependencies: - '@types/node': 20.14.11 - '@types/qs': 6.9.11 + '@types/node': 20.14.8 + '@types/qs': 6.9.15 '@types/command-line-args@5.2.3': {} '@types/connect@3.4.38': dependencies: - '@types/node': 20.14.11 + '@types/node': 20.14.8 '@types/content-disposition@0.5.8': {} @@ -7642,13 +7437,13 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 20.14.11 + '@types/node': 20.14.8 '@types/debounce@1.2.4': {} '@types/dns-packet@5.6.4': dependencies: - '@types/node': 20.11.19 + '@types/node': 20.14.8 '@types/eslint-scope@3.7.7': dependencies: @@ -7667,19 +7462,19 @@ snapshots: '@types/estree@1.0.5': {} - '@types/express-serve-static-core@4.17.43': + '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 20.14.11 - '@types/qs': 6.9.11 + '@types/node': 20.14.8 + '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 '@types/express@4.17.21': dependencies: '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.17.43 - '@types/qs': 6.9.11 - '@types/serve-static': 1.15.5 + '@types/express-serve-static-core': 4.19.5 + '@types/qs': 6.9.15 + '@types/serve-static': 1.15.7 '@types/http-assert@1.5.5': {} @@ -7701,9 +7496,9 @@ snapshots: '@types/koa-compose@3.2.8': dependencies: - '@types/koa': 2.14.0 + '@types/koa': 2.15.0 - '@types/koa@2.14.0': + '@types/koa@2.15.0': dependencies: '@types/accepts': 1.3.7 '@types/content-disposition': 0.5.8 @@ -7712,14 +7507,10 @@ snapshots: '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 20.14.11 + '@types/node': 20.14.8 '@types/mime@1.3.5': {} - '@types/mime@3.0.4': {} - - '@types/minimist@1.2.5': {} - '@types/mocha@10.0.1': {} '@types/mocha@10.0.6': {} @@ -7732,33 +7523,15 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@20.11.19': - dependencies: - undici-types: 5.26.5 - - '@types/node@20.12.11': - dependencies: - undici-types: 5.26.5 - - '@types/node@20.12.12': - dependencies: - undici-types: 5.26.5 - - '@types/node@20.14.11': - dependencies: - undici-types: 5.26.5 - '@types/node@20.14.8': dependencies: undici-types: 5.26.5 - '@types/normalize-package-data@2.4.4': {} - '@types/pako@2.0.3': {} '@types/parse5@6.0.3': {} - '@types/qs@6.9.11': {} + '@types/qs@6.9.15': {} '@types/range-parser@1.2.7': {} @@ -7769,22 +7542,18 @@ snapshots: '@types/resolve@1.20.2': {} - '@types/semver@7.5.7': {} + '@types/semver@7.5.8': {} '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.14.11 + '@types/node': 20.14.8 - '@types/serve-static@1.15.5': + '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/mime': 3.0.4 - '@types/node': 20.14.11 - - '@types/sinon@17.0.2': - dependencies: - '@types/sinonjs__fake-timers': 8.1.5 + '@types/node': 20.14.8 + '@types/send': 0.17.4 '@types/sinon@17.0.3': dependencies: @@ -7794,16 +7563,16 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 20.14.11 + '@types/node': 20.14.8 '@types/yauzl@2.10.3': dependencies: - '@types/node': 20.14.11 + '@types/node': 20.14.8 optional: true '@typescript-eslint/eslint-plugin@7.10.0(@typescript-eslint/parser@7.14.1(eslint@9.3.0)(typescript@5.4.5))(eslint@9.3.0)(typescript@5.4.5)': dependencies: - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.11.0 '@typescript-eslint/parser': 7.14.1(eslint@9.3.0)(typescript@5.4.5) '@typescript-eslint/scope-manager': 7.10.0 '@typescript-eslint/type-utils': 7.10.0(eslint@9.3.0)(typescript@5.4.5) @@ -7821,7 +7590,7 @@ snapshots: '@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.5.0)(typescript@5.4.5))(eslint@9.5.0)(typescript@5.4.5)': dependencies: - '@eslint-community/regexpp': 4.10.1 + '@eslint-community/regexpp': 4.11.0 '@typescript-eslint/parser': 7.14.1(eslint@9.5.0)(typescript@5.4.5) '@typescript-eslint/scope-manager': 7.14.1 '@typescript-eslint/type-utils': 7.14.1(eslint@9.5.0)(typescript@5.4.5) @@ -7839,7 +7608,7 @@ snapshots: '@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.7.0)(typescript@5.4.5))(eslint@9.7.0)(typescript@5.4.5)': dependencies: - '@eslint-community/regexpp': 4.10.1 + '@eslint-community/regexpp': 4.11.0 '@typescript-eslint/parser': 7.14.1(eslint@9.7.0)(typescript@5.4.5) '@typescript-eslint/scope-manager': 7.14.1 '@typescript-eslint/type-utils': 7.14.1(eslint@9.7.0)(typescript@5.4.5) @@ -7857,7 +7626,7 @@ snapshots: '@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3)': dependencies: - '@eslint-community/regexpp': 4.10.1 + '@eslint-community/regexpp': 4.11.0 '@typescript-eslint/parser': 7.14.1(eslint@9.7.0)(typescript@5.5.3) '@typescript-eslint/scope-manager': 7.14.1 '@typescript-eslint/type-utils': 7.14.1(eslint@9.7.0)(typescript@5.5.3) @@ -7875,7 +7644,7 @@ snapshots: '@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.14.1(eslint@9.3.0)(typescript@5.1.6))(eslint@9.3.0)(typescript@5.1.6)': dependencies: - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.11.0 '@typescript-eslint/parser': 7.14.1(eslint@9.3.0)(typescript@5.1.6) '@typescript-eslint/scope-manager': 7.9.0 '@typescript-eslint/type-utils': 7.9.0(eslint@9.3.0)(typescript@5.1.6) @@ -7893,7 +7662,7 @@ snapshots: '@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.14.1(eslint@9.5.0)(typescript@5.5.4))(eslint@9.5.0)(typescript@5.5.4)': dependencies: - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.11.0 '@typescript-eslint/parser': 7.14.1(eslint@9.5.0)(typescript@5.5.4) '@typescript-eslint/scope-manager': 7.9.0 '@typescript-eslint/type-utils': 7.9.0(eslint@9.5.0)(typescript@5.5.4) @@ -7911,7 +7680,7 @@ snapshots: '@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.14.1(eslint@9.7.0)(typescript@5.5.4))(eslint@9.7.0)(typescript@5.5.4)': dependencies: - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.11.0 '@typescript-eslint/parser': 7.14.1(eslint@9.7.0)(typescript@5.5.4) '@typescript-eslint/scope-manager': 7.9.0 '@typescript-eslint/type-utils': 7.9.0(eslint@9.7.0)(typescript@5.5.4) @@ -7933,7 +7702,7 @@ snapshots: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.1.6) '@typescript-eslint/visitor-keys': 7.14.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 9.3.0 optionalDependencies: typescript: 5.1.6 @@ -7946,7 +7715,7 @@ snapshots: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.14.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 9.3.0 optionalDependencies: typescript: 5.4.5 @@ -7959,7 +7728,7 @@ snapshots: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.14.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 9.5.0 optionalDependencies: typescript: 5.4.5 @@ -7972,7 +7741,7 @@ snapshots: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.4) '@typescript-eslint/visitor-keys': 7.14.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 9.5.0 optionalDependencies: typescript: 5.5.4 @@ -7985,7 +7754,7 @@ snapshots: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.14.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 9.7.0 optionalDependencies: typescript: 5.4.5 @@ -7998,7 +7767,7 @@ snapshots: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.3) '@typescript-eslint/visitor-keys': 7.14.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 9.7.0 optionalDependencies: typescript: 5.5.3 @@ -8011,7 +7780,7 @@ snapshots: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.4) '@typescript-eslint/visitor-keys': 7.14.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 9.7.0 optionalDependencies: typescript: 5.5.4 @@ -8037,7 +7806,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.10.0(typescript@5.4.5) '@typescript-eslint/utils': 7.10.0(eslint@9.3.0)(typescript@5.4.5) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 9.3.0 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: @@ -8049,7 +7818,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.4.5) '@typescript-eslint/utils': 7.14.1(eslint@9.5.0)(typescript@5.4.5) - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 9.5.0 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: @@ -8061,7 +7830,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.4.5) '@typescript-eslint/utils': 7.14.1(eslint@9.7.0)(typescript@5.4.5) - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 9.7.0 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: @@ -8073,7 +7842,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.3) '@typescript-eslint/utils': 7.14.1(eslint@9.7.0)(typescript@5.5.3) - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 9.7.0 ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: @@ -8085,7 +7854,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.1.6) '@typescript-eslint/utils': 7.9.0(eslint@9.3.0)(typescript@5.1.6) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 9.3.0 ts-api-utils: 1.3.0(typescript@5.1.6) optionalDependencies: @@ -8097,7 +7866,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.5.4) '@typescript-eslint/utils': 7.9.0(eslint@9.5.0)(typescript@5.5.4) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 9.5.0 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -8109,7 +7878,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.5.4) '@typescript-eslint/utils': 7.9.0(eslint@9.7.0)(typescript@5.5.4) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) eslint: 9.7.0 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: @@ -8127,11 +7896,11 @@ snapshots: dependencies: '@typescript-eslint/types': 7.10.0 '@typescript-eslint/visitor-keys': 7.10.0 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 + minimatch: 9.0.5 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -8142,11 +7911,11 @@ snapshots: dependencies: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/visitor-keys': 7.14.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.2 + minimatch: 9.0.5 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.1.6) optionalDependencies: typescript: 5.1.6 @@ -8157,11 +7926,11 @@ snapshots: dependencies: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/visitor-keys': 7.14.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.2 + minimatch: 9.0.5 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 @@ -8172,11 +7941,11 @@ snapshots: dependencies: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/visitor-keys': 7.14.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.2 + minimatch: 9.0.5 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: typescript: 5.5.3 @@ -8187,11 +7956,11 @@ snapshots: dependencies: '@typescript-eslint/types': 7.14.1 '@typescript-eslint/visitor-keys': 7.14.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.2 + minimatch: 9.0.5 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 @@ -8202,11 +7971,11 @@ snapshots: dependencies: '@typescript-eslint/types': 7.9.0 '@typescript-eslint/visitor-keys': 7.9.0 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 + minimatch: 9.0.5 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.1.6) optionalDependencies: typescript: 5.1.6 @@ -8217,11 +7986,11 @@ snapshots: dependencies: '@typescript-eslint/types': 7.9.0 '@typescript-eslint/visitor-keys': 7.9.0 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 + minimatch: 9.0.5 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 @@ -8326,18 +8095,18 @@ snapshots: '@web/config-loader@0.3.1': {} - '@web/dev-server-core@0.7.1': + '@web/dev-server-core@0.7.2': dependencies: - '@types/koa': 2.14.0 + '@types/koa': 2.15.0 '@types/ws': 7.4.7 '@web/parse5-utils': 2.1.0 chokidar: 3.6.0 clone: 2.1.2 - es-module-lexer: 1.4.1 + es-module-lexer: 1.5.4 get-stream: 6.0.1 is-stream: 2.0.1 isbinaryfile: 5.0.2 - koa: 2.15.0 + koa: 2.15.3 koa-etag: 4.0.0 koa-send: 5.0.1 koa-static: 5.0.0 @@ -8345,38 +8114,38 @@ snapshots: mime-types: 2.1.35 parse5: 6.0.1 picomatch: 2.3.1 - ws: 8.17.1 + ws: 8.18.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@web/dev-server-rollup@0.6.1': + '@web/dev-server-rollup@0.6.4': dependencies: - '@rollup/plugin-node-resolve': 15.2.3(rollup@4.12.0) - '@web/dev-server-core': 0.7.1 + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.20.0) + '@web/dev-server-core': 0.7.2 nanocolors: 0.2.13 parse5: 6.0.1 - rollup: 4.12.0 - whatwg-url: 11.0.0 + rollup: 4.20.0 + whatwg-url: 14.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@web/dev-server@0.4.3': + '@web/dev-server@0.4.6': dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.7 '@types/command-line-args': 5.2.3 '@web/config-loader': 0.3.1 - '@web/dev-server-core': 0.7.1 - '@web/dev-server-rollup': 0.6.1 + '@web/dev-server-core': 0.7.2 + '@web/dev-server-rollup': 0.6.4 camelcase: 6.3.0 command-line-args: 5.2.1 - command-line-usage: 7.0.1 + command-line-usage: 7.0.3 debounce: 1.2.1 deepmerge: 4.3.1 - ip: 2.0.1 + internal-ip: 6.2.0 nanocolors: 0.2.13 open: 8.4.2 portfinder: 1.0.32 @@ -8392,11 +8161,11 @@ snapshots: '@web/test-runner-chrome@0.16.0': dependencies: - '@web/test-runner-core': 0.13.1 + '@web/test-runner-core': 0.13.3 '@web/test-runner-coverage-v8': 0.8.0 async-mutex: 0.4.0 chrome-launcher: 0.15.2 - puppeteer-core: 22.9.0 + puppeteer-core: 22.15.0 transitivePeerDependencies: - bufferutil - supports-color @@ -8404,16 +8173,16 @@ snapshots: '@web/test-runner-commands@0.9.0': dependencies: - '@web/test-runner-core': 0.13.1 + '@web/test-runner-core': 0.13.3 mkdirp: 1.0.4 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@web/test-runner-core@0.13.1': + '@web/test-runner-core@0.13.3': dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.7 '@types/babel__code-frame': 7.0.6 '@types/co-body': 6.1.3 '@types/convert-source-map': 2.0.3 @@ -8421,15 +8190,15 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@web/browser-logs': 0.4.0 - '@web/dev-server-core': 0.7.1 + '@web/dev-server-core': 0.7.2 chokidar: 3.6.0 cli-cursor: 3.1.0 - co-body: 6.1.0 + co-body: 6.2.0 convert-source-map: 2.0.0 debounce: 1.2.1 dependency-graph: 0.11.0 globby: 11.1.0 - ip: 2.0.1 + internal-ip: 6.2.0 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-reports: 3.1.7 @@ -8446,11 +8215,11 @@ snapshots: '@web/test-runner-coverage-v8@0.8.0': dependencies: - '@web/test-runner-core': 0.13.1 + '@web/test-runner-core': 0.13.3 istanbul-lib-coverage: 3.2.2 lru-cache: 8.0.5 picomatch: 2.3.1 - v8-to-istanbul: 9.2.0 + v8-to-istanbul: 9.3.0 transitivePeerDependencies: - bufferutil - supports-color @@ -8458,7 +8227,7 @@ snapshots: '@web/test-runner-mocha@0.9.0': dependencies: - '@web/test-runner-core': 0.13.1 + '@web/test-runner-core': 0.13.3 transitivePeerDependencies: - bufferutil - supports-color @@ -8466,7 +8235,7 @@ snapshots: '@web/test-runner-playwright@0.11.0': dependencies: - '@web/test-runner-core': 0.13.1 + '@web/test-runner-core': 0.13.3 '@web/test-runner-coverage-v8': 0.8.0 playwright: 1.45.3 transitivePeerDependencies: @@ -8478,14 +8247,14 @@ snapshots: dependencies: '@web/browser-logs': 0.4.0 '@web/config-loader': 0.3.1 - '@web/dev-server': 0.4.3 + '@web/dev-server': 0.4.6 '@web/test-runner-chrome': 0.16.0 '@web/test-runner-commands': 0.9.0 - '@web/test-runner-core': 0.13.1 + '@web/test-runner-core': 0.13.3 '@web/test-runner-mocha': 0.9.0 camelcase: 6.3.0 command-line-args: 5.2.1 - command-line-usage: 7.0.1 + command-line-usage: 7.0.3 convert-source-map: 2.0.0 diff: 5.2.0 globby: 11.1.0 @@ -8518,13 +8287,6 @@ snapshots: '@noble/hashes': 1.3.3 '@web5/common': 1.0.0 - '@web5/crypto@1.0.1': - dependencies: - '@noble/ciphers': 0.4.1 - '@noble/curves': 1.3.0 - '@noble/hashes': 1.4.0 - '@web5/common': 1.0.0 - '@web5/dids@1.1.0': dependencies: '@decentralized-identity/ion-sdk': 1.0.4 @@ -8549,7 +8311,7 @@ snapshots: level: 8.0.1 ms: 2.1.3 - '@web5/dwn-server@0.4.3': + '@web5/dwn-server@0.4.4': dependencies: '@tbd54566975/dwn-sdk-js': 0.4.4 '@tbd54566975/dwn-sql-store': 0.6.4 @@ -8562,10 +8324,10 @@ snapshots: loglevel: 1.9.1 loglevel-plugin-prefix: 0.8.4 multiformats: 11.0.2 - mysql2: 3.10.0 + mysql2: 3.11.0 node-fetch: 3.3.1 - pg: 8.11.5 - pg-cursor: 2.10.5(pg@8.11.5) + pg: 8.12.0 + pg-cursor: 2.11.0(pg@8.12.0) prom-client: 14.2.0 readable-stream: 4.4.2 response-time: 2.3.2 @@ -8691,27 +8453,21 @@ snapshots: dependencies: acorn: 8.12.1 - acorn-jsx@5.3.2(acorn@8.11.3): - dependencies: - acorn: 8.11.3 - acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 - acorn@8.11.3: {} - acorn@8.12.1: {} - agent-base@7.1.0: + agent-base@7.1.1: dependencies: - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color - ajv-formats@2.1.1(ajv@8.12.0): + ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: - ajv: 8.12.0 + ajv: 8.17.1 ajv-keywords@3.5.2(ajv@6.12.6): dependencies: @@ -8731,6 +8487,13 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.1 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + ansi-colors@4.1.1: {} ansi-colors@4.1.3: {} @@ -8739,9 +8502,7 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@6.2.0: - dependencies: - type-fest: 3.13.1 + ansi-escapes@6.2.1: {} ansi-regex@5.0.1: {} @@ -8781,38 +8542,28 @@ snapshots: array-union@2.1.0: {} - array.prototype.flat@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.4 - es-shim-unscopables: 1.0.2 - arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.3 es-errors: 1.3.0 get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.2 - - arrify@1.0.1: {} + is-shared-array-buffer: 1.0.3 - asn1.js@5.4.1: + asn1.js@4.10.1: dependencies: bn.js: 4.12.0 inherits: 2.0.4 minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 assert@2.1.0: dependencies: call-bind: 1.0.7 is-nan: 1.3.2 - object-is: 1.1.5 + object-is: 1.1.6 object.assign: 4.1.5 util: 0.12.5 @@ -8822,19 +8573,19 @@ snapshots: ast-types@0.13.4: dependencies: - tslib: 2.6.2 + tslib: 2.6.3 astral-regex@2.0.0: {} async-mutex@0.4.0: dependencies: - tslib: 2.6.2 + tslib: 2.6.3 async@2.6.4: dependencies: lodash: 4.17.21 - audit-ci@7.0.1: + audit-ci@7.1.0: dependencies: cross-spawn: 7.0.3 escape-string-regexp: 4.0.0 @@ -8842,40 +8593,39 @@ snapshots: jju: 1.4.0 jsonstream-next: 3.0.0 readline-transform: 1.0.0 - semver: 7.6.2 - tslib: 2.6.2 + semver: 7.6.3 + tslib: 2.6.3 yargs: 17.7.2 available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 + aws-ssl-profiles@1.1.1: {} + b4a@1.6.6: {} balanced-match@1.0.2: {} - bare-events@2.2.0: - optional: true - - bare-events@2.3.1: + bare-events@2.4.2: optional: true bare-fs@2.3.1: dependencies: - bare-events: 2.2.0 + bare-events: 2.4.2 bare-path: 2.1.3 - bare-stream: 2.1.2 + bare-stream: 2.1.3 optional: true - bare-os@2.3.0: + bare-os@2.4.0: optional: true bare-path@2.1.3: dependencies: - bare-os: 2.3.0 + bare-os: 2.4.0 optional: true - bare-stream@2.1.2: + bare-stream@2.1.3: dependencies: streamx: 2.18.0 optional: true @@ -8884,11 +8634,11 @@ snapshots: base64-js@1.5.1: {} - basic-ftp@5.0.4: {} + basic-ftp@5.0.5: {} bencode@4.0.0: dependencies: - uint8-util: 2.2.4 + uint8-util: 2.2.5 better-path-resolve@1.0.0: dependencies: @@ -8899,7 +8649,7 @@ snapshots: bindings: 1.5.0 prebuild-install: 7.1.2 - binary-extensions@2.2.0: {} + binary-extensions@2.3.0: {} bindings@1.5.0: dependencies: @@ -8962,10 +8712,6 @@ snapshots: dependencies: fill-range: 7.1.1 - breakword@1.0.6: - dependencies: - wcwidth: 1.0.1 - brorand@1.1.0: {} browser-level@1.0.1: @@ -9008,28 +8754,29 @@ snapshots: bn.js: 5.2.1 randombytes: 2.1.0 - browserify-sign@4.2.2: + browserify-sign@4.2.3: dependencies: bn.js: 5.2.1 browserify-rsa: 4.1.0 create-hash: 1.2.0 create-hmac: 1.1.7 - elliptic: 6.5.4 + elliptic: 6.5.6 + hash-base: 3.0.4 inherits: 2.0.4 - parse-asn1: 5.1.6 - readable-stream: 3.6.2 + parse-asn1: 5.1.7 + readable-stream: 2.3.8 safe-buffer: 5.2.1 browserify-zlib@0.2.0: dependencies: pako: 1.0.11 - browserslist@4.23.1: + browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001632 - electron-to-chromium: 1.4.798 - node-releases: 2.0.14 - update-browserslist-db: 1.0.16(browserslist@4.23.1) + caniuse-lite: 1.0.30001647 + electron-to-chromium: 1.5.4 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) buffer-crc32@0.2.13: {} @@ -9051,10 +8798,6 @@ snapshots: builtin-status-codes@3.0.0: {} - builtins@5.0.1: - dependencies: - semver: 7.6.2 - bytes@3.1.2: {} c8@10.1.2: @@ -9062,12 +8805,12 @@ snapshots: '@bcoe/v8-coverage': 0.2.3 '@istanbuljs/schema': 0.1.3 find-up: 5.0.0 - foreground-child: 3.1.1 + foreground-child: 3.2.1 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-reports: 3.1.7 test-exclude: 7.0.1 - v8-to-istanbul: 9.2.0 + v8-to-istanbul: 9.3.0 yargs: 17.7.2 yargs-parser: 21.1.1 @@ -9076,19 +8819,19 @@ snapshots: '@bcoe/v8-coverage': 0.2.3 '@istanbuljs/schema': 0.1.3 find-up: 5.0.0 - foreground-child: 3.1.1 + foreground-child: 3.2.1 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-reports: 3.1.7 test-exclude: 6.0.0 - v8-to-istanbul: 9.2.0 + v8-to-istanbul: 9.3.0 yargs: 17.7.2 yargs-parser: 21.1.1 cache-content-type@1.0.1: dependencies: mime-types: 2.1.35 - ylru: 1.3.2 + ylru: 1.4.0 call-bind@1.0.7: dependencies: @@ -9096,21 +8839,13 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 get-intrinsic: 1.2.4 - set-function-length: 1.2.1 + set-function-length: 1.2.2 callsites@3.1.0: {} - camelcase-keys@6.2.2: - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - - camelcase@5.3.1: {} - camelcase@6.3.0: {} - caniuse-lite@1.0.30001632: {} + caniuse-lite@1.0.30001647: {} canonicalize@2.0.0: {} @@ -9118,7 +8853,7 @@ snapshots: cborg@2.0.5: {} - cborg@4.0.9: {} + cborg@4.2.3: {} chai-as-promised@7.1.1(chai@4.3.10): dependencies: @@ -9139,17 +8874,17 @@ snapshots: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 - deep-eql: 4.1.3 + deep-eql: 4.1.4 get-func-name: 2.0.2 loupe: 2.3.7 pathval: 1.1.1 - type-detect: 4.0.8 + type-detect: 4.1.0 chai@5.1.1: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 - deep-eql: 5.0.1 + deep-eql: 5.0.2 loupe: 3.1.1 pathval: 2.0.0 @@ -9206,7 +8941,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 20.14.11 + '@types/node': 20.14.8 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -9215,12 +8950,12 @@ snapshots: chrome-trace-event@1.0.4: {} - chromium-bidi@0.5.19(devtools-protocol@0.0.1286932): + chromium-bidi@0.6.3(devtools-protocol@0.0.1312386): dependencies: - devtools-protocol: 0.0.1286932 + devtools-protocol: 0.0.1312386 mitt: 3.0.1 urlpattern-polyfill: 10.0.0 - zod: 3.22.4 + zod: 3.23.8 ci-info@3.9.0: {} @@ -9235,18 +8970,12 @@ snapshots: catering: 2.1.1 module-error: 1.0.2 napi-macros: 2.2.2 - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 - cliui@6.0.0: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - cliui@7.0.4: dependencies: string-width: 4.2.3 @@ -9259,14 +8988,13 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - clone@1.0.4: {} - clone@2.1.2: {} - co-body@6.1.0: + co-body@6.2.0: dependencies: + '@hapi/bourne': 3.0.0 inflation: 2.1.0 - qs: 6.11.2 + qs: 6.13.0 raw-body: 2.5.2 type-is: 1.6.18 @@ -9293,11 +9021,11 @@ snapshots: lodash.camelcase: 4.3.0 typical: 4.0.0 - command-line-usage@7.0.1: + command-line-usage@7.0.3: dependencies: array-back: 6.2.2 chalk-template: 0.4.0 - table-layout: 3.0.2 + table-layout: 4.1.1 typical: 7.1.1 commander@2.20.3: {} @@ -9325,6 +9053,8 @@ snapshots: depd: 2.0.0 keygrip: 1.1.0 + core-util-is@1.0.3: {} + cors@2.8.5: dependencies: object-assign: 4.1.1 @@ -9333,7 +9063,7 @@ snapshots: create-ecdh@4.0.4: dependencies: bn.js: 4.12.0 - elliptic: 6.5.4 + elliptic: 6.5.6 create-hash@1.2.0: dependencies: @@ -9377,7 +9107,7 @@ snapshots: crypto-browserify@3.12.0: dependencies: browserify-cipher: 1.0.1 - browserify-sign: 4.2.2 + browserify-sign: 4.2.3 create-ecdh: 4.0.4 create-hash: 1.2.0 create-hmac: 1.1.7 @@ -9388,22 +9118,27 @@ snapshots: randombytes: 2.1.0 randomfill: 1.0.4 - csv-generate@3.4.3: {} - - csv-parse@4.16.3: {} + data-uri-to-buffer@4.0.1: {} - csv-stringify@5.6.5: {} + data-uri-to-buffer@6.0.2: {} - csv@5.5.3: + data-view-buffer@1.0.1: dependencies: - csv-generate: 3.4.3 - csv-parse: 4.16.3 - csv-stringify: 5.6.5 - stream-transform: 2.1.3 + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 - data-uri-to-buffer@4.0.1: {} + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 - data-uri-to-buffer@6.0.2: {} + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 dataloader@1.4.0: {} @@ -9423,30 +9158,23 @@ snapshots: optionalDependencies: supports-color: 8.1.1 - debug@4.3.5(supports-color@8.1.1): + debug@4.3.6(supports-color@8.1.1): dependencies: ms: 2.1.2 optionalDependencies: supports-color: 8.1.1 - decamelize-keys@1.1.1: - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - - decamelize@1.2.0: {} - decamelize@4.0.0: {} decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 - deep-eql@4.1.3: + deep-eql@4.1.4: dependencies: - type-detect: 4.0.8 + type-detect: 4.1.0 - deep-eql@5.0.1: {} + deep-eql@5.0.2: {} deep-equal@1.0.1: {} @@ -9456,9 +9184,9 @@ snapshots: deepmerge@4.3.1: {} - defaults@1.0.4: + default-gateway@6.0.3: dependencies: - clone: 1.0.4 + execa: 5.1.1 define-data-property@1.1.4: dependencies: @@ -9501,7 +9229,7 @@ snapshots: detect-libc@2.0.3: {} - devtools-protocol@0.0.1286932: {} + devtools-protocol@0.0.1312386: {} diff@5.0.0: {} @@ -9535,14 +9263,14 @@ snapshots: dependencies: '@noble/curves': 1.3.0 '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 - micro-packed: 0.5.2 + '@scure/base': 1.1.7 + micro-packed: 0.5.3 ee-first@1.1.1: {} - electron-to-chromium@1.4.798: {} + electron-to-chromium@1.5.4: {} - elliptic@6.5.4: + elliptic@6.5.6: dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -9562,7 +9290,7 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.17.0: + enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 @@ -9576,55 +9304,56 @@ snapshots: err-code@3.0.1: {} - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - errorstacks@2.4.1: {} - es-abstract@1.22.4: + es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 available-typed-arrays: 1.0.7 call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 es-define-property: 1.0.0 es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 get-symbol-description: 1.0.2 - globalthis: 1.0.3 + globalthis: 1.0.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.1 + hasown: 2.0.2 internal-slot: 1.0.7 is-array-buffer: 3.0.4 is-callable: 1.2.7 + is-data-view: 1.0.1 is-negative-zero: 2.0.3 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 is-string: 1.0.7 is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.13.1 + object-inspect: 1.13.2 object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.0 + safe-array-concat: 1.1.2 safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.0 + typed-array-byte-length: 1.0.1 typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.5 + typed-array-length: 1.0.6 unbox-primitive: 1.0.2 - which-typed-array: 1.1.14 + which-typed-array: 1.1.15 es-define-property@1.0.0: dependencies: @@ -9632,19 +9361,17 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@1.4.1: {} + es-module-lexer@1.5.4: {} - es-module-lexer@1.5.3: {} + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 - hasown: 2.0.1 - - es-shim-unscopables@1.0.2: - dependencies: - hasown: 2.0.1 + hasown: 2.0.2 es-to-primitive@1.2.1: dependencies: @@ -9781,11 +9508,6 @@ snapshots: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@8.0.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-scope@8.0.2: dependencies: esrecurse: 4.3.0 @@ -9815,7 +9537,7 @@ snapshots: eslint@9.3.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.3.0) - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.11.0 '@eslint/eslintrc': 3.1.0 '@eslint/js': 9.3.0 '@humanwhocodes/config-array': 0.13.0 @@ -9825,12 +9547,12 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint-scope: 8.0.1 + eslint-scope: 8.0.2 eslint-visitor-keys: 4.0.0 - espree: 10.0.1 - esquery: 1.5.0 + espree: 10.1.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 @@ -9845,7 +9567,7 @@ snapshots: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: @@ -9854,7 +9576,7 @@ snapshots: eslint@9.5.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) - '@eslint-community/regexpp': 4.10.1 + '@eslint-community/regexpp': 4.11.0 '@eslint/config-array': 0.16.0 '@eslint/eslintrc': 3.1.0 '@eslint/js': 9.5.0 @@ -9864,12 +9586,12 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint-scope: 8.0.1 + eslint-scope: 8.0.2 eslint-visitor-keys: 4.0.0 - espree: 10.0.1 - esquery: 1.5.0 + espree: 10.1.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 @@ -9903,12 +9625,12 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint-scope: 8.0.2 eslint-visitor-keys: 4.0.0 espree: 10.1.0 - esquery: 1.5.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 @@ -9929,12 +9651,6 @@ snapshots: transitivePeerDependencies: - supports-color - espree@10.0.1: - dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 4.0.0 - espree@10.1.0: dependencies: acorn: 8.12.1 @@ -9943,7 +9659,7 @@ snapshots: esprima@4.0.1: {} - esquery@1.5.0: + esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -9982,6 +9698,18 @@ snapshots: md5.js: 1.3.5 safe-buffer: 5.2.1 + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + expand-template@2.0.3: {} express@4.19.2: @@ -10030,7 +9758,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -10048,12 +9776,14 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.7 fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} + fast-uri@3.0.1: {} + fast-xml-parser@4.4.1: dependencies: strnum: 1.0.5 @@ -10109,23 +9839,23 @@ snapshots: find-yarn-workspace-root2@1.2.16: dependencies: - micromatch: 4.0.5 + micromatch: 4.0.7 pkg-dir: 4.2.0 flat-cache@4.0.1: dependencies: - flatted: 3.3.0 + flatted: 3.3.1 keyv: 4.5.4 flat@5.0.2: {} - flatted@3.3.0: {} + flatted@3.3.1: {} for-each@0.3.3: dependencies: is-callable: 1.2.7 - foreground-child@3.1.1: + foreground-child@3.2.1: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 @@ -10174,7 +9904,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.3 functions-have-names: 1.2.3 functions-have-names@1.2.3: {} @@ -10200,7 +9930,7 @@ snapshots: function-bind: 1.1.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.1 + hasown: 2.0.2 get-stream@5.2.0: dependencies: @@ -10216,9 +9946,9 @@ snapshots: get-uri@6.0.3: dependencies: - basic-ftp: 5.0.4 + basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) fs-extra: 11.2.0 transitivePeerDependencies: - supports-color @@ -10235,19 +9965,11 @@ snapshots: glob-to-regexp@0.4.1: {} - glob@10.3.10: - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 - glob@10.4.5: dependencies: - foreground-child: 3.1.1 + foreground-child: 3.2.1 jackspeak: 3.4.3 - minimatch: 9.0.4 + minimatch: 9.0.5 minipass: 7.1.2 package-json-from-dist: 1.0.0 path-scurry: 1.11.1 @@ -10283,7 +10005,7 @@ snapshots: fs.realpath: 1.0.0 minimatch: 8.0.4 minipass: 4.2.8 - path-scurry: 1.10.1 + path-scurry: 1.11.1 globals@13.24.0: dependencies: @@ -10291,9 +10013,10 @@ snapshots: globals@14.0.0: {} - globalthis@1.0.3: + globalthis@1.0.4: dependencies: define-properties: 1.2.1 + gopd: 1.0.1 globby@11.1.0: dependencies: @@ -10310,8 +10033,6 @@ snapshots: graceful-fs@4.2.11: {} - grapheme-splitter@1.0.4: {} - graphemer@1.4.0: {} hamt-sharding@3.0.6: @@ -10319,8 +10040,6 @@ snapshots: sparse-array: 1.3.2 uint8arrays: 5.1.0 - hard-rejection@2.1.0: {} - has-bigints@1.0.2: {} has-flag@3.0.0: {} @@ -10339,6 +10058,11 @@ snapshots: dependencies: has-symbols: 1.0.3 + hash-base@3.0.4: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + hash-base@3.1.0: dependencies: inherits: 2.0.4 @@ -10350,7 +10074,7 @@ snapshots: inherits: 2.0.4 minimalistic-assert: 1.0.1 - hasown@2.0.1: + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -10362,11 +10086,9 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - hosted-git-info@2.8.9: {} - - hosted-git-info@7.0.1: + hosted-git-info@7.0.2: dependencies: - lru-cache: 10.2.0 + lru-cache: 10.4.3 html-escaper@2.0.2: {} @@ -10400,22 +10122,24 @@ snapshots: http-proxy-agent@7.0.2: dependencies: - agent-base: 7.1.0 - debug: 4.3.5(supports-color@8.1.1) + agent-base: 7.1.1 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-browserify@1.0.0: {} - https-proxy-agent@7.0.4: + https-proxy-agent@7.0.5: dependencies: - agent-base: 7.1.0 - debug: 4.3.5(supports-color@8.1.1) + agent-base: 7.1.1 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color human-id@1.0.2: {} + human-signals@2.1.0: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -10435,8 +10159,6 @@ snapshots: imurmurhash@0.1.4: {} - indent-string@4.0.0: {} - inflation@2.1.0: {} inflight@1.0.6: @@ -10450,6 +10172,8 @@ snapshots: ini@1.3.8: {} + ini@4.1.3: {} + interface-blockstore@5.2.3: dependencies: interface-store: 5.1.2 @@ -10457,56 +10181,63 @@ snapshots: interface-store@5.1.2: {} + internal-ip@6.2.0: + dependencies: + default-gateway: 6.0.3 + ipaddr.js: 1.9.1 + is-ip: 3.1.0 + p-event: 4.2.0 + internal-slot@1.0.7: dependencies: es-errors: 1.3.0 - hasown: 2.0.1 - side-channel: 1.0.5 + hasown: 2.0.2 + side-channel: 1.0.6 ip-address@9.0.5: dependencies: jsbn: 1.1.0 sprintf-js: 1.1.3 - ip@2.0.1: {} + ip-regex@4.3.0: {} ipaddr.js@1.9.1: {} ipfs-unixfs-exporter@13.1.5: dependencies: - '@ipld/dag-cbor': 9.2.0 - '@ipld/dag-pb': 4.1.0 + '@ipld/dag-cbor': 9.0.3 + '@ipld/dag-pb': 4.1.2 '@multiformats/murmur3': 2.1.8 err-code: 3.0.1 hamt-sharding: 3.0.6 interface-blockstore: 5.2.3 - ipfs-unixfs: 11.1.3 - it-filter: 3.0.4 - it-last: 3.0.4 - it-map: 3.0.5 - it-parallel: 3.0.6 + ipfs-unixfs: 11.1.4 + it-filter: 3.1.1 + it-last: 3.0.6 + it-map: 3.1.1 + it-parallel: 3.0.8 it-pipe: 3.0.1 it-pushable: 3.2.3 multiformats: 11.0.2 p-queue: 7.4.1 - progress-events: 1.0.0 + progress-events: 1.0.1 uint8arrays: 4.0.10 ipfs-unixfs-importer@15.1.5: dependencies: - '@ipld/dag-pb': 4.1.0 + '@ipld/dag-pb': 4.1.2 '@multiformats/murmur3': 2.1.8 err-code: 3.0.1 hamt-sharding: 3.0.6 interface-blockstore: 5.2.3 interface-store: 5.1.2 - ipfs-unixfs: 11.1.3 - it-all: 3.0.4 - it-batch: 3.0.4 - it-first: 3.0.4 - it-parallel-batch: 3.0.4 + ipfs-unixfs: 11.1.4 + it-all: 3.0.6 + it-batch: 3.0.6 + it-first: 3.0.6 + it-parallel-batch: 3.0.6 multiformats: 11.0.2 - progress-events: 1.0.0 + progress-events: 1.0.1 rabin-wasm: 0.1.5 uint8arraylist: 2.4.8 uint8arrays: 4.0.10 @@ -10514,7 +10245,7 @@ snapshots: - encoding - supports-color - ipfs-unixfs@11.1.3: + ipfs-unixfs@11.1.4: dependencies: err-code: 3.0.1 protons-runtime: 5.4.0 @@ -10530,15 +10261,13 @@ snapshots: call-bind: 1.0.7 get-intrinsic: 1.2.4 - is-arrayish@0.2.1: {} - is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 is-binary-path@2.1.0: dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 is-boolean-object@1.1.2: dependencies: @@ -10555,9 +10284,13 @@ snapshots: is-callable@1.2.7: {} - is-core-module@2.13.1: + is-core-module@2.15.0: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.1: dependencies: - hasown: 2.0.1 + is-typed-array: 1.1.13 is-date-object@1.0.5: dependencies: @@ -10577,6 +10310,10 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-ip@3.1.0: + dependencies: + ip-regex: 4.3.0 + is-module@1.0.0: {} is-nan@1.3.2: @@ -10594,8 +10331,6 @@ snapshots: is-path-inside@3.0.3: {} - is-plain-obj@1.1.0: {} - is-plain-obj@2.1.0: {} is-property@1.0.2: {} @@ -10605,7 +10340,7 @@ snapshots: call-bind: 1.0.7 has-tostringtag: 1.0.2 - is-shared-array-buffer@1.0.2: + is-shared-array-buffer@1.0.3: dependencies: call-bind: 1.0.7 @@ -10625,7 +10360,7 @@ snapshots: is-typed-array@1.1.13: dependencies: - which-typed-array: 1.1.14 + which-typed-array: 1.1.15 is-unicode-supported@0.1.0: {} @@ -10639,6 +10374,8 @@ snapshots: dependencies: is-docker: 2.2.1 + isarray@1.0.0: {} + isarray@2.0.5: {} isbinaryfile@5.0.2: {} @@ -10666,54 +10403,48 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - it-all@3.0.4: {} + it-all@3.0.6: {} - it-batch@3.0.4: {} + it-batch@3.0.6: {} - it-filter@3.0.4: + it-filter@3.1.1: dependencies: - it-peekable: 3.0.3 + it-peekable: 3.0.5 - it-first@3.0.4: {} + it-first@3.0.6: {} - it-last@3.0.4: {} + it-last@3.0.6: {} - it-map@3.0.5: + it-map@3.1.1: dependencies: - it-peekable: 3.0.3 + it-peekable: 3.0.5 - it-merge@3.0.3: + it-merge@3.0.5: dependencies: it-pushable: 3.2.3 - it-parallel-batch@3.0.4: + it-parallel-batch@3.0.6: dependencies: - it-batch: 3.0.4 + it-batch: 3.0.6 - it-parallel@3.0.6: + it-parallel@3.0.8: dependencies: - p-defer: 4.0.0 + p-defer: 4.0.1 - it-peekable@3.0.3: {} + it-peekable@3.0.5: {} it-pipe@3.0.1: dependencies: - it-merge: 3.0.3 + it-merge: 3.0.5 it-pushable: 3.2.3 it-stream-types: 2.0.1 it-pushable@3.2.3: dependencies: - p-defer: 4.0.0 + p-defer: 4.0.1 it-stream-types@2.0.1: {} - jackspeak@2.3.6: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -10722,7 +10453,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.14.11 + '@types/node': 20.14.8 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -10749,7 +10480,7 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-parse-even-better-errors@3.0.1: {} + json-parse-even-better-errors@3.0.2: {} json-schema-traverse@0.4.1: {} @@ -10788,10 +10519,6 @@ snapshots: dependencies: json-buffer: 3.0.1 - kind-of@6.0.3: {} - - kleur@4.1.5: {} - koa-compose@4.1.0: {} koa-convert@2.0.0: @@ -10805,7 +10532,7 @@ snapshots: koa-send@5.0.1: dependencies: - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) http-errors: 1.8.1 resolve-path: 1.4.0 transitivePeerDependencies: @@ -10818,14 +10545,14 @@ snapshots: transitivePeerDependencies: - supports-color - koa@2.15.0: + koa@2.15.3: dependencies: accepts: 1.3.8 cache-content-type: 1.0.1 content-disposition: 0.5.4 content-type: 1.0.5 cookies: 0.9.1 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) delegates: 1.0.0 depd: 2.0.0 destroy: 1.2.0 @@ -10848,7 +10575,7 @@ snapshots: kysely@0.26.3: {} - layerr@2.0.1: {} + layerr@2.1.0: {} level-supports@4.0.1: {} @@ -10885,8 +10612,6 @@ snapshots: transitivePeerDependencies: - supports-color - lines-and-columns@1.2.4: {} - load-yaml-file@0.2.0: dependencies: graceful-fs: 4.2.11 @@ -10940,17 +10665,13 @@ snapshots: dependencies: get-func-name: 2.0.2 - lru-cache@10.2.0: {} + lru-cache@10.4.3: {} lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 yallist: 2.1.2 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - lru-cache@7.18.3: {} lru-cache@8.0.5: {} @@ -10959,11 +10680,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.6.0 - - map-obj@1.0.1: {} - - map-obj@4.3.0: {} + semver: 7.6.3 map-stream@0.0.7: {} @@ -10983,20 +10700,6 @@ snapshots: media-typer@0.3.0: {} - meow@6.1.1: - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - merge-descriptors@1.0.1: {} merge-stream@2.0.0: {} @@ -11005,14 +10708,9 @@ snapshots: methods@1.1.2: {} - micro-packed@0.5.2: - dependencies: - '@scure/base': 1.1.5 - - micromatch@4.0.5: + micro-packed@0.5.3: dependencies: - braces: 3.0.3 - picomatch: 2.3.1 + '@scure/base': 1.1.7 micromatch@4.0.7: dependencies: @@ -11036,8 +10734,6 @@ snapshots: mimic-response@3.1.0: {} - min-indent@1.0.1: {} - minimalistic-assert@1.0.1: {} minimalistic-crypto-utils@1.0.1: {} @@ -11058,32 +10754,18 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimatch@9.0.3: + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 - minimatch@9.0.4: - dependencies: - brace-expansion: 2.0.1 - - minimist-options@4.1.0: - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - minimist@1.2.8: {} minipass@4.2.8: {} - minipass@7.0.4: {} - minipass@7.1.2: {} mitt@3.0.1: {} - mixme@0.5.10: {} - mkdirp-classic@0.5.3: {} mkdirp@0.5.6: @@ -11096,7 +10778,7 @@ snapshots: mocha-junit-reporter@2.2.1(mocha@10.2.0): dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) md5: 2.3.0 mkdirp: 3.0.1 mocha: 10.2.0 @@ -11107,7 +10789,7 @@ snapshots: mocha-junit-reporter@2.2.1(mocha@10.4.0): dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) md5: 2.3.0 mkdirp: 3.0.1 mocha: 10.4.0 @@ -11118,7 +10800,7 @@ snapshots: mocha-junit-reporter@2.2.1(mocha@10.7.0): dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) md5: 2.3.0 mkdirp: 3.0.1 mocha: 10.7.0 @@ -11179,7 +10861,7 @@ snapshots: ansi-colors: 4.1.3 browser-stdout: 1.3.1 chokidar: 3.6.0 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) diff: 5.2.0 escape-string-regexp: 4.0.0 find-up: 5.0.0 @@ -11199,6 +10881,8 @@ snapshots: module-error@1.0.2: {} + mri@1.2.0: {} + ms@2.0.0: {} ms@2.1.2: {} @@ -11217,8 +10901,9 @@ snapshots: murmurhash3js-revisited@3.0.0: {} - mysql2@3.10.0: + mysql2@3.11.0: dependencies: + aws-ssl-profiles: 1.1.1 denque: 2.1.0 generate-function: 2.3.1 iconv-lite: 0.6.3 @@ -11250,25 +10935,17 @@ snapshots: netmask@2.0.2: {} - nise@5.1.9: - dependencies: - '@sinonjs/commons': 3.0.1 - '@sinonjs/fake-timers': 11.2.2 - '@sinonjs/text-encoding': 0.7.2 - just-extend: 6.2.0 - path-to-regexp: 6.2.1 - nise@6.0.0: dependencies: '@sinonjs/commons': 3.0.1 '@sinonjs/fake-timers': 11.2.2 '@sinonjs/text-encoding': 0.7.2 just-extend: 6.2.0 - path-to-regexp: 6.2.1 + path-to-regexp: 6.2.2 - node-abi@3.63.0: + node-abi@3.65.0: dependencies: - semver: 7.6.2 + semver: 7.6.3 node-domexception@1.0.0: {} @@ -11286,9 +10963,9 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-gyp-build@4.8.0: {} + node-gyp-build@4.8.1: {} - node-releases@2.0.14: {} + node-releases@2.0.18: {} node-stdlib-browser@1.2.0: dependencies: @@ -11316,29 +10993,21 @@ snapshots: string_decoder: 1.3.0 timers-browserify: 2.0.12 tty-browserify: 0.0.1 - url: 0.11.3 + url: 0.11.4 util: 0.12.5 vm-browserify: 1.1.2 - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.8 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - - normalize-package-data@6.0.0: + normalize-package-data@6.0.2: dependencies: - hosted-git-info: 7.0.1 - is-core-module: 2.13.1 - semver: 7.6.0 + hosted-git-info: 7.0.2 + semver: 7.6.3 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} npkill@0.11.3: dependencies: - ansi-escapes: 6.2.0 + ansi-escapes: 6.2.1 colors: 1.4.0 get-folder-size: 2.0.1 node-emoji: 1.11.0 @@ -11346,29 +11015,33 @@ snapshots: npm-install-checks@6.3.0: dependencies: - semver: 7.6.0 + semver: 7.6.3 npm-normalize-package-bin@3.0.1: {} - npm-package-arg@11.0.1: + npm-package-arg@11.0.3: dependencies: - hosted-git-info: 7.0.1 - proc-log: 3.0.0 - semver: 7.6.0 - validate-npm-package-name: 5.0.0 + hosted-git-info: 7.0.2 + proc-log: 4.2.0 + semver: 7.6.3 + validate-npm-package-name: 5.0.1 - npm-pick-manifest@9.0.0: + npm-pick-manifest@9.1.0: dependencies: npm-install-checks: 6.3.0 npm-normalize-package-bin: 3.0.1 - npm-package-arg: 11.0.1 - semver: 7.6.0 + npm-package-arg: 11.0.3 + semver: 7.6.3 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 object-assign@4.1.1: {} - object-inspect@1.13.1: {} + object-inspect@1.13.2: {} - object-is@1.1.5: + object-is@1.1.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -11413,15 +11086,6 @@ snapshots: type-check: 0.3.2 word-wrap: 1.2.5 - optionator@0.9.3: - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -11437,12 +11101,18 @@ snapshots: outdent@0.5.0: {} - p-defer@4.0.0: {} + p-defer@4.0.1: {} + + p-event@4.2.0: + dependencies: + p-timeout: 3.2.0 p-filter@2.1.0: dependencies: p-map: 2.1.0 + p-finally@1.0.0: {} + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -11466,20 +11136,24 @@ snapshots: eventemitter3: 5.0.1 p-timeout: 5.1.0 + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + p-timeout@5.1.0: {} p-try@2.2.0: {} - pac-proxy-agent@7.0.1: + pac-proxy-agent@7.0.2: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.0 - debug: 4.3.5(supports-color@8.1.1) + agent-base: 7.1.1 + debug: 4.3.6(supports-color@8.1.1) get-uri: 6.0.3 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 + https-proxy-agent: 7.0.5 pac-resolver: 7.0.1 - socks-proxy-agent: 8.0.2 + socks-proxy-agent: 8.0.4 transitivePeerDependencies: - supports-color @@ -11498,21 +11172,15 @@ snapshots: dependencies: callsites: 3.1.0 - parse-asn1@5.1.6: + parse-asn1@5.1.7: dependencies: - asn1.js: 5.4.1 + asn1.js: 4.10.1 browserify-aes: 1.2.0 evp_bytestokey: 1.0.3 + hash-base: 3.0.4 pbkdf2: 3.1.2 safe-buffer: 5.2.1 - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.23.5 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - parse5@6.0.1: {} parseurl@1.3.3: {} @@ -11527,19 +11195,14 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.10.1: - dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 - path-scurry@1.11.1: dependencies: - lru-cache: 10.2.0 + lru-cache: 10.4.3 minipass: 7.1.2 path-to-regexp@0.1.7: {} - path-to-regexp@6.2.1: {} + path-to-regexp@6.2.2: {} path-type@4.0.0: {} @@ -11566,15 +11229,15 @@ snapshots: pg-connection-string@2.6.4: {} - pg-cursor@2.10.5(pg@8.11.5): + pg-cursor@2.11.0(pg@8.12.0): dependencies: - pg: 8.11.5 + pg: 8.12.0 pg-int8@1.0.1: {} - pg-pool@3.6.2(pg@8.11.5): + pg-pool@3.6.2(pg@8.12.0): dependencies: - pg: 8.11.5 + pg: 8.12.0 pg-protocol@1.6.1: {} @@ -11586,10 +11249,10 @@ snapshots: postgres-date: 1.0.7 postgres-interval: 1.2.0 - pg@8.11.5: + pg@8.12.0: dependencies: pg-connection-string: 2.6.4 - pg-pool: 3.6.2(pg@8.11.5) + pg-pool: 3.6.2(pg@8.12.0) pg-protocol: 1.6.1 pg-types: 2.2.0 pgpass: 1.0.5 @@ -11650,19 +11313,19 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.63.0 + node-abi: 3.65.0 pump: 3.0.0 rc: 1.2.8 simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 - preferred-pm@3.1.3: + preferred-pm@3.1.4: dependencies: find-up: 5.0.0 find-yarn-workspace-root2: 1.2.16 path-exists: 4.0.0 - which-pm: 2.0.0 + which-pm: 2.2.0 prelude-ls@1.1.2: {} @@ -11672,9 +11335,13 @@ snapshots: proc-log@3.0.0: {} + proc-log@4.2.0: {} + + process-nextick-args@2.0.1: {} + process@0.11.10: {} - progress-events@1.0.0: {} + progress-events@1.0.1: {} progress@2.0.3: {} @@ -11702,14 +11369,14 @@ snapshots: proxy-agent@6.4.0: dependencies: - agent-base: 7.1.0 - debug: 4.3.5(supports-color@8.1.1) + agent-base: 7.1.1 + debug: 4.3.6(supports-color@8.1.1) http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 + https-proxy-agent: 7.0.5 lru-cache: 7.18.3 - pac-proxy-agent: 7.0.1 + pac-proxy-agent: 7.0.2 proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.2 + socks-proxy-agent: 8.0.4 transitivePeerDependencies: - supports-color @@ -11722,7 +11389,7 @@ snapshots: bn.js: 4.12.0 browserify-rsa: 4.1.0 create-hash: 1.2.0 - parse-asn1: 5.1.6 + parse-asn1: 5.1.7 randombytes: 2.1.0 safe-buffer: 5.2.1 @@ -11735,13 +11402,13 @@ snapshots: punycode@2.3.1: {} - puppeteer-core@22.9.0: + puppeteer-core@22.15.0: dependencies: - '@puppeteer/browsers': 2.2.3 - chromium-bidi: 0.5.19(devtools-protocol@0.0.1286932) - debug: 4.3.4(supports-color@8.1.1) - devtools-protocol: 0.0.1286932 - ws: 8.17.1 + '@puppeteer/browsers': 2.3.0 + chromium-bidi: 0.6.3(devtools-protocol@0.0.1312386) + debug: 4.3.6(supports-color@8.1.1) + devtools-protocol: 0.0.1312386 + ws: 8.18.0 transitivePeerDependencies: - bufferutil - supports-color @@ -11751,9 +11418,9 @@ snapshots: dependencies: side-channel: 1.0.6 - qs@6.11.2: + qs@6.13.0: dependencies: - side-channel: 1.0.5 + side-channel: 1.0.6 querystring-es3@0.2.1: {} @@ -11761,13 +11428,11 @@ snapshots: queue-tick@1.0.1: {} - quick-lru@4.0.1: {} - rabin-wasm@0.1.5: dependencies: '@assemblyscript/loader': 0.9.4 bl: 5.1.0 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) minimist: 1.2.8 node-fetch: 2.7.0 readable-stream: 3.6.2 @@ -11802,19 +11467,6 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - read-pkg-up@7.0.1: - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - - read-pkg@5.2.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -11822,6 +11474,16 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + readable-stream@3.6.2: dependencies: inherits: 2.0.4 @@ -11854,11 +11516,6 @@ snapshots: readline-transform@1.0.0: {} - redent@3.0.0: - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - regenerator-runtime@0.14.1: {} regexp.prototype.flags@1.5.2: @@ -11872,8 +11529,6 @@ snapshots: require-from-string@2.0.2: {} - require-main-filename@2.0.0: {} - resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -11885,7 +11540,7 @@ snapshots: resolve@1.22.8: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -11909,30 +11564,33 @@ snapshots: rimraf@5.0.7: dependencies: - glob: 10.3.10 + glob: 10.4.5 ripemd160@2.0.2: dependencies: hash-base: 3.1.0 inherits: 2.0.4 - rollup@4.12.0: + rollup@4.20.0: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.12.0 - '@rollup/rollup-android-arm64': 4.12.0 - '@rollup/rollup-darwin-arm64': 4.12.0 - '@rollup/rollup-darwin-x64': 4.12.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.12.0 - '@rollup/rollup-linux-arm64-gnu': 4.12.0 - '@rollup/rollup-linux-arm64-musl': 4.12.0 - '@rollup/rollup-linux-riscv64-gnu': 4.12.0 - '@rollup/rollup-linux-x64-gnu': 4.12.0 - '@rollup/rollup-linux-x64-musl': 4.12.0 - '@rollup/rollup-win32-arm64-msvc': 4.12.0 - '@rollup/rollup-win32-ia32-msvc': 4.12.0 - '@rollup/rollup-win32-x64-msvc': 4.12.0 + '@rollup/rollup-android-arm-eabi': 4.20.0 + '@rollup/rollup-android-arm64': 4.20.0 + '@rollup/rollup-darwin-arm64': 4.20.0 + '@rollup/rollup-darwin-x64': 4.20.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.20.0 + '@rollup/rollup-linux-arm-musleabihf': 4.20.0 + '@rollup/rollup-linux-arm64-gnu': 4.20.0 + '@rollup/rollup-linux-arm64-musl': 4.20.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0 + '@rollup/rollup-linux-riscv64-gnu': 4.20.0 + '@rollup/rollup-linux-s390x-gnu': 4.20.0 + '@rollup/rollup-linux-x64-gnu': 4.20.0 + '@rollup/rollup-linux-x64-musl': 4.20.0 + '@rollup/rollup-win32-arm64-msvc': 4.20.0 + '@rollup/rollup-win32-ia32-msvc': 4.20.0 + '@rollup/rollup-win32-x64-msvc': 4.20.0 fsevents: 2.3.3 run-parallel-limit@1.1.0: @@ -11945,9 +11603,9 @@ snapshots: rxjs@7.8.1: dependencies: - tslib: 2.6.2 + tslib: 2.6.3 - safe-array-concat@1.1.0: + safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 @@ -11972,13 +11630,7 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - semver@5.7.2: {} - - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - - semver@7.6.2: {} + semver@7.6.3: {} send@0.18.0: dependencies: @@ -12017,9 +11669,7 @@ snapshots: transitivePeerDependencies: - supports-color - set-blocking@2.0.0: {} - - set-function-length@1.2.1: + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -12058,19 +11708,12 @@ snapshots: shebang-regex@3.0.0: {} - side-channel@1.0.5: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.1 - side-channel@1.0.6: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.1 + object-inspect: 1.13.2 signal-exit@3.0.7: {} @@ -12084,15 +11727,6 @@ snapshots: once: 1.4.0 simple-concat: 1.0.1 - sinon@16.1.3: - dependencies: - '@sinonjs/commons': 3.0.1 - '@sinonjs/fake-timers': 10.3.0 - '@sinonjs/samsam': 8.0.0 - diff: 5.2.0 - nise: 5.1.9 - supports-color: 7.2.0 - sinon@18.0.0: dependencies: '@sinonjs/commons': 3.0.1 @@ -12112,47 +11746,38 @@ snapshots: smart-buffer@4.2.0: {} - smartwrap@2.0.2: - dependencies: - array.prototype.flat: 1.3.2 - breakword: 1.0.6 - grapheme-splitter: 1.0.4 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 15.4.1 - - socks-proxy-agent@8.0.2: + socks-proxy-agent@8.0.4: dependencies: - agent-base: 7.1.0 - debug: 4.3.5(supports-color@8.1.1) - socks: 2.7.3 + agent-base: 7.1.1 + debug: 4.3.6(supports-color@8.1.1) + socks: 2.8.3 transitivePeerDependencies: - supports-color - socks@2.7.3: + socks@2.8.3: dependencies: ip-address: 9.0.5 smart-buffer: 4.2.0 - source-map-js@1.0.2: {} + source-map-js@1.2.0: {} - source-map-loader@4.0.2(webpack@5.92.0(esbuild@0.19.8)): + source-map-loader@4.0.2(webpack@5.93.0(esbuild@0.19.8)): dependencies: iconv-lite: 0.6.3 - source-map-js: 1.0.2 - webpack: 5.92.0(esbuild@0.19.8) + source-map-js: 1.2.0 + webpack: 5.93.0(esbuild@0.19.8) - source-map-loader@5.0.0(webpack@5.92.0(esbuild@0.23.0)): + source-map-loader@5.0.0(webpack@5.93.0(esbuild@0.23.0)): dependencies: iconv-lite: 0.6.3 - source-map-js: 1.0.2 - webpack: 5.92.0(esbuild@0.23.0) + source-map-js: 1.2.0 + webpack: 5.93.0(esbuild@0.23.0) - source-map-loader@5.0.0(webpack@5.92.0): + source-map-loader@5.0.0(webpack@5.93.0): dependencies: iconv-lite: 0.6.3 - source-map-js: 1.0.2 - webpack: 5.92.0 + source-map-js: 1.2.0 + webpack: 5.93.0 source-map-support@0.5.21: dependencies: @@ -12173,16 +11798,16 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.18 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.18 - spdx-license-ids@3.0.17: {} + spdx-license-ids@3.0.18: {} split2@4.2.0: {} @@ -12221,19 +11846,13 @@ snapshots: readable-stream: 3.6.2 xtend: 4.0.2 - stream-read-all@3.0.1: {} - - stream-transform@2.1.3: - dependencies: - mixme: 0.5.10 - streamx@2.18.0: dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 - text-decoder: 1.1.0 + text-decoder: 1.1.1 optionalDependencies: - bare-events: 2.3.1 + bare-events: 2.4.2 string-width@4.2.3: dependencies: @@ -12247,35 +11866,43 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string.prototype.matchall@4.0.10: + string.prototype.matchall@4.0.11: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 + gopd: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.7 regexp.prototype.flags: 1.5.2 set-function-name: 2.0.2 side-channel: 1.0.6 - string.prototype.trim@1.2.8: + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 - string.prototype.trimend@1.0.7: + string.prototype.trimend@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-object-atoms: 1.0.0 - string.prototype.trimstart@1.0.7: + string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-object-atoms: 1.0.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 string_decoder@1.3.0: dependencies: @@ -12291,9 +11918,7 @@ snapshots: strip-bom@3.0.0: {} - strip-indent@3.0.0: - dependencies: - min-indent: 1.0.1 + strip-final-newline@2.0.0: {} strip-json-comments@2.0.1: {} @@ -12315,14 +11940,9 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - table-layout@3.0.2: + table-layout@4.1.1: dependencies: - '@75lb/deep-merge': 1.1.2 array-back: 6.2.2 - command-line-args: 5.2.1 - command-line-usage: 7.0.1 - stream-read-all: 3.0.1 - typical: 7.1.1 wordwrapjs: 5.1.0 tapable@2.2.1: {} @@ -12334,7 +11954,7 @@ snapshots: pump: 3.0.0 tar-stream: 2.2.0 - tar-fs@3.0.5: + tar-fs@3.0.6: dependencies: pump: 3.0.0 tar-stream: 3.1.7 @@ -12362,38 +11982,38 @@ snapshots: term-size@2.2.1: {} - terser-webpack-plugin@5.3.10(esbuild@0.19.8)(webpack@5.92.0(esbuild@0.19.8)): + terser-webpack-plugin@5.3.10(esbuild@0.19.8)(webpack@5.93.0(esbuild@0.19.8)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.31.1 - webpack: 5.92.0(esbuild@0.19.8) + terser: 5.31.3 + webpack: 5.93.0(esbuild@0.19.8) optionalDependencies: esbuild: 0.19.8 - terser-webpack-plugin@5.3.10(esbuild@0.23.0)(webpack@5.92.0(esbuild@0.23.0)): + terser-webpack-plugin@5.3.10(esbuild@0.23.0)(webpack@5.93.0(esbuild@0.23.0)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.31.1 - webpack: 5.92.0(esbuild@0.23.0) + terser: 5.31.3 + webpack: 5.93.0(esbuild@0.23.0) optionalDependencies: esbuild: 0.23.0 - terser-webpack-plugin@5.3.10(webpack@5.92.0): + terser-webpack-plugin@5.3.10(webpack@5.93.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.31.1 - webpack: 5.92.0 + terser: 5.31.3 + webpack: 5.93.0 - terser@5.31.1: + terser@5.31.3: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.12.1 @@ -12410,9 +12030,9 @@ snapshots: dependencies: '@istanbuljs/schema': 0.1.3 glob: 10.4.5 - minimatch: 9.0.4 + minimatch: 9.0.5 - text-decoder@1.1.0: + text-decoder@1.1.1: dependencies: b4a: 1.6.6 @@ -12442,12 +12062,10 @@ snapshots: tr46@0.0.3: {} - tr46@3.0.0: + tr46@5.0.0: dependencies: punycode: 2.3.1 - trim-newlines@3.0.1: {} - ts-api-utils@1.3.0(typescript@5.1.6): dependencies: typescript: 5.1.6 @@ -12464,22 +12082,12 @@ snapshots: dependencies: typescript: 5.5.4 - tslib@2.6.2: {} + tslib@2.6.3: {} tsscmp@1.0.6: {} tty-browserify@0.0.1: {} - tty-table@4.2.3: - dependencies: - chalk: 4.1.2 - csv: 5.5.3 - kleur: 4.1.5 - smartwrap: 2.0.2 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 17.7.2 - tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 @@ -12494,18 +12102,12 @@ snapshots: type-detect@4.0.8: {} - type-fest@0.13.1: {} + type-detect@4.1.0: {} type-fest@0.20.2: {} type-fest@0.21.3: {} - type-fest@0.6.0: {} - - type-fest@0.8.1: {} - - type-fest@3.13.1: {} - type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -12517,10 +12119,11 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.13 - typed-array-byte-length@1.0.0: + typed-array-byte-length@1.0.1: dependencies: call-bind: 1.0.7 for-each: 0.3.3 + gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 @@ -12533,7 +12136,7 @@ snapshots: has-proto: 1.0.3 is-typed-array: 1.1.13 - typed-array-length@1.0.5: + typed-array-length@1.0.6: dependencies: call-bind: 1.0.7 for-each: 0.3.3 @@ -12554,7 +12157,7 @@ snapshots: typical@7.1.1: {} - uint8-util@2.2.4: + uint8-util@2.2.5: dependencies: base64-arraybuffer: 1.0.2 @@ -12581,7 +12184,7 @@ snapshots: ulidx@2.1.0: dependencies: - layerr: 2.0.1 + layerr: 2.1.0 unbox-primitive@1.0.2: dependencies: @@ -12603,9 +12206,9 @@ snapshots: unpipe@1.0.0: {} - update-browserslist-db@1.0.16(browserslist@4.23.1): + update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: - browserslist: 4.23.1 + browserslist: 4.23.3 escalade: 3.1.2 picocolors: 1.0.1 @@ -12613,10 +12216,10 @@ snapshots: dependencies: punycode: 2.3.1 - url@0.11.3: + url@0.11.4: dependencies: punycode: 1.4.1 - qs: 6.11.2 + qs: 6.13.0 urlpattern-polyfill@10.0.0: {} @@ -12630,7 +12233,7 @@ snapshots: is-arguments: 1.1.1 is-generator-function: 1.0.10 is-typed-array: 1.1.13 - which-typed-array: 1.1.14 + which-typed-array: 1.1.15 utils-merge@1.0.1: {} @@ -12640,9 +12243,9 @@ snapshots: uuid@9.0.1: {} - v8-to-istanbul@9.2.0: + v8-to-istanbul@9.3.0: dependencies: - '@jridgewell/trace-mapping': 0.3.22 + '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 @@ -12651,9 +12254,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validate-npm-package-name@5.0.0: - dependencies: - builtins: 5.0.1 + validate-npm-package-name@5.0.1: {} varint@6.0.0: {} @@ -12666,10 +12267,6 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - web-streams-polyfill@3.3.3: {} webidl-conversions@3.0.1: {} @@ -12678,7 +12275,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.92.0: + webpack@5.93.0: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -12687,10 +12284,10 @@ snapshots: '@webassemblyjs/wasm-parser': 1.12.1 acorn: 8.12.1 acorn-import-attributes: 1.9.5(acorn@8.12.1) - browserslist: 4.23.1 + browserslist: 4.23.3 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.0 - es-module-lexer: 1.5.3 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -12701,7 +12298,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.92.0) + terser-webpack-plugin: 5.3.10(webpack@5.93.0) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -12709,7 +12306,7 @@ snapshots: - esbuild - uglify-js - webpack@5.92.0(esbuild@0.19.8): + webpack@5.93.0(esbuild@0.19.8): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -12718,10 +12315,10 @@ snapshots: '@webassemblyjs/wasm-parser': 1.12.1 acorn: 8.12.1 acorn-import-attributes: 1.9.5(acorn@8.12.1) - browserslist: 4.23.1 + browserslist: 4.23.3 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.0 - es-module-lexer: 1.5.3 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -12732,7 +12329,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.19.8)(webpack@5.92.0(esbuild@0.19.8)) + terser-webpack-plugin: 5.3.10(esbuild@0.19.8)(webpack@5.93.0(esbuild@0.19.8)) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -12740,7 +12337,7 @@ snapshots: - esbuild - uglify-js - webpack@5.92.0(esbuild@0.23.0): + webpack@5.93.0(esbuild@0.23.0): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -12749,10 +12346,10 @@ snapshots: '@webassemblyjs/wasm-parser': 1.12.1 acorn: 8.12.1 acorn-import-attributes: 1.9.5(acorn@8.12.1) - browserslist: 4.23.1 + browserslist: 4.23.3 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.0 - es-module-lexer: 1.5.3 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -12763,7 +12360,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.23.0)(webpack@5.92.0(esbuild@0.23.0)) + terser-webpack-plugin: 5.3.10(esbuild@0.23.0)(webpack@5.93.0(esbuild@0.23.0)) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -12771,9 +12368,9 @@ snapshots: - esbuild - uglify-js - whatwg-url@11.0.0: + whatwg-url@14.0.0: dependencies: - tr46: 3.0.0 + tr46: 5.0.0 webidl-conversions: 7.0.0 whatwg-url@5.0.0: @@ -12789,14 +12386,12 @@ snapshots: is-string: 1.0.7 is-symbol: 1.0.4 - which-module@2.0.1: {} - - which-pm@2.0.0: + which-pm@2.2.0: dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 - which-typed-array@1.1.14: + which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -12844,27 +12439,16 @@ snapshots: wrappy@1.0.2: {} - ws@8.17.1: {} - ws@8.18.0: {} xml@1.0.1: {} xtend@4.0.2: {} - y18n@4.0.3: {} - y18n@5.0.8: {} yallist@2.1.2: {} - yallist@4.0.0: {} - - yargs-parser@18.1.3: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - yargs-parser@20.2.4: {} yargs-parser@20.2.9: {} @@ -12878,20 +12462,6 @@ snapshots: flat: 5.0.2 is-plain-obj: 2.1.0 - yargs@15.4.1: - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - yargs@16.2.0: dependencies: cliui: 7.0.4 @@ -12917,8 +12487,8 @@ snapshots: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 - ylru@1.3.2: {} + ylru@1.4.0: {} yocto-queue@0.1.0: {} - zod@3.22.4: {} + zod@3.23.8: {} diff --git a/tsconfig.json b/tsconfig.json index 08bfe03d6..9135c9f95 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,7 @@ "DOM", "ES2022", ], - "allowJs": true, + "allowJs": false, "strict": true, "declaration": true, "declarationMap": true, @@ -15,6 +15,8 @@ // reference: https://devblogs.microsoft.com/typescript/announcing-typescript-4-7/#ecmascript-module-support-in-node-js "esModuleInterop": true, "resolveJsonModule": true, - "moduleResolution": "NodeNext" - } + "moduleResolution": "NodeNext", + "skipLibCheck": true + }, + "exclude": ["eslint.config.cjs", "data", "bin", "web5-spec", "node_modules"] } \ No newline at end of file