diff --git a/.github/workflows/package-release.yml b/.github/workflows/package-release.yml index 83aee7e..9812ae8 100644 --- a/.github/workflows/package-release.yml +++ b/.github/workflows/package-release.yml @@ -1,7 +1,7 @@ name: Publish Package on: - push: - branches: ['main', 'release/*'] + workflow_dispatch: + jobs: npm-publish: runs-on: ubuntu-latest @@ -29,11 +29,3 @@ jobs: env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} - - name: Merge Release -> Trunk - uses: devmasx/merge-branch@854d3ac71ed1e9deb668e0074781b81fdd6e771f - if: github.ref == 'refs/heads/release/1.x' - with: - type: now - from_branch: release/1.x - target_branch: main - github_token: ${{ steps.app-token.outputs.token }} diff --git a/.gitignore b/.gitignore index ec5a13a..d9ddfcc 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ docker-compose.override.yml swagger-codegen-cli.jar ngrok.yml .data -lib +#lib docs # Logs @@ -137,3 +137,6 @@ dist .yarn/build-state.yml .yarn/install-state.gz .pnp.* + +.idea/* +pnpm-lock.yaml diff --git a/README.md b/README.md index c242987..13bac3e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# @algorandfoundation/liquid-client +# @algorandecosystem/liquid-client [![CI](https://github.com/algorandfoundation/liquid-auth-js/actions/workflows/CI.yml/badge.svg)](https://github.com/algorandfoundation/liquid-auth-js/actions/workflows/CI.yml)[![Publish Package](https://github.com/algorandfoundation/liquid-auth-js/actions/workflows/package-release.yml/badge.svg)](https://github.com/algorandfoundation/liquid-auth-js/actions/workflows/package-release.yml)[![codecov](https://codecov.io/gh/algorandfoundation/liquid-auth-js/graph/badge.svg?token=AKN7VATWTO)](https://codecov.io/gh/algorandfoundation/liquid-auth-js)[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](code_of_conduct.md) @@ -15,7 +15,7 @@ npm install algorandfoundation/liquid-auth-js --save # 📝 Usage ```typescript -import {SignalClient} from '@algorandfoundation/liquid-client'; +import {SignalClient} from '@algorandecosystem/liquid-client'; const client = new SignalClient(window.origin); ``` diff --git a/lib/assertion.d.ts b/lib/assertion.d.ts new file mode 100644 index 0000000..08b4d40 --- /dev/null +++ b/lib/assertion.d.ts @@ -0,0 +1,51 @@ +export * as fetch from './assertion.fetch.js'; +export * as encoder from './assertion.encoder.js'; +/** + * Represents the options for an assertion used during authentication. + */ +export type AssertionOptions = { + /** + * Represents the origin service to which a request should be sent. + */ + origin: string; + /** + * Represents the unique identifier for a credential. + * This variable identifies a specific credential within the authenticator. + */ + credId: string; + /** + * An optional configuration object that specifies options for a PublicKeyCredential request. + * + * This object is used during the process of requesting a credential from the user's device + * for Web Authentication (WebAuthn). It allows customization of the request to match + * the application's authentication requirements. + * + * Property details of `PublicKeyCredentialRequestOptions` typically include: + * - `timeout`: The time, in milliseconds, that the user agent is expected to wait for a response. + * - `userVerification`: Specifies the level of user verification required (e.g., "required", "preferred", "discouraged"). + * + * This parameter is optional when calling authentication-related functions. If omitted, + * the request may rely on default or previously established options. + */ + options?: PublicKeyCredentialRequestOptions; + /** + * A boolean flag to enable or disable debug mode. + * If set to `true`, the application may output additional + * logging or diagnostic information useful for debugging. + * Defaults to `false` if not specified. + */ + debug?: boolean; +}; +/** + * Assert a known credential + * + * Handles both {@link fetch.postOptions} and {@link fetch.postResponse} for the caller. + * This includes encoding/decoding the payloads from the service and navigator api. + * + * #### Quick Start: + * {@includeCode ./assertion.spec.ts#assertionImport,quickStart} + * + * + * @param {AssertionOptions} params + */ +export declare function assertion(params: AssertionOptions): Promise; diff --git a/lib/assertion.encoder.d.ts b/lib/assertion.encoder.d.ts new file mode 100644 index 0000000..2e144f2 --- /dev/null +++ b/lib/assertion.encoder.d.ts @@ -0,0 +1,96 @@ +/** + * Represents an encoded authenticator assertion response typically used in WebAuthn authentication. + * This type defines the structure of the response and ensures all required fields are provided in string format. + * + * EncodedAuthenticatorAssertionResponse includes: + * - A map of additional string properties if needed. + * - Fields such as `clientDataJSON`, `authenticatorData`, `signature`, and `userHandle`. + * + * The primary purpose of this type is to encapsulate the components originating from the authenticator + * required to validate the authentication assertion. + * + * @protected + */ +export type EncodedAuthenticatorAssertionResponse = { + [k: string]: string; + clientDataJSON: string; + authenticatorData: string; + signature: string; + userHandle: string; +}; +/** + * + * @param response + * @protected + */ +export declare function encodeResponse(response: AuthenticatorAssertionResponse & Record): EncodedAuthenticatorAssertionResponse; +/** + * EncodedPublicKeyCredentialDescriptor represents a type that extends the PublicKeyCredentialDescriptor interface + * with an additional requirement for the 'id' property to be of type string. + * + * This type is used to encapsulate the properties of a public key credential, including its unique identifier, + * in a form where the 'id' is explicitly defined as a string rather than an ArrayBuffer. + * + * It is typically utilized in contexts where serialized or encoded values of public key credentials are required. + * + * Properties: + * - id: A string representation of the unique identifier for the public key credential. + * + * This type is a combination of PublicKeyCredentialDescriptor properties and overrides for specific use cases + * requiring encoded identifiers. + * @protected + */ +export type EncodedPublicKeyCredentialDescriptor = PublicKeyCredentialDescriptor & { + id: string; +}; +/** + * EncodedPublicKeyCredentialRequestOptions is a composite type that extends + * the PublicKeyCredentialRequestOptions interface. This type is designed + * to represent request options for a WebAuthn authentication process, + * with specific adjustments to handle encoded data formats. + * + * The primary purpose of this type is to ensure compatibility with encoded + * challenges and allow credentials that are represented in an encoded format. + * + * Properties: + * - Includes all properties from PublicKeyCredentialRequestOptions. + * - `allowCredentials` (optional): An array of encoded credential descriptors + * that specify which credentials may be used for the assertion. + * - `challenge`: A cryptographic random challenge provided in encoded format, + * used in the WebAuthn assertion process. + * + * This type is intended to support workflows where cryptographic data must + * be encoded for transport or storage. + * + * @protected + */ +export type EncodedPublicKeyCredentialRequestOptions = PublicKeyCredentialRequestOptions & { + allowCredentials?: EncodedPublicKeyCredentialDescriptor[]; + challenge: string; +}; +/** + * Decodes the given assertion request options by converting base64URL-encoded fields + * into their corresponding ArrayBuffer representations and returns the decoded options. + * + * @param {EncodedPublicKeyCredentialRequestOptions} options - The encoded credential options to decode, containing properties such as `challenge` and `allowCredentials`. + * @return {PublicKeyCredentialRequestOptions} The decoded credential request options with binary data fields properly converted. + */ +export declare function decodeOptions(options: EncodedPublicKeyCredentialRequestOptions): PublicKeyCredentialRequestOptions; +/** + * @protected + */ +export type EncodedCredential = { + [k: string]: string | EncodedAuthenticatorAssertionResponse; + id: string; + type: string; + response: EncodedAuthenticatorAssertionResponse; + rawId: string; +}; +/** + * Encodes the provided PublicKeyCredential into an EncodedCredential object. + * + * @param {PublicKeyCredential} credential - The PublicKeyCredential to be encoded. + * @return {EncodedCredential} A new object containing the encoded properties of the credential. + * @throws {Error} Throws an error if the input credential is invalid or cannot be processed. + */ +export declare function encodeCredential(credential: Credential | null): EncodedCredential; diff --git a/lib/assertion.encoder.js b/lib/assertion.encoder.js new file mode 100644 index 0000000..9d078a0 --- /dev/null +++ b/lib/assertion.encoder.js @@ -0,0 +1,48 @@ +import { INVALID_INPUT_MESSAGE, CREDENTIAL_ACTION_FAILURE } from "./errors.js"; +import { fromBase64Url, toBase64URL } from "./encoding.js"; +function encodeResponse(response) { + return Object.keys( + AuthenticatorAssertionResponse.prototype + ).reduce( + (prev, curr) => { + prev[curr] = toBase64URL(response[curr]); + return prev; + }, + { + clientDataJSON: toBase64URL(response.clientDataJSON) + } + ); +} +function decodeOptions(options) { + var _a; + if (typeof options !== "object" || typeof options.challenge !== "string") + throw new TypeError(INVALID_INPUT_MESSAGE); + const decodedOptions = { ...options }; + decodedOptions.challenge = fromBase64Url(options.challenge).buffer; + decodedOptions.allowCredentials = ((_a = options.allowCredentials) == null ? void 0 : _a.map( + (cred) => { + return { + ...cred, + id: fromBase64Url(cred.id).buffer + }; + } + )) || []; + return decodedOptions; +} +function encodeCredential(credential) { + if (!credential) throw new Error(INVALID_INPUT_MESSAGE); + const response = credential.response; + if (!response) throw new Error(CREDENTIAL_ACTION_FAILURE); + return { + id: credential.id, + type: credential.type, + rawId: toBase64URL(credential.rawId), + response: encodeResponse(response) + }; +} +export { + decodeOptions, + encodeCredential, + encodeResponse +}; +//# sourceMappingURL=assertion.encoder.js.map diff --git a/lib/assertion.encoder.js.map b/lib/assertion.encoder.js.map new file mode 100644 index 0000000..7012f9e --- /dev/null +++ b/lib/assertion.encoder.js.map @@ -0,0 +1 @@ +{"version":3,"file":"assertion.encoder.js","sources":["../src/assertion.encoder.ts"],"sourcesContent":["import { CREDENTIAL_ACTION_FAILURE, INVALID_INPUT_MESSAGE } from './errors.js';\nimport { fromBase64Url, toBase64URL } from './encoding.js';\n\n/**\n * Represents an encoded authenticator assertion response typically used in WebAuthn authentication.\n * This type defines the structure of the response and ensures all required fields are provided in string format.\n *\n * EncodedAuthenticatorAssertionResponse includes:\n * - A map of additional string properties if needed.\n * - Fields such as `clientDataJSON`, `authenticatorData`, `signature`, and `userHandle`.\n *\n * The primary purpose of this type is to encapsulate the components originating from the authenticator\n * required to validate the authentication assertion.\n *\n * @protected\n */\nexport type EncodedAuthenticatorAssertionResponse = {\n [k: string]: string;\n clientDataJSON: string;\n authenticatorData: string;\n signature: string;\n userHandle: string;\n};\n\n/**\n *\n * @param response\n * @protected\n */\nexport function encodeResponse(\n response: AuthenticatorAssertionResponse & Record,\n) {\n return Object.keys(\n AuthenticatorAssertionResponse.prototype,\n ).reduce(\n (prev, curr) => {\n prev[curr] = toBase64URL(response[curr]);\n return prev;\n },\n {\n clientDataJSON: toBase64URL(response.clientDataJSON),\n } as EncodedAuthenticatorAssertionResponse,\n );\n}\n/**\n * EncodedPublicKeyCredentialDescriptor represents a type that extends the PublicKeyCredentialDescriptor interface\n * with an additional requirement for the 'id' property to be of type string.\n *\n * This type is used to encapsulate the properties of a public key credential, including its unique identifier,\n * in a form where the 'id' is explicitly defined as a string rather than an ArrayBuffer.\n *\n * It is typically utilized in contexts where serialized or encoded values of public key credentials are required.\n *\n * Properties:\n * - id: A string representation of the unique identifier for the public key credential.\n *\n * This type is a combination of PublicKeyCredentialDescriptor properties and overrides for specific use cases\n * requiring encoded identifiers.\n * @protected\n */\nexport type EncodedPublicKeyCredentialDescriptor =\n PublicKeyCredentialDescriptor & {\n id: string;\n };\n/**\n * EncodedPublicKeyCredentialRequestOptions is a composite type that extends\n * the PublicKeyCredentialRequestOptions interface. This type is designed\n * to represent request options for a WebAuthn authentication process,\n * with specific adjustments to handle encoded data formats.\n *\n * The primary purpose of this type is to ensure compatibility with encoded\n * challenges and allow credentials that are represented in an encoded format.\n *\n * Properties:\n * - Includes all properties from PublicKeyCredentialRequestOptions.\n * - `allowCredentials` (optional): An array of encoded credential descriptors\n * that specify which credentials may be used for the assertion.\n * - `challenge`: A cryptographic random challenge provided in encoded format,\n * used in the WebAuthn assertion process.\n *\n * This type is intended to support workflows where cryptographic data must\n * be encoded for transport or storage.\n *\n * @protected\n */\nexport type EncodedPublicKeyCredentialRequestOptions =\n PublicKeyCredentialRequestOptions & {\n allowCredentials?: EncodedPublicKeyCredentialDescriptor[];\n challenge: string;\n };\n/**\n * Decodes the given assertion request options by converting base64URL-encoded fields\n * into their corresponding ArrayBuffer representations and returns the decoded options.\n *\n * @param {EncodedPublicKeyCredentialRequestOptions} options - The encoded credential options to decode, containing properties such as `challenge` and `allowCredentials`.\n * @return {PublicKeyCredentialRequestOptions} The decoded credential request options with binary data fields properly converted.\n */\nexport function decodeOptions(\n options: EncodedPublicKeyCredentialRequestOptions,\n): PublicKeyCredentialRequestOptions {\n if (typeof options !== 'object' || typeof options.challenge !== 'string')\n throw new TypeError(INVALID_INPUT_MESSAGE);\n const decodedOptions: PublicKeyCredentialRequestOptions = { ...options };\n decodedOptions.challenge = fromBase64Url(options.challenge as string).buffer as ArrayBuffer;\n decodedOptions.allowCredentials =\n options.allowCredentials?.map(\n (cred: EncodedPublicKeyCredentialDescriptor) => {\n return {\n ...cred,\n id: fromBase64Url(cred.id as string).buffer as ArrayBuffer,\n } as PublicKeyCredentialDescriptor;\n },\n ) || [];\n return decodedOptions;\n}\n\n/**\n * @protected\n */\nexport type EncodedCredential = {\n [k: string]: string | EncodedAuthenticatorAssertionResponse;\n id: string;\n type: string;\n response: EncodedAuthenticatorAssertionResponse;\n rawId: string;\n};\n\n/**\n * Encodes the provided PublicKeyCredential into an EncodedCredential object.\n *\n * @param {PublicKeyCredential} credential - The PublicKeyCredential to be encoded.\n * @return {EncodedCredential} A new object containing the encoded properties of the credential.\n * @throws {Error} Throws an error if the input credential is invalid or cannot be processed.\n */\nexport function encodeCredential(\n credential: Credential | null,\n): EncodedCredential {\n if (!credential) throw new Error(INVALID_INPUT_MESSAGE);\n const response = (credential as PublicKeyCredential)\n .response as AuthenticatorAssertionResponse & Record;\n if (!response) throw new Error(CREDENTIAL_ACTION_FAILURE);\n return {\n id: credential.id,\n type: credential.type,\n rawId: toBase64URL((credential as PublicKeyCredential).rawId),\n response: encodeResponse(response),\n };\n}\n"],"names":[],"mappings":";;AA6BO,SAAS,eACd,UACA;AACA,SAAO,OAAO;AAAA,IACZ,+BAA+B;AAAA,EAAA,EAC/B;AAAA,IACA,CAAC,MAAM,SAAS;AACd,WAAK,IAAI,IAAI,YAAY,SAAS,IAAI,CAAC;AACvC,aAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE,gBAAgB,YAAY,SAAS,cAAc;AAAA,IAAA;AAAA,EACrD;AAEJ;AAsDO,SAAS,cACd,SACmC;;AACnC,MAAI,OAAO,YAAY,YAAY,OAAO,QAAQ,cAAc;AAC9D,UAAM,IAAI,UAAU,qBAAqB;AAC3C,QAAM,iBAAoD,EAAE,GAAG,QAAA;AAC/D,iBAAe,YAAY,cAAc,QAAQ,SAAmB,EAAE;AACtE,iBAAe,qBACb,aAAQ,qBAAR,mBAA0B;AAAA,IACxB,CAAC,SAA+C;AAC9C,aAAO;AAAA,QACL,GAAG;AAAA,QACH,IAAI,cAAc,KAAK,EAAY,EAAE;AAAA,MAAA;AAAA,IAEzC;AAAA,QACG,CAAA;AACP,SAAO;AACT;AAoBO,SAAS,iBACd,YACmB;AACnB,MAAI,CAAC,WAAY,OAAM,IAAI,MAAM,qBAAqB;AACtD,QAAM,WAAY,WACf;AACH,MAAI,CAAC,SAAU,OAAM,IAAI,MAAM,yBAAyB;AACxD,SAAO;AAAA,IACL,IAAI,WAAW;AAAA,IACf,MAAM,WAAW;AAAA,IACjB,OAAO,YAAa,WAAmC,KAAK;AAAA,IAC5D,UAAU,eAAe,QAAQ;AAAA,EAAA;AAErC;"} \ No newline at end of file diff --git a/lib/assertion.fetch.d.ts b/lib/assertion.fetch.d.ts new file mode 100644 index 0000000..a0fa6ec --- /dev/null +++ b/lib/assertion.fetch.d.ts @@ -0,0 +1,23 @@ +import { EncodedPublicKeyCredentialRequestOptions, EncodedCredential } from './assertion.encoder.js'; +/** + * Fetch Assertion Options + * + * POST Authenticator Selector to the REST API + * to receive the PublicKeyCredentialRequestOptions + * + * @param origin + * @param credId + * @todo: Generate Typed JSON-RPC clients from Swagger/OpenAPI + * @module fetch + */ +export declare function postOptions(origin: string, credId: string): Promise; +/** + * Fetch Assertion Response + * + * POST an Authenticator Assertion Response to the REST API + * + * @param origin + * @param credential + * @todo: Generate Typed JSON-RPC clients from Swagger/OpenAPI + */ +export declare function postResponse(origin: string, credential: EncodedCredential): Promise; diff --git a/lib/assertion.fetch.js b/lib/assertion.fetch.js new file mode 100644 index 0000000..d8d81b0 --- /dev/null +++ b/lib/assertion.fetch.js @@ -0,0 +1,34 @@ +import { INVALID_INPUT_MESSAGE, isValidResponse, INVALID_RESPONSE_MESSAGE } from "./errors.js"; +import { DEFAULT_FETCH_OPTIONS } from "./constants.js"; +async function postOptions(origin, credId) { + if (typeof origin !== "string" || typeof credId !== "string") { + throw new TypeError(INVALID_INPUT_MESSAGE); + } + return await fetch(`${origin}/assertion/request/${credId}`, { + ...DEFAULT_FETCH_OPTIONS + }).then((r) => { + if (!isValidResponse(r)) { + throw new Error(INVALID_RESPONSE_MESSAGE); + } + return r.json(); + }); +} +async function postResponse(origin, credential) { + if (typeof origin !== "string" || typeof credential !== "object") { + throw new TypeError(INVALID_INPUT_MESSAGE); + } + return await fetch(`${origin}/assertion/response`, { + ...DEFAULT_FETCH_OPTIONS, + body: JSON.stringify(credential) + }).then((r) => { + if (!isValidResponse(r)) { + throw new Error(INVALID_RESPONSE_MESSAGE); + } + return r.json(); + }); +} +export { + postOptions, + postResponse +}; +//# sourceMappingURL=assertion.fetch.js.map diff --git a/lib/assertion.fetch.js.map b/lib/assertion.fetch.js.map new file mode 100644 index 0000000..256626c --- /dev/null +++ b/lib/assertion.fetch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"assertion.fetch.js","sources":["../src/assertion.fetch.ts"],"sourcesContent":["import {\n INVALID_INPUT_MESSAGE,\n INVALID_RESPONSE_MESSAGE,\n isValidResponse,\n} from './errors.js';\nimport { DEFAULT_FETCH_OPTIONS } from './constants.js';\nimport { EncodedPublicKeyCredentialRequestOptions } from './assertion.encoder.js';\nimport { EncodedCredential } from './assertion.encoder.js';\n\n/**\n * Fetch Assertion Options\n *\n * POST Authenticator Selector to the REST API\n * to receive the PublicKeyCredentialRequestOptions\n *\n * @param origin\n * @param credId\n * @todo: Generate Typed JSON-RPC clients from Swagger/OpenAPI\n * @module fetch\n */\nexport async function postOptions(origin: string, credId: string) {\n if (typeof origin !== 'string' || typeof credId !== 'string') {\n throw new TypeError(INVALID_INPUT_MESSAGE);\n }\n return await fetch(`${origin}/assertion/request/${credId}`, {\n ...DEFAULT_FETCH_OPTIONS,\n }).then((r) => {\n if (!isValidResponse(r)) {\n throw new Error(INVALID_RESPONSE_MESSAGE);\n }\n return r.json() as Promise;\n });\n}\n\n/**\n * Fetch Assertion Response\n *\n * POST an Authenticator Assertion Response to the REST API\n *\n * @param origin\n * @param credential\n * @todo: Generate Typed JSON-RPC clients from Swagger/OpenAPI\n */\nexport async function postResponse(\n origin: string,\n credential: EncodedCredential,\n) {\n if (typeof origin !== 'string' || typeof credential !== 'object') {\n // TODO: instance check for SerializedCredential\n throw new TypeError(INVALID_INPUT_MESSAGE);\n }\n return await fetch(`${origin}/assertion/response`, {\n ...DEFAULT_FETCH_OPTIONS,\n body: JSON.stringify(credential),\n }).then((r) => {\n if (!isValidResponse(r)) {\n throw new Error(INVALID_RESPONSE_MESSAGE);\n }\n return r.json();\n });\n}\n"],"names":[],"mappings":";;AAoBA,eAAsB,YAAY,QAAgB,QAAgB;AAChE,MAAI,OAAO,WAAW,YAAY,OAAO,WAAW,UAAU;AAC5D,UAAM,IAAI,UAAU,qBAAqB;AAAA,EAC3C;AACA,SAAO,MAAM,MAAM,GAAG,MAAM,sBAAsB,MAAM,IAAI;AAAA,IAC1D,GAAG;AAAA,EAAA,CACJ,EAAE,KAAK,CAAC,MAAM;AACb,QAAI,CAAC,gBAAgB,CAAC,GAAG;AACvB,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AACA,WAAO,EAAE,KAAA;AAAA,EACX,CAAC;AACH;AAWA,eAAsB,aACpB,QACA,YACA;AACA,MAAI,OAAO,WAAW,YAAY,OAAO,eAAe,UAAU;AAEhE,UAAM,IAAI,UAAU,qBAAqB;AAAA,EAC3C;AACA,SAAO,MAAM,MAAM,GAAG,MAAM,uBAAuB;AAAA,IACjD,GAAG;AAAA,IACH,MAAM,KAAK,UAAU,UAAU;AAAA,EAAA,CAChC,EAAE,KAAK,CAAC,MAAM;AACb,QAAI,CAAC,gBAAgB,CAAC,GAAG;AACvB,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AACA,WAAO,EAAE,KAAA;AAAA,EACX,CAAC;AACH;"} \ No newline at end of file diff --git a/lib/assertion.js b/lib/assertion.js new file mode 100644 index 0000000..e9327d5 --- /dev/null +++ b/lib/assertion.js @@ -0,0 +1,47 @@ +import { postOptions, postResponse } from "./assertion.fetch.js"; +import * as assertion_fetch from "./assertion.fetch.js"; +import { decodeOptions, encodeCredential } from "./assertion.encoder.js"; +import * as assertion_encoder from "./assertion.encoder.js"; +import { AUTHENTICATOR_NOT_SUPPORTED_MESSAGE, INVALID_INPUT_MESSAGE } from "./errors.js"; +async function assertion(params) { + var _a; + if (typeof navigator === "undefined") + throw new Error(AUTHENTICATOR_NOT_SUPPORTED_MESSAGE); + if (typeof params === "undefined") throw new Error(INVALID_INPUT_MESSAGE); + const { origin, credId, options, debug } = params; + if (typeof credId !== "string" || typeof origin !== "string") { + throw new TypeError(INVALID_INPUT_MESSAGE); + } + debug && console.log( + `%cFETCHING: %c/assertion/request/${credId}`, + "color: yellow", + "color: cyan" + ); + const credentialOptions = typeof options !== "undefined" ? options : await postOptions(origin, credId).then(decodeOptions); + if (((_a = credentialOptions.allowCredentials) == null ? void 0 : _a.length) === 0) { + debug && console.info("No registered credentials found."); + return null; + } + debug && console.log( + "%cGET_CREDENTIAL:%c navigator.credentials.get", + "color: yellow", + "color: cyan", + options + ); + const credential = await navigator.credentials.get({ + publicKey: credentialOptions + }).then(encodeCredential); + debug && console.log( + "%cPOSTING: %c/assertion/response", + "color: yellow", + "color: cyan", + credential + ); + return postResponse(origin, credential); +} +export { + assertion, + assertion_encoder as encoder, + assertion_fetch as fetch +}; +//# sourceMappingURL=assertion.js.map diff --git a/lib/assertion.js.map b/lib/assertion.js.map new file mode 100644 index 0000000..8e4c02b --- /dev/null +++ b/lib/assertion.js.map @@ -0,0 +1 @@ +{"version":3,"file":"assertion.js","sources":["../src/assertion.ts"],"sourcesContent":["/**\n * This module is only for use within the browser.\n *\n * @packageDocumentation\n * @document ./assertion.guide.md\n */\nimport { postOptions, postResponse } from './assertion.fetch.js';\nimport { decodeOptions, encodeCredential } from './assertion.encoder.js';\nimport {\n AUTHENTICATOR_NOT_SUPPORTED_MESSAGE,\n INVALID_INPUT_MESSAGE,\n} from './errors.js';\n\nexport * as fetch from './assertion.fetch.js';\nexport * as encoder from './assertion.encoder.js';\n\n/**\n * Represents the options for an assertion used during authentication.\n */\nexport type AssertionOptions = {\n /**\n * Represents the origin service to which a request should be sent.\n */\n origin: string;\n /**\n * Represents the unique identifier for a credential.\n * This variable identifies a specific credential within the authenticator.\n */\n credId: string;\n /**\n * An optional configuration object that specifies options for a PublicKeyCredential request.\n *\n * This object is used during the process of requesting a credential from the user's device\n * for Web Authentication (WebAuthn). It allows customization of the request to match\n * the application's authentication requirements.\n *\n * Property details of `PublicKeyCredentialRequestOptions` typically include:\n * - `timeout`: The time, in milliseconds, that the user agent is expected to wait for a response.\n * - `userVerification`: Specifies the level of user verification required (e.g., \"required\", \"preferred\", \"discouraged\").\n *\n * This parameter is optional when calling authentication-related functions. If omitted,\n * the request may rely on default or previously established options.\n */\n options?: PublicKeyCredentialRequestOptions;\n /**\n * A boolean flag to enable or disable debug mode.\n * If set to `true`, the application may output additional\n * logging or diagnostic information useful for debugging.\n * Defaults to `false` if not specified.\n */\n debug?: boolean;\n};\n/**\n * Assert a known credential\n *\n * Handles both {@link fetch.postOptions} and {@link fetch.postResponse} for the caller.\n * This includes encoding/decoding the payloads from the service and navigator api.\n *\n * #### Quick Start:\n * {@includeCode ./assertion.spec.ts#assertionImport,quickStart}\n *\n *\n * @param {AssertionOptions} params\n */\nexport async function assertion(params: AssertionOptions) {\n if (typeof navigator === 'undefined')\n throw new Error(AUTHENTICATOR_NOT_SUPPORTED_MESSAGE);\n if (typeof params === 'undefined') throw new Error(INVALID_INPUT_MESSAGE);\n const { origin, credId, options, debug } = params;\n if (typeof credId !== 'string' || typeof origin !== 'string') {\n throw new TypeError(INVALID_INPUT_MESSAGE);\n }\n debug &&\n console.log(\n `%cFETCHING: %c/assertion/request/${credId}`,\n 'color: yellow',\n 'color: cyan',\n );\n\n // Use the passed-in options or fetch the options from the server\n const credentialOptions =\n typeof options !== 'undefined'\n ? options // TODO: validate options\n : await postOptions(origin, credId).then(decodeOptions);\n\n if (credentialOptions.allowCredentials?.length === 0) {\n debug && console.info('No registered credentials found.');\n return null;\n }\n\n debug &&\n console.log(\n '%cGET_CREDENTIAL:%c navigator.credentials.get',\n 'color: yellow',\n 'color: cyan',\n options,\n );\n\n // Retrieve the credential from the Credential api\n const credential = await navigator.credentials\n .get({\n publicKey: credentialOptions,\n })\n // Encode the credential for submitting to the service\n .then(encodeCredential);\n\n debug &&\n console.log(\n '%cPOSTING: %c/assertion/response',\n 'color: yellow',\n 'color: cyan',\n credential,\n );\n\n // Send the credential to the service\n return postResponse(origin, credential);\n}\n"],"names":[],"mappings":";;;;;AAgEA,eAAsB,UAAU,QAA0B;;AACxD,MAAI,OAAO,cAAc;AACvB,UAAM,IAAI,MAAM,mCAAmC;AACrD,MAAI,OAAO,WAAW,YAAa,OAAM,IAAI,MAAM,qBAAqB;AACxE,QAAM,EAAE,QAAQ,QAAQ,SAAS,UAAU;AAC3C,MAAI,OAAO,WAAW,YAAY,OAAO,WAAW,UAAU;AAC5D,UAAM,IAAI,UAAU,qBAAqB;AAAA,EAC3C;AACA,WACE,QAAQ;AAAA,IACN,oCAAoC,MAAM;AAAA,IAC1C;AAAA,IACA;AAAA,EAAA;AAIJ,QAAM,oBACJ,OAAO,YAAY,cACf,UACA,MAAM,YAAY,QAAQ,MAAM,EAAE,KAAK,aAAa;AAE1D,QAAI,uBAAkB,qBAAlB,mBAAoC,YAAW,GAAG;AACpD,aAAS,QAAQ,KAAK,kCAAkC;AACxD,WAAO;AAAA,EACT;AAEA,WACE,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAIJ,QAAM,aAAa,MAAM,UAAU,YAChC,IAAI;AAAA,IACH,WAAW;AAAA,EAAA,CACZ,EAEA,KAAK,gBAAgB;AAExB,WACE,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAIJ,SAAO,aAAa,QAAQ,UAAU;AACxC;"} \ No newline at end of file diff --git a/lib/attestation.d.ts b/lib/attestation.d.ts new file mode 100644 index 0000000..b213e63 --- /dev/null +++ b/lib/attestation.d.ts @@ -0,0 +1,20 @@ +export * as fetch from './attestation.fetch.js'; +export * as encoder from './attestation.encoder.js'; +type AttestationOptions = { + origin: string; + onChallenge: (options: any) => any; + options?: any; + debug?: boolean; +}; +/** + * Performs an attestation process that involves fetching options, + * handling a challenge, and creating a credential using the Web Authentication API. + * + * @param {Object} params - The configuration options for the attestation process. + * @param {string} params.origin - The origin URL to which requests are made. + * @param {Function} params.onChallenge - A function to handle the challenge returned by the service. + * @param {Object} [params.options=DEFAULT_ATTESTATION_OPTIONS] - Options to customize the attestation process. + * @param {boolean} [params.debug=false] - Flag to enable or disable debug logging. + * @return {Promise} The response from the server after completing the attestation process. + */ +export declare function attestation(params: AttestationOptions): Promise; diff --git a/lib/attestation.encoder.d.ts b/lib/attestation.encoder.d.ts new file mode 100644 index 0000000..a80baeb --- /dev/null +++ b/lib/attestation.encoder.d.ts @@ -0,0 +1,112 @@ +/** + * This interface represents the encoded authenticator attestation response + * typically used in WebAuthn during a registration ceremony. It contains + * properties that capture the client and attestation data returned by + * the authenticator, along with optional user and signature information. + * + * Properties: + * - clientDataJSON: A string containing the JSON serialized client data collected during the operation. + * - attestationObject: A string containing the base64url encoded attestation object generated by the authenticator. + * - signature: An optional string representing the signature generated by the authenticator for this response. + * - userHandle: An optional string containing the user handle associated with the credentials being registered. + * - [k: string]: A utility to define additional optional properties as a key-value pair where the key is a string, and the value is either a string or undefined. + * + * @protected + */ +export interface EncodedAuthenticatorAttestationResponse { + [k: string]: string | undefined; + /** + * A string representing the JSON-encoded client data associated with a web authentication operation. + * This property typically contains information about the client, such as the type of operation + * (e.g., "webauthn.create" or "webauthn.get"), challenge data, and other contextual metadata. + * It is used as part of the Web Authentication API for validation and security purposes. + */ + clientDataJSON: string; + /** + * Represents the attestation object used in Web Authentication (WebAuthn) operations. + * The attestation object is a base64url-encoded string containing authentication metadata. + * It is generated during the creation of a WebAuthn credential and used to verify + * the authenticity and origin of the credential. + * + * Typically, the attestation object includes details such as: + * - Information about the authenticator device. + * - Relevant cryptographic signatures. + * - Attestation format identifier and other metadata. + * + * This string is crucial for validating the generated credential's trustworthiness + * and ensuring secure communication between the relying party and the authenticator. + */ + attestationObject: string; + /** + * An optional string property that may contain a signature. + */ + signature?: string; + /** + * Represents the unique identifier or handle of a user. + * This is typically used to reference or display a user's identity + * within a system where handles or usernames are required. + * This property is optional and may not always be provided. + */ + userHandle?: string; +} +/** + * EncodedAttestationCredential represents an interface for a credential object + * used in attestation within a Web Authentication API process. It includes + * essential properties and can also have additional key-value pairs. + * + * Properties: + * - `id`: A string representing the identifier of the credential. + * - `type`: A string indicating the type of the credential, typically "public-key". + * - `response`: An object of EncodedAuthenticatorAttestationResponse type which + * contains encoded attestation response data. + * - `rawId`: A string containing the base64url-encoded representation of the + * credential's raw identifier. + * - `[k: string]`: Allows for additional properties, which can be strings or of + * the EncodedAuthenticatorAttestationResponse type. + * + * @protected + */ +export interface EncodedAttestationCredential { + [k: string]: string | EncodedAuthenticatorAttestationResponse; + /** + * Represents a unique identifier as a string. + * This identifier is typically used to denote a single distinct entity + * within a given system or context. + */ + id: string; + /** + * Represents a variable of string type. + * Used to store textual data. + */ + type: string; + /** + * Represents the attestation response from a WebAuthn authenticator after a + * registration ceremony using the PublicKeyCredential.create() method. + * The `response` contains the encoded information necessary to validate + * and finalize the registration of the credential. + */ + response: EncodedAuthenticatorAttestationResponse; + /** + * Represents the unique identifier in its raw format. + * Commonly used for internal processing or as a reference to entities in systems. + * This value should be treated as opaque and not human-readable. + */ + rawId: string; +} +/** + * Encodes the given attestation credential into a structured format. + * + * @param {PublicKeyCredential} credential - The credential object to be encoded, + * typically obtained during the registration phase of WebAuthn. + * @return An object containing the encoded credential information, + * including its ID, type, and response fields in base64 URL format. + */ +export declare function encodeCredential(credential: PublicKeyCredential): EncodedAttestationCredential; +/** + * Decodes and processes the attestation options with additional address and challenge decoding. + * + * @param {Object} options - The original attestation options, including user and credentials information. + * @param {Object} liquidOptions - Contains additional data such as the address used for decoding. + * @return Returns the updated attestation options with decoded user address, display name, and challenge. + */ +export declare function decodeOptions(options: any, liquidOptions: any): any; diff --git a/lib/attestation.encoder.js b/lib/attestation.encoder.js new file mode 100644 index 0000000..2c51cc3 --- /dev/null +++ b/lib/attestation.encoder.js @@ -0,0 +1,31 @@ +import { decodeAddress, fromBase64Url, toBase64URL } from "./encoding.js"; +function encodeCredential(credential) { + const response = credential.response; + return { + id: credential.id, + rawId: toBase64URL(credential.rawId), + type: credential.type, + response: { + clientDataJSON: toBase64URL(response.clientDataJSON), + attestationObject: toBase64URL(response.attestationObject) + } + }; +} +function decodeOptions(options, liquidOptions) { + const attestationOptions = { ...options }; + attestationOptions.user.id = decodeAddress(liquidOptions.address); + attestationOptions.user.name = liquidOptions.address; + attestationOptions.user.displayName = liquidOptions.address; + attestationOptions.challenge = fromBase64Url(options.challenge); + if (attestationOptions.excludeCredentials) { + for (const cred of attestationOptions.excludeCredentials) { + cred.id = fromBase64Url(cred.id); + } + } + return attestationOptions; +} +export { + decodeOptions, + encodeCredential +}; +//# sourceMappingURL=attestation.encoder.js.map diff --git a/lib/attestation.encoder.js.map b/lib/attestation.encoder.js.map new file mode 100644 index 0000000..d77a44d --- /dev/null +++ b/lib/attestation.encoder.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attestation.encoder.js","sources":["../src/attestation.encoder.ts"],"sourcesContent":["import { decodeAddress, fromBase64Url, toBase64URL } from './encoding.js';\n\n/**\n * This interface represents the encoded authenticator attestation response\n * typically used in WebAuthn during a registration ceremony. It contains\n * properties that capture the client and attestation data returned by\n * the authenticator, along with optional user and signature information.\n *\n * Properties:\n * - clientDataJSON: A string containing the JSON serialized client data collected during the operation.\n * - attestationObject: A string containing the base64url encoded attestation object generated by the authenticator.\n * - signature: An optional string representing the signature generated by the authenticator for this response.\n * - userHandle: An optional string containing the user handle associated with the credentials being registered.\n * - [k: string]: A utility to define additional optional properties as a key-value pair where the key is a string, and the value is either a string or undefined.\n *\n * @protected\n */\nexport interface EncodedAuthenticatorAttestationResponse {\n [k: string]: string | undefined;\n\n /**\n * A string representing the JSON-encoded client data associated with a web authentication operation.\n * This property typically contains information about the client, such as the type of operation\n * (e.g., \"webauthn.create\" or \"webauthn.get\"), challenge data, and other contextual metadata.\n * It is used as part of the Web Authentication API for validation and security purposes.\n */\n clientDataJSON: string;\n /**\n * Represents the attestation object used in Web Authentication (WebAuthn) operations.\n * The attestation object is a base64url-encoded string containing authentication metadata.\n * It is generated during the creation of a WebAuthn credential and used to verify\n * the authenticity and origin of the credential.\n *\n * Typically, the attestation object includes details such as:\n * - Information about the authenticator device.\n * - Relevant cryptographic signatures.\n * - Attestation format identifier and other metadata.\n *\n * This string is crucial for validating the generated credential's trustworthiness\n * and ensuring secure communication between the relying party and the authenticator.\n */\n attestationObject: string;\n /**\n * An optional string property that may contain a signature.\n */\n signature?: string;\n /**\n * Represents the unique identifier or handle of a user.\n * This is typically used to reference or display a user's identity\n * within a system where handles or usernames are required.\n * This property is optional and may not always be provided.\n */\n userHandle?: string;\n}\n\n/**\n * EncodedAttestationCredential represents an interface for a credential object\n * used in attestation within a Web Authentication API process. It includes\n * essential properties and can also have additional key-value pairs.\n *\n * Properties:\n * - `id`: A string representing the identifier of the credential.\n * - `type`: A string indicating the type of the credential, typically \"public-key\".\n * - `response`: An object of EncodedAuthenticatorAttestationResponse type which\n * contains encoded attestation response data.\n * - `rawId`: A string containing the base64url-encoded representation of the\n * credential's raw identifier.\n * - `[k: string]`: Allows for additional properties, which can be strings or of\n * the EncodedAuthenticatorAttestationResponse type.\n *\n * @protected\n */\nexport interface EncodedAttestationCredential {\n [k: string]: string | EncodedAuthenticatorAttestationResponse;\n\n /**\n * Represents a unique identifier as a string.\n * This identifier is typically used to denote a single distinct entity\n * within a given system or context.\n */\n id: string;\n /**\n * Represents a variable of string type.\n * Used to store textual data.\n */\n type: string;\n /**\n * Represents the attestation response from a WebAuthn authenticator after a\n * registration ceremony using the PublicKeyCredential.create() method.\n * The `response` contains the encoded information necessary to validate\n * and finalize the registration of the credential.\n */\n response: EncodedAuthenticatorAttestationResponse;\n /**\n * Represents the unique identifier in its raw format.\n * Commonly used for internal processing or as a reference to entities in systems.\n * This value should be treated as opaque and not human-readable.\n */\n rawId: string;\n}\n\n/**\n * Encodes the given attestation credential into a structured format.\n *\n * @param {PublicKeyCredential} credential - The credential object to be encoded,\n * typically obtained during the registration phase of WebAuthn.\n * @return An object containing the encoded credential information,\n * including its ID, type, and response fields in base64 URL format.\n */\nexport function encodeCredential(\n credential: PublicKeyCredential,\n): EncodedAttestationCredential {\n const response = credential.response as AuthenticatorAttestationResponse;\n return {\n id: credential.id,\n rawId: toBase64URL(credential.rawId),\n type: credential.type,\n response: {\n clientDataJSON: toBase64URL(response.clientDataJSON),\n attestationObject: toBase64URL(response.attestationObject),\n },\n };\n}\n\n/**\n * Decodes and processes the attestation options with additional address and challenge decoding.\n *\n * @param {Object} options - The original attestation options, including user and credentials information.\n * @param {Object} liquidOptions - Contains additional data such as the address used for decoding.\n * @return Returns the updated attestation options with decoded user address, display name, and challenge.\n */\nexport function decodeOptions(options: any, liquidOptions: any) {\n const attestationOptions = { ...options };\n attestationOptions.user.id = decodeAddress(liquidOptions.address);\n attestationOptions.user.name = liquidOptions.address;\n attestationOptions.user.displayName = liquidOptions.address;\n attestationOptions.challenge = fromBase64Url(options.challenge);\n\n if (attestationOptions.excludeCredentials) {\n for (const cred of attestationOptions.excludeCredentials) {\n cred.id = fromBase64Url(cred.id);\n }\n }\n\n return attestationOptions;\n}\n"],"names":[],"mappings":";AA6GO,SAAS,iBACd,YAC8B;AAC9B,QAAM,WAAW,WAAW;AAC5B,SAAO;AAAA,IACL,IAAI,WAAW;AAAA,IACf,OAAO,YAAY,WAAW,KAAK;AAAA,IACnC,MAAM,WAAW;AAAA,IACjB,UAAU;AAAA,MACR,gBAAgB,YAAY,SAAS,cAAc;AAAA,MACnD,mBAAmB,YAAY,SAAS,iBAAiB;AAAA,IAAA;AAAA,EAC3D;AAEJ;AASO,SAAS,cAAc,SAAc,eAAoB;AAC9D,QAAM,qBAAqB,EAAE,GAAG,QAAA;AAChC,qBAAmB,KAAK,KAAK,cAAc,cAAc,OAAO;AAChE,qBAAmB,KAAK,OAAO,cAAc;AAC7C,qBAAmB,KAAK,cAAc,cAAc;AACpD,qBAAmB,YAAY,cAAc,QAAQ,SAAS;AAE9D,MAAI,mBAAmB,oBAAoB;AACzC,eAAW,QAAQ,mBAAmB,oBAAoB;AACxD,WAAK,KAAK,cAAc,KAAK,EAAE;AAAA,IACjC;AAAA,EACF;AAEA,SAAO;AACT;"} \ No newline at end of file diff --git a/lib/attestation.fetch.d.ts b/lib/attestation.fetch.d.ts new file mode 100644 index 0000000..96ad896 --- /dev/null +++ b/lib/attestation.fetch.d.ts @@ -0,0 +1,54 @@ +import { EncodedAttestationCredential } from './attestation.encoder.js'; +/** + * The `DEFAULT_ATTESTATION_OPTIONS` variable defines the default configuration + * options for attestation during the authentication process. + * + * Properties: + * - `attestationType`: Specifies the type of attestation. Defaults to 'none'. + * - `authenticatorSelection`: Describes the settings for the authenticator to be used. + * - `authenticatorAttachment`: Defines whether the authenticator is platform-bound or not. Defaults to 'platform'. + * - `userVerification`: Indicates the requirement for user verification. Defaults to 'required'. + * - `requireResidentKey`: Determines whether the creation of a resident key is required. Defaults to false. + * - `extensions`: Includes additional, optional WebAuthn extension settings. + * - `liquid`: A custom extension enabled by default with a value of true. + * + * @internal + */ +export declare const DEFAULT_ATTESTATION_OPTIONS: { + attestationType: string; + authenticatorSelection: { + authenticatorAttachment: string; + userVerification: string; + requireResidentKey: boolean; + }; + extensions: { + liquid: boolean; + }; +}; +/** + * Fetches an attestation request from the specified origin with the provided options. + * + * @param {string} origin - The URL of the origin from which the attestation request will be fetched. + * @param {object} [options=DEFAULT_ATTESTATION_OPTIONS] - The options to include in the attestation request payload. Defaults to `DEFAULT_ATTESTATION_OPTIONS`. + * @return {Promise} A promise that resolves to the response of the fetch request. + * @todo: Generate Typed JSON-RPC clients from Swagger/OpenAPI + */ +export declare function postOptions(origin: string, options?: { + attestationType: string; + authenticatorSelection: { + authenticatorAttachment: string; + userVerification: string; + requireResidentKey: boolean; + }; + extensions: { + liquid: boolean; + }; +}): Promise; +/** + * Fetch interface for Attestation Response + * + * @param origin + * @param credential + * @todo: Generate Typed JSON-RPC clients from Swagger/OpenAPI + */ +export declare function postResponse(origin: string, credential: EncodedAttestationCredential): Promise; diff --git a/lib/attestation.fetch.js b/lib/attestation.fetch.js new file mode 100644 index 0000000..132b8a4 --- /dev/null +++ b/lib/attestation.fetch.js @@ -0,0 +1,37 @@ +import { DEFAULT_FETCH_OPTIONS } from "./constants.js"; +import { isValidResponse } from "./errors.js"; +const DEFAULT_ATTESTATION_OPTIONS = { + attestationType: "none", + authenticatorSelection: { + authenticatorAttachment: "platform", + userVerification: "required", + requireResidentKey: false + }, + extensions: { + liquid: true + } +}; +async function postOptions(origin, options = DEFAULT_ATTESTATION_OPTIONS) { + return await fetch(`${origin}/attestation/request`, { + ...DEFAULT_FETCH_OPTIONS, + body: JSON.stringify(options) + }).then((r) => { + if (!isValidResponse(r)) throw new Error(r.statusText); + return r.json(); + }); +} +async function postResponse(origin, credential) { + return await fetch(`${origin}/attestation/response`, { + ...DEFAULT_FETCH_OPTIONS, + body: JSON.stringify(credential) + }).then((r) => { + if (!isValidResponse(r)) throw new Error(r.statusText); + return r.json(); + }); +} +export { + DEFAULT_ATTESTATION_OPTIONS, + postOptions, + postResponse +}; +//# sourceMappingURL=attestation.fetch.js.map diff --git a/lib/attestation.fetch.js.map b/lib/attestation.fetch.js.map new file mode 100644 index 0000000..4882968 --- /dev/null +++ b/lib/attestation.fetch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attestation.fetch.js","sources":["../src/attestation.fetch.ts"],"sourcesContent":["import { DEFAULT_FETCH_OPTIONS } from './constants.js';\nimport { isValidResponse } from './errors.js';\nimport { EncodedAttestationCredential } from './attestation.encoder.js';\n\n/**\n * The `DEFAULT_ATTESTATION_OPTIONS` variable defines the default configuration\n * options for attestation during the authentication process.\n *\n * Properties:\n * - `attestationType`: Specifies the type of attestation. Defaults to 'none'.\n * - `authenticatorSelection`: Describes the settings for the authenticator to be used.\n * - `authenticatorAttachment`: Defines whether the authenticator is platform-bound or not. Defaults to 'platform'.\n * - `userVerification`: Indicates the requirement for user verification. Defaults to 'required'.\n * - `requireResidentKey`: Determines whether the creation of a resident key is required. Defaults to false.\n * - `extensions`: Includes additional, optional WebAuthn extension settings.\n * - `liquid`: A custom extension enabled by default with a value of true.\n *\n * @internal\n */\nexport const DEFAULT_ATTESTATION_OPTIONS = {\n attestationType: 'none',\n authenticatorSelection: {\n authenticatorAttachment: 'platform',\n userVerification: 'required',\n requireResidentKey: false,\n },\n extensions: {\n liquid: true,\n },\n};\n\n/**\n * Fetches an attestation request from the specified origin with the provided options.\n *\n * @param {string} origin - The URL of the origin from which the attestation request will be fetched.\n * @param {object} [options=DEFAULT_ATTESTATION_OPTIONS] - The options to include in the attestation request payload. Defaults to `DEFAULT_ATTESTATION_OPTIONS`.\n * @return {Promise} A promise that resolves to the response of the fetch request.\n * @todo: Generate Typed JSON-RPC clients from Swagger/OpenAPI\n */\nexport async function postOptions(\n origin: string,\n options = DEFAULT_ATTESTATION_OPTIONS,\n) {\n return await fetch(`${origin}/attestation/request`, {\n ...DEFAULT_FETCH_OPTIONS,\n body: JSON.stringify(options),\n }).then((r) => {\n if (!isValidResponse(r)) throw new Error(r.statusText);\n return r.json();\n });\n}\n\n/**\n * Fetch interface for Attestation Response\n *\n * @param origin\n * @param credential\n * @todo: Generate Typed JSON-RPC clients from Swagger/OpenAPI\n */\nexport async function postResponse(\n origin: string,\n credential: EncodedAttestationCredential,\n) {\n return await fetch(`${origin}/attestation/response`, {\n ...DEFAULT_FETCH_OPTIONS,\n body: JSON.stringify(credential),\n }).then((r) => {\n if (!isValidResponse(r)) throw new Error(r.statusText);\n return r.json();\n });\n}\n"],"names":[],"mappings":";;AAmBO,MAAM,8BAA8B;AAAA,EACzC,iBAAiB;AAAA,EACjB,wBAAwB;AAAA,IACtB,yBAAyB;AAAA,IACzB,kBAAkB;AAAA,IAClB,oBAAoB;AAAA,EAAA;AAAA,EAEtB,YAAY;AAAA,IACV,QAAQ;AAAA,EAAA;AAEZ;AAUA,eAAsB,YACpB,QACA,UAAU,6BACV;AACA,SAAO,MAAM,MAAM,GAAG,MAAM,wBAAwB;AAAA,IAClD,GAAG;AAAA,IACH,MAAM,KAAK,UAAU,OAAO;AAAA,EAAA,CAC7B,EAAE,KAAK,CAAC,MAAM;AACb,QAAI,CAAC,gBAAgB,CAAC,SAAS,IAAI,MAAM,EAAE,UAAU;AACrD,WAAO,EAAE,KAAA;AAAA,EACX,CAAC;AACH;AASA,eAAsB,aACpB,QACA,YACA;AACA,SAAO,MAAM,MAAM,GAAG,MAAM,yBAAyB;AAAA,IACnD,GAAG;AAAA,IACH,MAAM,KAAK,UAAU,UAAU;AAAA,EAAA,CAChC,EAAE,KAAK,CAAC,MAAM;AACb,QAAI,CAAC,gBAAgB,CAAC,SAAS,IAAI,MAAM,EAAE,UAAU;AACrD,WAAO,EAAE,KAAA;AAAA,EACX,CAAC;AACH;"} \ No newline at end of file diff --git a/lib/attestation.js b/lib/attestation.js new file mode 100644 index 0000000..f571de7 --- /dev/null +++ b/lib/attestation.js @@ -0,0 +1,59 @@ +import { fromBase64Url } from "./encoding.js"; +import { AUTHENTICATOR_NOT_SUPPORTED_MESSAGE, INVALID_INPUT_MESSAGE } from "./errors.js"; +import { DEFAULT_ATTESTATION_OPTIONS, postOptions, postResponse } from "./attestation.fetch.js"; +import * as attestation_fetch from "./attestation.fetch.js"; +import { decodeOptions, encodeCredential } from "./attestation.encoder.js"; +import * as attestation_encoder from "./attestation.encoder.js"; +async function attestation(params) { + if (typeof navigator === "undefined") + throw new Error(AUTHENTICATOR_NOT_SUPPORTED_MESSAGE); + if (typeof params === "undefined") throw new Error(INVALID_INPUT_MESSAGE); + const { + origin, + onChallenge, + options = DEFAULT_ATTESTATION_OPTIONS, + debug + } = params; + if (typeof origin !== "string") { + throw new TypeError(INVALID_INPUT_MESSAGE); + } + debug && console.log( + `%cFETCHING: %c/attestation/request/`, + "color: yellow", + "color: cyan" + ); + const credentialOptions = await postOptions(origin, options); + debug && console.log( + "%cHANDLE_SIGNATURE:%c onChallenge", + "color: yellow", + "color: cyan", + "*".repeat(credentialOptions.challenge.length) + ); + const liquidOptions = await onChallenge( + fromBase64Url(credentialOptions.challenge) + ); + debug && console.log( + "%cDECODE:%c assertion.encoder.decodeOptions", + "color: yellow", + "color: cyan", + "*".repeat(liquidOptions.signature.length) + ); + const mergedOptions = decodeOptions(credentialOptions, liquidOptions); + const credential = await navigator.credentials.create({ + publicKey: mergedOptions + }).then(encodeCredential); + credential.clientExtensionResults = { liquid: liquidOptions }; + debug && console.log( + "%cPOSTING: %c/attestation/response", + "color: yellow", + "color: cyan", + credential + ); + return await postResponse(origin, credential); +} +export { + attestation, + attestation_encoder as encoder, + attestation_fetch as fetch +}; +//# sourceMappingURL=attestation.js.map diff --git a/lib/attestation.js.map b/lib/attestation.js.map new file mode 100644 index 0000000..80fa607 --- /dev/null +++ b/lib/attestation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"attestation.js","sources":["../src/attestation.ts"],"sourcesContent":["/**\n * This module is only for the browser and currently not used in the project.\n * However, it could be useful for extension wallets or other browser-based wallets.\n *\n * @packageDocumentation\n * @document ./attestation.guide.md\n */\nimport { fromBase64Url } from './encoding.js';\nimport {\n AUTHENTICATOR_NOT_SUPPORTED_MESSAGE,\n INVALID_INPUT_MESSAGE,\n} from './errors.js';\nimport {\n DEFAULT_ATTESTATION_OPTIONS,\n postOptions,\n postResponse,\n} from './attestation.fetch.js';\nimport { decodeOptions, encodeCredential } from './attestation.encoder.js';\n\nexport * as fetch from './attestation.fetch.js';\nexport * as encoder from './attestation.encoder.js';\n\ntype AttestationOptions = {\n origin: string;\n onChallenge: (options: any) => any;\n options?: any;\n debug?: boolean;\n};\n\n/**\n * Performs an attestation process that involves fetching options,\n * handling a challenge, and creating a credential using the Web Authentication API.\n *\n * @param {Object} params - The configuration options for the attestation process.\n * @param {string} params.origin - The origin URL to which requests are made.\n * @param {Function} params.onChallenge - A function to handle the challenge returned by the service.\n * @param {Object} [params.options=DEFAULT_ATTESTATION_OPTIONS] - Options to customize the attestation process.\n * @param {boolean} [params.debug=false] - Flag to enable or disable debug logging.\n * @return {Promise} The response from the server after completing the attestation process.\n */\nexport async function attestation(params: AttestationOptions) {\n if (typeof navigator === 'undefined')\n throw new Error(AUTHENTICATOR_NOT_SUPPORTED_MESSAGE);\n if (typeof params === 'undefined') throw new Error(INVALID_INPUT_MESSAGE);\n const {\n origin,\n onChallenge,\n options = DEFAULT_ATTESTATION_OPTIONS,\n debug,\n } = params;\n if (typeof origin !== 'string') {\n throw new TypeError(INVALID_INPUT_MESSAGE);\n }\n debug &&\n console.log(\n `%cFETCHING: %c/attestation/request/`,\n 'color: yellow',\n 'color: cyan',\n );\n\n // Fetch the options from the service\n const credentialOptions = await postOptions(origin, options);\n\n debug &&\n console.log(\n '%cHANDLE_SIGNATURE:%c onChallenge',\n 'color: yellow',\n 'color: cyan',\n '*'.repeat(credentialOptions.challenge.length),\n );\n\n // Handle the additional signature challenge\n const liquidOptions = await onChallenge(\n fromBase64Url(credentialOptions.challenge),\n );\n\n debug &&\n console.log(\n '%cDECODE:%c assertion.encoder.decodeOptions',\n 'color: yellow',\n 'color: cyan',\n '*'.repeat(liquidOptions.signature.length),\n );\n\n // Decode the options and merge the extension\n const mergedOptions = decodeOptions(credentialOptions, liquidOptions);\n\n // Create the credential using the Credential API\n const credential = await navigator.credentials\n .create({\n publicKey: mergedOptions,\n })\n // Encode the credential for submitting to the service\n .then(encodeCredential);\n\n // Attach the extension results\n // TODO: this should be provided by the CredentialProvider Service\n credential.clientExtensionResults = { liquid: liquidOptions } as any;\n\n debug &&\n console.log(\n '%cPOSTING: %c/attestation/response',\n 'color: yellow',\n 'color: cyan',\n credential,\n );\n\n // Send the credential to the service\n return await postResponse(origin, credential);\n}\n"],"names":[],"mappings":";;;;;;AAwCA,eAAsB,YAAY,QAA4B;AAC5D,MAAI,OAAO,cAAc;AACvB,UAAM,IAAI,MAAM,mCAAmC;AACrD,MAAI,OAAO,WAAW,YAAa,OAAM,IAAI,MAAM,qBAAqB;AACxE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,EAAA,IACE;AACJ,MAAI,OAAO,WAAW,UAAU;AAC9B,UAAM,IAAI,UAAU,qBAAqB;AAAA,EAC3C;AACA,WACE,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAIJ,QAAM,oBAAoB,MAAM,YAAY,QAAQ,OAAO;AAE3D,WACE,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,IAAI,OAAO,kBAAkB,UAAU,MAAM;AAAA,EAAA;AAIjD,QAAM,gBAAgB,MAAM;AAAA,IAC1B,cAAc,kBAAkB,SAAS;AAAA,EAAA;AAG3C,WACE,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,IAAI,OAAO,cAAc,UAAU,MAAM;AAAA,EAAA;AAI7C,QAAM,gBAAgB,cAAc,mBAAmB,aAAa;AAGpE,QAAM,aAAa,MAAM,UAAU,YAChC,OAAO;AAAA,IACN,WAAW;AAAA,EAAA,CACZ,EAEA,KAAK,gBAAgB;AAIxB,aAAW,yBAAyB,EAAE,QAAQ,cAAA;AAE9C,WACE,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAIJ,SAAO,MAAM,aAAa,QAAQ,UAAU;AAC9C;"} \ No newline at end of file diff --git a/lib/constants.d.ts b/lib/constants.d.ts new file mode 100644 index 0000000..4df911e --- /dev/null +++ b/lib/constants.d.ts @@ -0,0 +1,24 @@ +import { QRCodeToDataURLOptions } from 'qrcode'; +/** + * DEFAULT_FETCH_OPTIONS is a constant object used as a default configuration + * for HTTP fetch requests. It defines the HTTP method and headers settings + * to ensure consistent and appropriate behavior across network requests. + * + * The object specifies the following: + * - `method`: The HTTP method to be used for the request, set to 'POST' by default. + * - `headers`: A set of HTTP headers, including 'Content-Type', which is set + * to 'application/json' to indicate that the request body is formatted as JSON. + * + * This configuration is intended to simplify the process of making + * standardized fetch requests and can be extended or overridden + * based on the application's specific requirements. + * + * @internal + */ +export declare const DEFAULT_FETCH_OPTIONS: { + method: string; + headers: { + 'Content-Type': string; + }; +}; +export declare const DEFAULT_QR_CODE_OPTIONS: QRCodeToDataURLOptions; diff --git a/lib/constants.js b/lib/constants.js new file mode 100644 index 0000000..35ef357 --- /dev/null +++ b/lib/constants.js @@ -0,0 +1,19 @@ +const DEFAULT_FETCH_OPTIONS = { + method: "POST", + headers: { + "Content-Type": "application/json" + } +}; +const DEFAULT_QR_CODE_OPTIONS = { + width: 500, + margin: 4, + color: { + dark: "#332257", + light: "#ffffff" + } +}; +export { + DEFAULT_FETCH_OPTIONS, + DEFAULT_QR_CODE_OPTIONS +}; +//# sourceMappingURL=constants.js.map diff --git a/lib/constants.js.map b/lib/constants.js.map new file mode 100644 index 0000000..2fcde86 --- /dev/null +++ b/lib/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["/**\n * Module For Defaults\n *\n *\n * @packageDocumentation\n * @protected\n */\n\nimport type { QRCodeToDataURLOptions } from 'qrcode';\n\n/**\n * DEFAULT_FETCH_OPTIONS is a constant object used as a default configuration\n * for HTTP fetch requests. It defines the HTTP method and headers settings\n * to ensure consistent and appropriate behavior across network requests.\n *\n * The object specifies the following:\n * - `method`: The HTTP method to be used for the request, set to 'POST' by default.\n * - `headers`: A set of HTTP headers, including 'Content-Type', which is set\n * to 'application/json' to indicate that the request body is formatted as JSON.\n *\n * This configuration is intended to simplify the process of making\n * standardized fetch requests and can be extended or overridden\n * based on the application's specific requirements.\n *\n * @internal\n */\nexport const DEFAULT_FETCH_OPTIONS = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n};\n\nexport const DEFAULT_QR_CODE_OPTIONS: QRCodeToDataURLOptions = {\n width: 500,\n margin: 4,\n color: {\n dark: '#332257',\n light: '#ffffff',\n },\n};\n"],"names":[],"mappings":"AA0BO,MAAM,wBAAwB;AAAA,EACnC,QAAQ;AAAA,EACR,SAAS;AAAA,IACP,gBAAgB;AAAA,EAAA;AAEpB;AAEO,MAAM,0BAAkD;AAAA,EAC7D,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAEX;"} \ No newline at end of file diff --git a/lib/encoding.d.ts b/lib/encoding.d.ts new file mode 100644 index 0000000..504df4c --- /dev/null +++ b/lib/encoding.d.ts @@ -0,0 +1,56 @@ +/** + * A constant string containing the error message for a malformed address. + * This message is used to indicate that an address does not adhere to the expected format or structure. + * + * @protected + */ +export declare const MALFORMED_ADDRESS_ERROR_MSG = "Malformed address"; +/** + * A constant string that represents an error message for an Algorand address with a bad checksum. + * This message is used to indicate that the checksum of the provided Algorand address is invalid, + * which typically occurs when the address is incorrectly formed or corrupted. + * + * @protected + */ +export declare const ALGORAND_ADDRESS_BAD_CHECKSUM_ERROR_MSG = "Bad checksum"; +/** + * A constant string representing an error message for invalid base64url input. + * This value is used to indicate that the provided input does not conform to the + * expected base64url format or specification. + * + * @protected + */ +export declare const INVALID_BASE64URL_INPUT = "Invalid base64url input"; +/** + * Converts a given Uint8Array or ArrayBuffer to a Base64 URL-safe encoded string. + * + * @param {Uint8Array | ArrayBuffer} arr - The input data to be converted to a Base64 URL-safe string. + * @return {string} A Base64 URL-safe encoded string representation of the input data. + */ +export declare function toBase64URL(arr: Uint8Array | ArrayBuffer): string; +/** + * Converts a Base64 URL-encoded string into a Uint8Array. + * + * @param {string} base64url - The Base64 URL-encoded string to be converted. + * This string must be a valid Base64 URL-safe format. + * @return {Uint8Array} A Uint8Array representing the decoded binary data from the input Base64 URL string. + * @throws {Error} If the provided input is not a string or is an invalid Base64 URL format. + */ +export declare function fromBase64Url(base64url: string): Uint8Array; +/** + * Encodes a given address into a string representation, including its checksum. + * + * @param {Uint8Array} address The public key to be encoded into an address. + * @return {string} The encoded address as a string representation. + * + * @deprecated - use algo-models or algokit-utils + */ +export declare function encodeAddress(address: Uint8Array): string; +/** + * decodeAddress takes an Algorand address in string form and decodes it into a Uint8Array. + * @param address - an Algorand address with checksum. + * @returns the decoded form of the address's public key and checksum + * + * @deprecated use algo-models or algokit-utils + */ +export declare function decodeAddress(address: string): Uint8Array; diff --git a/lib/encoding.js b/lib/encoding.js new file mode 100644 index 0000000..39611a9 --- /dev/null +++ b/lib/encoding.js @@ -0,0 +1,93 @@ +import nacl from "tweetnacl"; +import { decodeAsBytes, encodeBytes } from "./hi-base32.js"; +import { createMethod } from "./sha512.js"; +const sha512_256 = createMethod(256); +const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"; +const ALGORAND_PUBLIC_KEY_BYTE_LENGTH = 32; +const ALGORAND_ADDRESS_BYTE_LENGTH = 36; +const ALGORAND_CHECKSUM_BYTE_LENGTH = 4; +const ALGORAND_ADDRESS_LENGTH = 58; +const HASH_BYTES_LENGTH = 32; +const MALFORMED_ADDRESS_ERROR_MSG = "Malformed address"; +const ALGORAND_ADDRESS_BAD_CHECKSUM_ERROR_MSG = "Bad checksum"; +const INVALID_BASE64URL_INPUT = "Invalid base64url input"; +function toBase64URL(arr) { + const bytes = arr instanceof Uint8Array ? arr : new Uint8Array(arr); + const len = bytes.length; + let base64 = ""; + for (let i = 0; i < len; i += 3) { + base64 += chars[bytes[i] >> 2]; + base64 += chars[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4]; + base64 += chars[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6]; + base64 += chars[bytes[i + 2] & 63]; + } + if (len % 3 === 2) { + base64 = base64.substring(0, base64.length - 1); + } else if (len % 3 === 1) { + base64 = base64.substring(0, base64.length - 2); + } + return base64; +} +function fromBase64Url(base64url) { + if (typeof base64url !== "string") { + throw new Error(INVALID_BASE64URL_INPUT); + } + return new Uint8Array( + // TODO: Cross-platform solution since atob is deprecated in Node + atob(base64url.replace(/-/g, "+").replace(/_/g, "/").replace(/\s/g, "")).split("").map((c) => c.charCodeAt(0)) + ); +} +function concatArrays(...arrs) { + const size = arrs.reduce((sum, arr) => sum + arr.length, 0); + const c = new Uint8Array(size); + let offset = 0; + for (let i = 0; i < arrs.length; i++) { + c.set(arrs[i], offset); + offset += arrs[i].length; + } + return c; +} +function encodeAddress(address) { + const checksum = sha512_256.array(address).slice( + nacl.sign.publicKeyLength - ALGORAND_CHECKSUM_BYTE_LENGTH, + nacl.sign.publicKeyLength + ); + const addr = encodeBytes(concatArrays(address, checksum)); + return addr.toString().slice(0, ALGORAND_ADDRESS_LENGTH); +} +function decodeAddress(address) { + if (typeof address !== "string" || address.length !== ALGORAND_ADDRESS_LENGTH) { + throw new Error(MALFORMED_ADDRESS_ERROR_MSG); + } + const decoded = decodeAsBytes(address.toString()); + const pk = new Uint8Array( + decoded.slice( + 0, + ALGORAND_ADDRESS_BYTE_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH + ) + ); + const cs = new Uint8Array( + decoded.slice( + ALGORAND_PUBLIC_KEY_BYTE_LENGTH, + ALGORAND_ADDRESS_BYTE_LENGTH + ) + ); + const checksum = sha512_256.array(pk).slice( + HASH_BYTES_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, + HASH_BYTES_LENGTH + ); + if (checksum.length !== cs.length || !Array.from(checksum).every((val, i) => val === cs[i])) { + throw new Error(ALGORAND_ADDRESS_BAD_CHECKSUM_ERROR_MSG); + } + return pk; +} +export { + ALGORAND_ADDRESS_BAD_CHECKSUM_ERROR_MSG, + INVALID_BASE64URL_INPUT, + MALFORMED_ADDRESS_ERROR_MSG, + decodeAddress, + encodeAddress, + fromBase64Url, + toBase64URL +}; +//# sourceMappingURL=encoding.js.map diff --git a/lib/encoding.js.map b/lib/encoding.js.map new file mode 100644 index 0000000..fa50725 --- /dev/null +++ b/lib/encoding.js.map @@ -0,0 +1 @@ +{"version":3,"file":"encoding.js","sources":["../src/encoding.ts"],"sourcesContent":["import nacl from 'tweetnacl';\nimport { decodeAsBytes, encodeBytes } from './hi-base32.js';\nimport { createMethod } from './sha512.js';\nconst sha512_256 = createMethod(256);\nconst chars =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';\nconst ALGORAND_PUBLIC_KEY_BYTE_LENGTH = 32;\nconst ALGORAND_ADDRESS_BYTE_LENGTH = 36;\nconst ALGORAND_CHECKSUM_BYTE_LENGTH = 4;\nconst ALGORAND_ADDRESS_LENGTH = 58;\nconst HASH_BYTES_LENGTH = 32;\n\n/**\n * A constant string containing the error message for a malformed address.\n * This message is used to indicate that an address does not adhere to the expected format or structure.\n *\n * @protected\n */\nexport const MALFORMED_ADDRESS_ERROR_MSG = 'Malformed address';\n\n/**\n * A constant string that represents an error message for an Algorand address with a bad checksum.\n * This message is used to indicate that the checksum of the provided Algorand address is invalid,\n * which typically occurs when the address is incorrectly formed or corrupted.\n *\n * @protected\n */\nexport const ALGORAND_ADDRESS_BAD_CHECKSUM_ERROR_MSG = 'Bad checksum';\n/**\n * A constant string representing an error message for invalid base64url input.\n * This value is used to indicate that the provided input does not conform to the\n * expected base64url format or specification.\n *\n * @protected\n */\nexport const INVALID_BASE64URL_INPUT = 'Invalid base64url input';\n\n/**\n * Converts a given Uint8Array or ArrayBuffer to a Base64 URL-safe encoded string.\n *\n * @param {Uint8Array | ArrayBuffer} arr - The input data to be converted to a Base64 URL-safe string.\n * @return {string} A Base64 URL-safe encoded string representation of the input data.\n */\nexport function toBase64URL(arr: Uint8Array | ArrayBuffer): string {\n const bytes = arr instanceof Uint8Array ? arr : new Uint8Array(arr);\n const len = bytes.length;\n let base64 = '';\n for (let i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1);\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2);\n }\n\n return base64;\n}\n\n/**\n * Converts a Base64 URL-encoded string into a Uint8Array.\n *\n * @param {string} base64url - The Base64 URL-encoded string to be converted.\n * This string must be a valid Base64 URL-safe format.\n * @return {Uint8Array} A Uint8Array representing the decoded binary data from the input Base64 URL string.\n * @throws {Error} If the provided input is not a string or is an invalid Base64 URL format.\n */\nexport function fromBase64Url(base64url: string): Uint8Array {\n if (typeof base64url !== 'string') {\n throw new Error(INVALID_BASE64URL_INPUT);\n }\n return new Uint8Array(\n // TODO: Cross-platform solution since atob is deprecated in Node\n atob(base64url.replace(/-/g, '+').replace(/_/g, '/').replace(/\\s/g, ''))\n .split('')\n .map((c) => c.charCodeAt(0)),\n );\n}\n\nfunction concatArrays(...arrs: Array>) {\n const size = arrs.reduce((sum, arr) => sum + arr.length, 0);\n const c = new Uint8Array(size);\n\n let offset = 0;\n for (let i = 0; i < arrs.length; i++) {\n c.set(arrs[i], offset);\n offset += arrs[i].length;\n }\n\n return c;\n}\n\n/**\n * Encodes a given address into a string representation, including its checksum.\n *\n * @param {Uint8Array} address The public key to be encoded into an address.\n * @return {string} The encoded address as a string representation.\n *\n * @deprecated - use algo-models or algokit-utils\n */\nexport function encodeAddress(address: Uint8Array) {\n // compute checksum\n const checksum = sha512_256\n .array(address)\n .slice(\n nacl.sign.publicKeyLength - ALGORAND_CHECKSUM_BYTE_LENGTH,\n nacl.sign.publicKeyLength,\n );\n const addr = encodeBytes(concatArrays(address, checksum));\n\n return addr.toString().slice(0, ALGORAND_ADDRESS_LENGTH); // removing the extra '===='\n}\n/**\n * decodeAddress takes an Algorand address in string form and decodes it into a Uint8Array.\n * @param address - an Algorand address with checksum.\n * @returns the decoded form of the address's public key and checksum\n *\n * @deprecated use algo-models or algokit-utils\n */\nexport function decodeAddress(address: string): Uint8Array {\n if (\n typeof address !== 'string' ||\n address.length !== ALGORAND_ADDRESS_LENGTH\n ) {\n throw new Error(MALFORMED_ADDRESS_ERROR_MSG);\n }\n\n // try to decode\n const decoded = decodeAsBytes(address.toString());\n\n // Find publickey and checksum\n const pk = new Uint8Array(\n decoded.slice(\n 0,\n ALGORAND_ADDRESS_BYTE_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH,\n ),\n );\n const cs = new Uint8Array(\n decoded.slice(\n ALGORAND_PUBLIC_KEY_BYTE_LENGTH,\n ALGORAND_ADDRESS_BYTE_LENGTH,\n ),\n );\n\n // Compute checksum\n const checksum = sha512_256\n .array(pk)\n .slice(\n HASH_BYTES_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH,\n HASH_BYTES_LENGTH,\n );\n\n // Check if the checksum and the address are equal\n if (\n checksum.length !== cs.length ||\n !Array.from(checksum).every((val, i) => val === cs[i])\n ) {\n throw new Error(ALGORAND_ADDRESS_BAD_CHECKSUM_ERROR_MSG);\n }\n\n return pk;\n}\n"],"names":[],"mappings":";;;AAGA,MAAM,aAAa,aAAa,GAAG;AACnC,MAAM,QACJ;AACF,MAAM,kCAAkC;AACxC,MAAM,+BAA+B;AACrC,MAAM,gCAAgC;AACtC,MAAM,0BAA0B;AAChC,MAAM,oBAAoB;AAQnB,MAAM,8BAA8B;AASpC,MAAM,0CAA0C;AAQhD,MAAM,0BAA0B;AAQhC,SAAS,YAAY,KAAuC;AACjE,QAAM,QAAQ,eAAe,aAAa,MAAM,IAAI,WAAW,GAAG;AAClE,QAAM,MAAM,MAAM;AAClB,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;AAC/B,cAAU,MAAM,MAAM,CAAC,KAAK,CAAC;AAC7B,cAAU,OAAQ,MAAM,CAAC,IAAI,MAAM,IAAM,MAAM,IAAI,CAAC,KAAK,CAAE;AAC3D,cAAU,OAAQ,MAAM,IAAI,CAAC,IAAI,OAAO,IAAM,MAAM,IAAI,CAAC,KAAK,CAAE;AAChE,cAAU,MAAM,MAAM,IAAI,CAAC,IAAI,EAAE;AAAA,EACnC;AAEA,MAAI,MAAM,MAAM,GAAG;AACjB,aAAS,OAAO,UAAU,GAAG,OAAO,SAAS,CAAC;AAAA,EAChD,WAAW,MAAM,MAAM,GAAG;AACxB,aAAS,OAAO,UAAU,GAAG,OAAO,SAAS,CAAC;AAAA,EAChD;AAEA,SAAO;AACT;AAUO,SAAS,cAAc,WAA+B;AAC3D,MAAI,OAAO,cAAc,UAAU;AACjC,UAAM,IAAI,MAAM,uBAAuB;AAAA,EACzC;AACA,SAAO,IAAI;AAAA;AAAA,IAET,KAAK,UAAU,QAAQ,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG,EAAE,QAAQ,OAAO,EAAE,CAAC,EACpE,MAAM,EAAE,EACR,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAAA,EAAA;AAEjC;AAEA,SAAS,gBAAgB,MAAgC;AACvD,QAAM,OAAO,KAAK,OAAO,CAAC,KAAK,QAAQ,MAAM,IAAI,QAAQ,CAAC;AAC1D,QAAM,IAAI,IAAI,WAAW,IAAI;AAE7B,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,MAAE,IAAI,KAAK,CAAC,GAAG,MAAM;AACrB,cAAU,KAAK,CAAC,EAAE;AAAA,EACpB;AAEA,SAAO;AACT;AAUO,SAAS,cAAc,SAAqB;AAEjD,QAAM,WAAW,WACd,MAAM,OAAO,EACb;AAAA,IACC,KAAK,KAAK,kBAAkB;AAAA,IAC5B,KAAK,KAAK;AAAA,EAAA;AAEd,QAAM,OAAO,YAAY,aAAa,SAAS,QAAQ,CAAC;AAExD,SAAO,KAAK,SAAA,EAAW,MAAM,GAAG,uBAAuB;AACzD;AAQO,SAAS,cAAc,SAA6B;AACzD,MACE,OAAO,YAAY,YACnB,QAAQ,WAAW,yBACnB;AACA,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC7C;AAGA,QAAM,UAAU,cAAc,QAAQ,SAAA,CAAU;AAGhD,QAAM,KAAK,IAAI;AAAA,IACb,QAAQ;AAAA,MACN;AAAA,MACA,+BAA+B;AAAA,IAAA;AAAA,EACjC;AAEF,QAAM,KAAK,IAAI;AAAA,IACb,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAIF,QAAM,WAAW,WACd,MAAM,EAAE,EACR;AAAA,IACC,oBAAoB;AAAA,IACpB;AAAA,EAAA;AAIJ,MACE,SAAS,WAAW,GAAG,UACvB,CAAC,MAAM,KAAK,QAAQ,EAAE,MAAM,CAAC,KAAK,MAAM,QAAQ,GAAG,CAAC,CAAC,GACrD;AACA,UAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AAEA,SAAO;AACT;"} \ No newline at end of file diff --git a/lib/errors.d.ts b/lib/errors.d.ts new file mode 100644 index 0000000..4c90b71 --- /dev/null +++ b/lib/errors.d.ts @@ -0,0 +1,49 @@ +/** + * @module errors + * @protected + */ +/** + * A constant string that represents the message to be displayed or used + * when an invalid input is encountered in the application. + * + * This message is intended to provide a clear indication to the user or + * developer that an input provided does not meet the required criteria + * or expectations. + * + * @protected + */ +export declare const INVALID_INPUT_MESSAGE = "Invalid input"; +/** + * A constant string representing a default message for an invalid response. + * This can be used to indicate that a response does not meet the expected format + * or criteria in validation processes or error handling. + * + * @protected + */ +export declare const INVALID_RESPONSE_MESSAGE = "Invalid response"; +/** + * Represents the error message indicating that a credential-related action has failed. + * This constant is typically used to signal or log failure scenarios where operations + * associated with credentials do not succeed. + * + * @protected + */ +export declare const CREDENTIAL_ACTION_FAILURE = "Credential action failed"; +/** + * A constant string representing an error or validation message indicating that + * the message must be signed. + * + * This constant is used in scenarios where a signed message is required for + * security, validation, or processing purposes. + * + * @protected + */ +export declare const UNSIGNED_MESSAGE = "Message must be signed"; +export declare const AUTHENTICATOR_NOT_SUPPORTED_MESSAGE = "Authenticator not supported"; +export declare const REQUEST_IS_MISSING_MESSAGE = "Request id is required"; +export declare const REQUEST_IN_PROCESS_MESSAGE = "Request in process"; +export declare const UNAUTHENTICATED_MESSAGE = "Not authenticated"; +export declare const ORIGIN_IS_MISSING_MESSAGE = "Origin is required"; +export declare class ServiceError extends Error { +} +export declare function isValidResponse(r: Response): boolean; diff --git a/lib/errors.js b/lib/errors.js new file mode 100644 index 0000000..1c297d1 --- /dev/null +++ b/lib/errors.js @@ -0,0 +1,28 @@ +const INVALID_INPUT_MESSAGE = "Invalid input"; +const INVALID_RESPONSE_MESSAGE = "Invalid response"; +const CREDENTIAL_ACTION_FAILURE = "Credential action failed"; +const UNSIGNED_MESSAGE = "Message must be signed"; +const AUTHENTICATOR_NOT_SUPPORTED_MESSAGE = "Authenticator not supported"; +const REQUEST_IS_MISSING_MESSAGE = "Request id is required"; +const REQUEST_IN_PROCESS_MESSAGE = "Request in process"; +const UNAUTHENTICATED_MESSAGE = "Not authenticated"; +const ORIGIN_IS_MISSING_MESSAGE = "Origin is required"; +class ServiceError extends Error { +} +function isValidResponse(r) { + return r.ok && (r.status === 200 || r.status === 201); +} +export { + AUTHENTICATOR_NOT_SUPPORTED_MESSAGE, + CREDENTIAL_ACTION_FAILURE, + INVALID_INPUT_MESSAGE, + INVALID_RESPONSE_MESSAGE, + ORIGIN_IS_MISSING_MESSAGE, + REQUEST_IN_PROCESS_MESSAGE, + REQUEST_IS_MISSING_MESSAGE, + ServiceError, + UNAUTHENTICATED_MESSAGE, + UNSIGNED_MESSAGE, + isValidResponse +}; +//# sourceMappingURL=errors.js.map diff --git a/lib/errors.js.map b/lib/errors.js.map new file mode 100644 index 0000000..13adb62 --- /dev/null +++ b/lib/errors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"errors.js","sources":["../src/errors.ts"],"sourcesContent":["/**\n * @module errors\n * @protected\n */\n/**\n * A constant string that represents the message to be displayed or used\n * when an invalid input is encountered in the application.\n *\n * This message is intended to provide a clear indication to the user or\n * developer that an input provided does not meet the required criteria\n * or expectations.\n *\n * @protected\n */\nexport const INVALID_INPUT_MESSAGE = 'Invalid input';\n\n/**\n * A constant string representing a default message for an invalid response.\n * This can be used to indicate that a response does not meet the expected format\n * or criteria in validation processes or error handling.\n *\n * @protected\n */\nexport const INVALID_RESPONSE_MESSAGE = 'Invalid response';\n/**\n * Represents the error message indicating that a credential-related action has failed.\n * This constant is typically used to signal or log failure scenarios where operations\n * associated with credentials do not succeed.\n *\n * @protected\n */\nexport const CREDENTIAL_ACTION_FAILURE = 'Credential action failed';\n\n/**\n * A constant string representing an error or validation message indicating that\n * the message must be signed.\n *\n * This constant is used in scenarios where a signed message is required for\n * security, validation, or processing purposes.\n *\n * @protected\n */\nexport const UNSIGNED_MESSAGE = 'Message must be signed';\n\nexport const AUTHENTICATOR_NOT_SUPPORTED_MESSAGE =\n 'Authenticator not supported';\nexport const REQUEST_IS_MISSING_MESSAGE = 'Request id is required';\nexport const REQUEST_IN_PROCESS_MESSAGE = 'Request in process';\nexport const UNAUTHENTICATED_MESSAGE = 'Not authenticated';\nexport const ORIGIN_IS_MISSING_MESSAGE = 'Origin is required';\n\nexport class ServiceError extends Error {}\n\nexport function isValidResponse(r: Response) {\n return r.ok && (r.status === 200 || r.status === 201);\n}\n"],"names":[],"mappings":"AAcO,MAAM,wBAAwB;AAS9B,MAAM,2BAA2B;AAQjC,MAAM,4BAA4B;AAWlC,MAAM,mBAAmB;AAEzB,MAAM,sCACX;AACK,MAAM,6BAA6B;AACnC,MAAM,6BAA6B;AACnC,MAAM,0BAA0B;AAChC,MAAM,4BAA4B;AAElC,MAAM,qBAAqB,MAAM;AAAC;AAElC,SAAS,gBAAgB,GAAa;AAC3C,SAAO,EAAE,OAAO,EAAE,WAAW,OAAO,EAAE,WAAW;AACnD;"} \ No newline at end of file diff --git a/lib/hi-base32.d.ts b/lib/hi-base32.d.ts new file mode 100644 index 0000000..1b2f2cc --- /dev/null +++ b/lib/hi-base32.d.ts @@ -0,0 +1,2 @@ +export declare const decodeAsBytes: (base32Str: string) => number[]; +export declare const encodeBytes: (bytes: Uint8Array) => string; diff --git a/lib/hi-base32.js b/lib/hi-base32.js new file mode 100644 index 0000000..b6ba66a --- /dev/null +++ b/lib/hi-base32.js @@ -0,0 +1,155 @@ +/* + * [hi-base32]{@link https://github.com/emn178/hi-base32} + * + * @version 0.5.1 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2015-2021 + * @license MIT + */ +const BASE32_ENCODE_CHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".split(""); +const BASE32_DECODE_CHAR = { + A: 0, + B: 1, + C: 2, + D: 3, + E: 4, + F: 5, + G: 6, + H: 7, + I: 8, + J: 9, + K: 10, + L: 11, + M: 12, + N: 13, + O: 14, + P: 15, + Q: 16, + R: 17, + S: 18, + T: 19, + U: 20, + V: 21, + W: 22, + X: 23, + Y: 24, + Z: 25, + 2: 26, + 3: 27, + 4: 28, + 5: 29, + 6: 30, + 7: 31 +}; +const decodeAsBytes = function(base32Str) { + if (base32Str === "") { + return []; + } else if (!/^[A-Z2-7=]+$/.test(base32Str)) { + throw new Error("Invalid base32 characters"); + } + base32Str = base32Str.replace(/=/g, ""); + let v1; + let v2; + let v3; + let v4; + let v5; + let v6; + let v7; + let v8; + const bytes = []; + let index = 0; + const length = base32Str.length; + for (var i = 0, count = length >> 3 << 3; i < count; ) { + v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + bytes[index++] = (v1 << 3 | v2 >>> 2) & 255; + bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255; + bytes[index++] = (v4 << 4 | v5 >>> 1) & 255; + bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255; + bytes[index++] = (v7 << 5 | v8) & 255; + } + const remain = length - count; + if (remain === 2) { + v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + bytes[index++] = (v1 << 3 | v2 >>> 2) & 255; + } else if (remain === 4) { + v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + bytes[index++] = (v1 << 3 | v2 >>> 2) & 255; + bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255; + } else if (remain === 5) { + v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + bytes[index++] = (v1 << 3 | v2 >>> 2) & 255; + bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255; + bytes[index++] = (v4 << 4 | v5 >>> 1) & 255; + } else if (remain === 7) { + v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)]; + bytes[index++] = (v1 << 3 | v2 >>> 2) & 255; + bytes[index++] = (v2 << 6 | v3 << 1 | v4 >>> 4) & 255; + bytes[index++] = (v4 << 4 | v5 >>> 1) & 255; + bytes[index++] = (v5 << 7 | v6 << 2 | v7 >>> 3) & 255; + } + return bytes; +}; +const encodeBytes = function(bytes) { + let v1; + let v2; + let v3; + let v4; + let v5; + let base32Str = ""; + const length = bytes.length; + for (var i = 0, count = parseInt(length / 5) * 5; i < count; ) { + v1 = bytes[i++]; + v2 = bytes[i++]; + v3 = bytes[i++]; + v4 = bytes[i++]; + v5 = bytes[i++]; + base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + BASE32_ENCODE_CHAR[v2 >>> 1 & 31] + BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] + BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] + BASE32_ENCODE_CHAR[v4 >>> 2 & 31] + BASE32_ENCODE_CHAR[(v4 << 3 | v5 >>> 5) & 31] + BASE32_ENCODE_CHAR[v5 & 31]; + } + const remain = length - count; + if (remain === 1) { + v1 = bytes[i]; + base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + BASE32_ENCODE_CHAR[v1 << 2 & 31] + "======"; + } else if (remain === 2) { + v1 = bytes[i++]; + v2 = bytes[i]; + base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + BASE32_ENCODE_CHAR[v2 >>> 1 & 31] + BASE32_ENCODE_CHAR[v2 << 4 & 31] + "===="; + } else if (remain === 3) { + v1 = bytes[i++]; + v2 = bytes[i++]; + v3 = bytes[i]; + base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + BASE32_ENCODE_CHAR[v2 >>> 1 & 31] + BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] + BASE32_ENCODE_CHAR[v3 << 1 & 31] + "==="; + } else if (remain === 4) { + v1 = bytes[i++]; + v2 = bytes[i++]; + v3 = bytes[i++]; + v4 = bytes[i]; + base32Str += BASE32_ENCODE_CHAR[v1 >>> 3] + BASE32_ENCODE_CHAR[(v1 << 2 | v2 >>> 6) & 31] + BASE32_ENCODE_CHAR[v2 >>> 1 & 31] + BASE32_ENCODE_CHAR[(v2 << 4 | v3 >>> 4) & 31] + BASE32_ENCODE_CHAR[(v3 << 1 | v4 >>> 7) & 31] + BASE32_ENCODE_CHAR[v4 >>> 2 & 31] + BASE32_ENCODE_CHAR[v4 << 3 & 31] + "="; + } + return base32Str; +}; +export { + decodeAsBytes, + encodeBytes +}; +//# sourceMappingURL=hi-base32.js.map diff --git a/lib/hi-base32.js.map b/lib/hi-base32.js.map new file mode 100644 index 0000000..061156e --- /dev/null +++ b/lib/hi-base32.js.map @@ -0,0 +1 @@ +{"version":3,"file":"hi-base32.js","sources":["../src/hi-base32.ts"],"sourcesContent":["/*\n * [hi-base32]{@link https://github.com/emn178/hi-base32}\n *\n * @version 0.5.1\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2021\n * @license MIT\n */\nconst BASE32_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('');\nconst BASE32_DECODE_CHAR: Record = {\n A: 0,\n B: 1,\n C: 2,\n D: 3,\n E: 4,\n F: 5,\n G: 6,\n H: 7,\n I: 8,\n J: 9,\n K: 10,\n L: 11,\n M: 12,\n N: 13,\n O: 14,\n P: 15,\n Q: 16,\n R: 17,\n S: 18,\n T: 19,\n U: 20,\n V: 21,\n W: 22,\n X: 23,\n Y: 24,\n Z: 25,\n 2: 26,\n 3: 27,\n 4: 28,\n 5: 29,\n 6: 30,\n 7: 31,\n};\n\nexport const decodeAsBytes = function (base32Str: string): number[] {\n if (base32Str === '') {\n return [];\n } else if (!/^[A-Z2-7=]+$/.test(base32Str)) {\n throw new Error('Invalid base32 characters');\n }\n base32Str = base32Str.replace(/=/g, '');\n let v1;\n let v2;\n let v3;\n let v4;\n let v5;\n let v6;\n let v7;\n let v8;\n const bytes: number[] = [];\n let index = 0;\n const length = base32Str.length;\n\n // 4 char to 3 bytes\n for (var i = 0, count = (length >> 3) << 3; i < count; ) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v8 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = ((v1 << 3) | (v2 >>> 2)) & 255;\n bytes[index++] = ((v2 << 6) | (v3 << 1) | (v4 >>> 4)) & 255;\n bytes[index++] = ((v4 << 4) | (v5 >>> 1)) & 255;\n bytes[index++] = ((v5 << 7) | (v6 << 2) | (v7 >>> 3)) & 255;\n bytes[index++] = ((v7 << 5) | v8) & 255;\n }\n\n // remain bytes\n const remain = length - count;\n if (remain === 2) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = ((v1 << 3) | (v2 >>> 2)) & 255;\n } else if (remain === 4) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = ((v1 << 3) | (v2 >>> 2)) & 255;\n bytes[index++] = ((v2 << 6) | (v3 << 1) | (v4 >>> 4)) & 255;\n } else if (remain === 5) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = ((v1 << 3) | (v2 >>> 2)) & 255;\n bytes[index++] = ((v2 << 6) | (v3 << 1) | (v4 >>> 4)) & 255;\n bytes[index++] = ((v4 << 4) | (v5 >>> 1)) & 255;\n } else if (remain === 7) {\n v1 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v2 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v3 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v4 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v5 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v6 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n v7 = BASE32_DECODE_CHAR[base32Str.charAt(i++)];\n bytes[index++] = ((v1 << 3) | (v2 >>> 2)) & 255;\n bytes[index++] = ((v2 << 6) | (v3 << 1) | (v4 >>> 4)) & 255;\n bytes[index++] = ((v4 << 4) | (v5 >>> 1)) & 255;\n bytes[index++] = ((v5 << 7) | (v6 << 2) | (v7 >>> 3)) & 255;\n }\n return bytes;\n};\n\nexport const encodeBytes = function (bytes: Uint8Array) {\n let v1;\n let v2;\n let v3;\n let v4;\n let v5;\n let base32Str = '';\n const length = bytes.length;\n for (\n var i = 0, count = parseInt((length / 5) as unknown as string) * 5;\n i < count;\n\n ) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i++];\n v5 = bytes[i++];\n base32Str +=\n BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[((v1 << 2) | (v2 >>> 6)) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[((v2 << 4) | (v3 >>> 4)) & 31] +\n BASE32_ENCODE_CHAR[((v3 << 1) | (v4 >>> 7)) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[((v4 << 3) | (v5 >>> 5)) & 31] +\n BASE32_ENCODE_CHAR[v5 & 31];\n }\n\n // remain char\n const remain = length - count;\n if (remain === 1) {\n v1 = bytes[i];\n base32Str +=\n BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[(v1 << 2) & 31] +\n '======';\n } else if (remain === 2) {\n v1 = bytes[i++];\n v2 = bytes[i];\n base32Str +=\n BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[((v1 << 2) | (v2 >>> 6)) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[(v2 << 4) & 31] +\n '====';\n } else if (remain === 3) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i];\n base32Str +=\n BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[((v1 << 2) | (v2 >>> 6)) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[((v2 << 4) | (v3 >>> 4)) & 31] +\n BASE32_ENCODE_CHAR[(v3 << 1) & 31] +\n '===';\n } else if (remain === 4) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n v4 = bytes[i];\n base32Str +=\n BASE32_ENCODE_CHAR[v1 >>> 3] +\n BASE32_ENCODE_CHAR[((v1 << 2) | (v2 >>> 6)) & 31] +\n BASE32_ENCODE_CHAR[(v2 >>> 1) & 31] +\n BASE32_ENCODE_CHAR[((v2 << 4) | (v3 >>> 4)) & 31] +\n BASE32_ENCODE_CHAR[((v3 << 1) | (v4 >>> 7)) & 31] +\n BASE32_ENCODE_CHAR[(v4 >>> 2) & 31] +\n BASE32_ENCODE_CHAR[(v4 << 3) & 31] +\n '=';\n }\n return base32Str;\n};\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/index.d.ts b/lib/index.d.ts new file mode 100644 index 0000000..d463e48 --- /dev/null +++ b/lib/index.d.ts @@ -0,0 +1,6 @@ +export * as encoding from './encoding.js'; +export * as assertion from './assertion.js'; +export * as attestation from './attestation.js'; +export * as constants from './constants.js'; +export * as errors from './errors.js'; +export * as signal from './signal.js'; diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..a539fa4 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,15 @@ +import * as encoding from "./encoding.js"; +import * as assertion from "./assertion.js"; +import * as attestation from "./attestation.js"; +import * as constants from "./constants.js"; +import * as errors from "./errors.js"; +import * as signal from "./signal.js"; +export { + assertion, + attestation, + constants, + encoding, + errors, + signal +}; +//# sourceMappingURL=index.js.map diff --git a/lib/index.js.map b/lib/index.js.map new file mode 100644 index 0000000..8a81f37 --- /dev/null +++ b/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"} \ No newline at end of file diff --git a/lib/sha512.d.ts b/lib/sha512.d.ts new file mode 100644 index 0000000..c20bdfc --- /dev/null +++ b/lib/sha512.d.ts @@ -0,0 +1,3 @@ +export declare const createMethod: (bits: any) => { + array: (d: Uint8Array) => Uint8Array; +}; diff --git a/lib/sha512.js b/lib/sha512.js new file mode 100644 index 0000000..69e9cde --- /dev/null +++ b/lib/sha512.js @@ -0,0 +1,898 @@ +/* + * [js-sha512]{@link https://github.com/emn178/js-sha512} + * + * @version 0.9.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2024 + * @license MIT + */ +const INPUT_ERROR = "input is invalid type"; +const FINALIZE_ERROR = "finalize already called"; +const ARRAY_BUFFER = typeof ArrayBuffer !== "undefined"; +const HEX_CHARS = "0123456789abcdef".split(""); +const EXTRA = [-2147483648, 8388608, 32768, 128]; +const SHIFT = [24, 16, 8, 0]; +const K = [ + 1116352408, + 3609767458, + 1899447441, + 602891725, + 3049323471, + 3964484399, + 3921009573, + 2173295548, + 961987163, + 4081628472, + 1508970993, + 3053834265, + 2453635748, + 2937671579, + 2870763221, + 3664609560, + 3624381080, + 2734883394, + 310598401, + 1164996542, + 607225278, + 1323610764, + 1426881987, + 3590304994, + 1925078388, + 4068182383, + 2162078206, + 991336113, + 2614888103, + 633803317, + 3248222580, + 3479774868, + 3835390401, + 2666613458, + 4022224774, + 944711139, + 264347078, + 2341262773, + 604807628, + 2007800933, + 770255983, + 1495990901, + 1249150122, + 1856431235, + 1555081692, + 3175218132, + 1996064986, + 2198950837, + 2554220882, + 3999719339, + 2821834349, + 766784016, + 2952996808, + 2566594879, + 3210313671, + 3203337956, + 3336571891, + 1034457026, + 3584528711, + 2466948901, + 113926993, + 3758326383, + 338241895, + 168717936, + 666307205, + 1188179964, + 773529912, + 1546045734, + 1294757372, + 1522805485, + 1396182291, + 2643833823, + 1695183700, + 2343527390, + 1986661051, + 1014477480, + 2177026350, + 1206759142, + 2456956037, + 344077627, + 2730485921, + 1290863460, + 2820302411, + 3158454273, + 3259730800, + 3505952657, + 3345764771, + 106217008, + 3516065817, + 3606008344, + 3600352804, + 1432725776, + 4094571909, + 1467031594, + 275423344, + 851169720, + 430227734, + 3100823752, + 506948616, + 1363258195, + 659060556, + 3750685593, + 883997877, + 3785050280, + 958139571, + 3318307427, + 1322822218, + 3812723403, + 1537002063, + 2003034995, + 1747873779, + 3602036899, + 1955562222, + 1575990012, + 2024104815, + 1125592928, + 2227730452, + 2716904306, + 2361852424, + 442776044, + 2428436474, + 593698344, + 2756734187, + 3733110249, + 3204031479, + 2999351573, + 3329325298, + 3815920427, + 3391569614, + 3928383900, + 3515267271, + 566280711, + 3940187606, + 3454069534, + 4118630271, + 4000239992, + 116418474, + 1914138554, + 174292421, + 2731055270, + 289380356, + 3203993006, + 460393269, + 320620315, + 685471733, + 587496836, + 852142971, + 1086792851, + 1017036298, + 365543100, + 1126000580, + 2618297676, + 1288033470, + 3409855158, + 1501505948, + 4234509866, + 1607167915, + 987167468, + 1816402316, + 1246189591 +]; +const OUTPUT_TYPES = ["hex", "array", "digest", "arrayBuffer"]; +const blocks = []; +const isArray = Array.isArray; +const isView = ArrayBuffer.isView; +const formatMessage = function(message) { + const type = typeof message; + if (type === "string") { + return [message, true]; + } + if (type !== "object" || message === null) { + throw new Error(INPUT_ERROR); + } + if (ARRAY_BUFFER && message.constructor === ArrayBuffer) { + return [new Uint8Array(message), false]; + } + if (!isArray(message) && !isView(message)) { + throw new Error(INPUT_ERROR); + } + return [message, false]; +}; +const createOutputMethod = function(outputType, bits) { + return function(message) { + return new Sha512(bits, true).update(message)[outputType](); + }; +}; +const createMethod = function(bits) { + const method = createOutputMethod("hex", bits); + method.create = function() { + return new Sha512(bits); + }; + method.update = function(message) { + return method.create().update(message); + }; + for (let i = 0; i < OUTPUT_TYPES.length; ++i) { + const type = OUTPUT_TYPES[i]; + method[type] = createOutputMethod(type, bits); + } + return method; +}; +function Sha512(bits, sharedMemory) { + if (sharedMemory) { + blocks[0] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = blocks[16] = blocks[17] = blocks[18] = blocks[19] = blocks[20] = blocks[21] = blocks[22] = blocks[23] = blocks[24] = blocks[25] = blocks[26] = blocks[27] = blocks[28] = blocks[29] = blocks[30] = blocks[31] = blocks[32] = 0; + this.blocks = blocks; + } else { + this.blocks = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]; + } + if (bits == 384) { + this.h0h = 3418070365; + this.h0l = 3238371032; + this.h1h = 1654270250; + this.h1l = 914150663; + this.h2h = 2438529370; + this.h2l = 812702999; + this.h3h = 355462360; + this.h3l = 4144912697; + this.h4h = 1731405415; + this.h4l = 4290775857; + this.h5h = 2394180231; + this.h5l = 1750603025; + this.h6h = 3675008525; + this.h6l = 1694076839; + this.h7h = 1203062813; + this.h7l = 3204075428; + } else if (bits == 256) { + this.h0h = 573645204; + this.h0l = 4230739756; + this.h1h = 2673172387; + this.h1l = 3360449730; + this.h2h = 596883563; + this.h2l = 1867755857; + this.h3h = 2520282905; + this.h3l = 1497426621; + this.h4h = 2519219938; + this.h4l = 2827943907; + this.h5h = 3193839141; + this.h5l = 1401305490; + this.h6h = 721525244; + this.h6l = 746961066; + this.h7h = 246885852; + this.h7l = 2177182882; + } else if (bits == 224) { + this.h0h = 2352822216; + this.h0l = 424955298; + this.h1h = 1944164710; + this.h1l = 2312950998; + this.h2h = 502970286; + this.h2l = 855612546; + this.h3h = 1738396948; + this.h3l = 1479516111; + this.h4h = 258812777; + this.h4l = 2077511080; + this.h5h = 2011393907; + this.h5l = 79989058; + this.h6h = 1067287976; + this.h6l = 1780299464; + this.h7h = 286451373; + this.h7l = 2446758561; + } else { + this.h0h = 1779033703; + this.h0l = 4089235720; + this.h1h = 3144134277; + this.h1l = 2227873595; + this.h2h = 1013904242; + this.h2l = 4271175723; + this.h3h = 2773480762; + this.h3l = 1595750129; + this.h4h = 1359893119; + this.h4l = 2917565137; + this.h5h = 2600822924; + this.h5l = 725511199; + this.h6h = 528734635; + this.h6l = 4215389547; + this.h7h = 1541459225; + this.h7l = 327033209; + } + this.bits = bits; + this.block = this.start = this.bytes = this.hBytes = 0; + this.finalized = this.hashed = false; +} +Sha512.prototype.update = function(message) { + if (this.finalized) { + throw new Error(FINALIZE_ERROR); + } + const result = formatMessage(message); + message = result[0]; + const isString = result[1]; + let code; + let index = 0; + let i; + const length = message.length; + const blocks2 = this.blocks; + while (index < length) { + if (this.hashed) { + this.hashed = false; + blocks2[0] = this.block; + this.block = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = blocks2[16] = blocks2[17] = blocks2[18] = blocks2[19] = blocks2[20] = blocks2[21] = blocks2[22] = blocks2[23] = blocks2[24] = blocks2[25] = blocks2[26] = blocks2[27] = blocks2[28] = blocks2[29] = blocks2[30] = blocks2[31] = blocks2[32] = 0; + } + if (isString) { + for (i = this.start; index < length && i < 128; ++index) { + code = message.charCodeAt(index); + if (code < 128) { + blocks2[i >>> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 2048) { + blocks2[i >>> 2] |= (192 | code >>> 6) << SHIFT[i++ & 3]; + blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3]; + } else if (code < 55296 || code >= 57344) { + blocks2[i >>> 2] |= (224 | code >>> 12) << SHIFT[i++ & 3]; + blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3]; + blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3]; + } else { + code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index) & 1023); + blocks2[i >>> 2] |= (240 | code >>> 18) << SHIFT[i++ & 3]; + blocks2[i >>> 2] |= (128 | code >>> 12 & 63) << SHIFT[i++ & 3]; + blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3]; + blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3]; + } + } + } else { + for (i = this.start; index < length && i < 128; ++index) { + blocks2[i >>> 2] |= message[index] << SHIFT[i++ & 3]; + } + } + this.lastByteIndex = i; + this.bytes += i - this.start; + if (i >= 128) { + this.block = blocks2[32]; + this.start = i - 128; + this.hash(); + this.hashed = true; + } else { + this.start = i; + } + } + if (this.bytes > 4294967295) { + this.hBytes += this.bytes / 4294967296 << 0; + this.bytes = this.bytes % 4294967296; + } + return this; +}; +Sha512.prototype.finalize = function() { + if (this.finalized) { + return; + } + this.finalized = true; + const blocks2 = this.blocks; + const i = this.lastByteIndex; + blocks2[32] = this.block; + blocks2[i >>> 2] |= EXTRA[i & 3]; + this.block = blocks2[32]; + if (i >= 112) { + if (!this.hashed) { + this.hash(); + } + blocks2[0] = this.block; + blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = blocks2[16] = blocks2[17] = blocks2[18] = blocks2[19] = blocks2[20] = blocks2[21] = blocks2[22] = blocks2[23] = blocks2[24] = blocks2[25] = blocks2[26] = blocks2[27] = blocks2[28] = blocks2[29] = blocks2[30] = blocks2[31] = blocks2[32] = 0; + } + blocks2[30] = this.hBytes << 3 | this.bytes >>> 29; + blocks2[31] = this.bytes << 3; + this.hash(); +}; +Sha512.prototype.hash = function() { + const h0h = this.h0h; + const h0l = this.h0l; + const h1h = this.h1h; + const h1l = this.h1l; + const h2h = this.h2h; + const h2l = this.h2l; + const h3h = this.h3h; + const h3l = this.h3l; + const h4h = this.h4h; + const h4l = this.h4l; + const h5h = this.h5h; + const h5l = this.h5l; + const h6h = this.h6h; + const h6l = this.h6l; + const h7h = this.h7h; + const h7l = this.h7l; + const blocks2 = this.blocks; + let j; + let s0h; + let s0l; + let s1h; + let s1l; + let c1; + let c2; + let c3; + let c4; + let abh; + let abl; + let dah; + let dal; + let cdh; + let cdl; + let bch; + let bcl; + let majh; + let majl; + let t1h; + let t1l; + let t2h; + let t2l; + let chh; + let chl; + for (j = 32; j < 160; j += 2) { + t1h = blocks2[j - 30]; + t1l = blocks2[j - 29]; + s0h = (t1h >>> 1 | t1l << 31) ^ (t1h >>> 8 | t1l << 24) ^ t1h >>> 7; + s0l = (t1l >>> 1 | t1h << 31) ^ (t1l >>> 8 | t1h << 24) ^ (t1l >>> 7 | t1h << 25); + t1h = blocks2[j - 4]; + t1l = blocks2[j - 3]; + s1h = (t1h >>> 19 | t1l << 13) ^ (t1l >>> 29 | t1h << 3) ^ t1h >>> 6; + s1l = (t1l >>> 19 | t1h << 13) ^ (t1h >>> 29 | t1l << 3) ^ (t1l >>> 6 | t1h << 26); + t1h = blocks2[j - 32]; + t1l = blocks2[j - 31]; + t2h = blocks2[j - 14]; + t2l = blocks2[j - 13]; + c1 = (t2l & 65535) + (t1l & 65535) + (s0l & 65535) + (s1l & 65535); + c2 = (t2l >>> 16) + (t1l >>> 16) + (s0l >>> 16) + (s1l >>> 16) + (c1 >>> 16); + c3 = (t2h & 65535) + (t1h & 65535) + (s0h & 65535) + (s1h & 65535) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (s0h >>> 16) + (s1h >>> 16) + (c3 >>> 16); + blocks2[j] = c4 << 16 | c3 & 65535; + blocks2[j + 1] = c2 << 16 | c1 & 65535; + } + let ah = h0h; + let al = h0l; + let bh = h1h; + let bl = h1l; + let ch = h2h; + let cl = h2l; + let dh = h3h; + let dl = h3l; + let eh = h4h; + let el = h4l; + let fh = h5h; + let fl = h5l; + let gh = h6h; + let gl = h6l; + let hh = h7h; + let hl = h7l; + bch = bh & ch; + bcl = bl & cl; + for (j = 0; j < 160; j += 8) { + s0h = (ah >>> 28 | al << 4) ^ (al >>> 2 | ah << 30) ^ (al >>> 7 | ah << 25); + s0l = (al >>> 28 | ah << 4) ^ (ah >>> 2 | al << 30) ^ (ah >>> 7 | al << 25); + s1h = (eh >>> 14 | el << 18) ^ (eh >>> 18 | el << 14) ^ (el >>> 9 | eh << 23); + s1l = (el >>> 14 | eh << 18) ^ (el >>> 18 | eh << 14) ^ (eh >>> 9 | el << 23); + abh = ah & bh; + abl = al & bl; + majh = abh ^ ah & ch ^ bch; + majl = abl ^ al & cl ^ bcl; + chh = eh & fh ^ ~eh & gh; + chl = el & fl ^ ~el & gl; + t1h = blocks2[j]; + t1l = blocks2[j + 1]; + t2h = K[j]; + t2l = K[j + 1]; + c1 = (t2l & 65535) + (t1l & 65535) + (chl & 65535) + (s1l & 65535) + (hl & 65535); + c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (hl >>> 16) + (c1 >>> 16); + c3 = (t2h & 65535) + (t1h & 65535) + (chh & 65535) + (s1h & 65535) + (hh & 65535) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (hh >>> 16) + (c3 >>> 16); + t1h = c4 << 16 | c3 & 65535; + t1l = c2 << 16 | c1 & 65535; + c1 = (majl & 65535) + (s0l & 65535); + c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16); + c3 = (majh & 65535) + (s0h & 65535) + (c2 >>> 16); + c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16); + t2h = c4 << 16 | c3 & 65535; + t2l = c2 << 16 | c1 & 65535; + c1 = (dl & 65535) + (t1l & 65535); + c2 = (dl >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (dh & 65535) + (t1h & 65535) + (c2 >>> 16); + c4 = (dh >>> 16) + (t1h >>> 16) + (c3 >>> 16); + hh = c4 << 16 | c3 & 65535; + hl = c2 << 16 | c1 & 65535; + c1 = (t2l & 65535) + (t1l & 65535); + c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (t2h & 65535) + (t1h & 65535) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16); + dh = c4 << 16 | c3 & 65535; + dl = c2 << 16 | c1 & 65535; + s0h = (dh >>> 28 | dl << 4) ^ (dl >>> 2 | dh << 30) ^ (dl >>> 7 | dh << 25); + s0l = (dl >>> 28 | dh << 4) ^ (dh >>> 2 | dl << 30) ^ (dh >>> 7 | dl << 25); + s1h = (hh >>> 14 | hl << 18) ^ (hh >>> 18 | hl << 14) ^ (hl >>> 9 | hh << 23); + s1l = (hl >>> 14 | hh << 18) ^ (hl >>> 18 | hh << 14) ^ (hh >>> 9 | hl << 23); + dah = dh & ah; + dal = dl & al; + majh = dah ^ dh & bh ^ abh; + majl = dal ^ dl & bl ^ abl; + chh = hh & eh ^ ~hh & fh; + chl = hl & el ^ ~hl & fl; + t1h = blocks2[j + 2]; + t1l = blocks2[j + 3]; + t2h = K[j + 2]; + t2l = K[j + 3]; + c1 = (t2l & 65535) + (t1l & 65535) + (chl & 65535) + (s1l & 65535) + (gl & 65535); + c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (gl >>> 16) + (c1 >>> 16); + c3 = (t2h & 65535) + (t1h & 65535) + (chh & 65535) + (s1h & 65535) + (gh & 65535) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (gh >>> 16) + (c3 >>> 16); + t1h = c4 << 16 | c3 & 65535; + t1l = c2 << 16 | c1 & 65535; + c1 = (majl & 65535) + (s0l & 65535); + c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16); + c3 = (majh & 65535) + (s0h & 65535) + (c2 >>> 16); + c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16); + t2h = c4 << 16 | c3 & 65535; + t2l = c2 << 16 | c1 & 65535; + c1 = (cl & 65535) + (t1l & 65535); + c2 = (cl >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (ch & 65535) + (t1h & 65535) + (c2 >>> 16); + c4 = (ch >>> 16) + (t1h >>> 16) + (c3 >>> 16); + gh = c4 << 16 | c3 & 65535; + gl = c2 << 16 | c1 & 65535; + c1 = (t2l & 65535) + (t1l & 65535); + c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (t2h & 65535) + (t1h & 65535) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16); + ch = c4 << 16 | c3 & 65535; + cl = c2 << 16 | c1 & 65535; + s0h = (ch >>> 28 | cl << 4) ^ (cl >>> 2 | ch << 30) ^ (cl >>> 7 | ch << 25); + s0l = (cl >>> 28 | ch << 4) ^ (ch >>> 2 | cl << 30) ^ (ch >>> 7 | cl << 25); + s1h = (gh >>> 14 | gl << 18) ^ (gh >>> 18 | gl << 14) ^ (gl >>> 9 | gh << 23); + s1l = (gl >>> 14 | gh << 18) ^ (gl >>> 18 | gh << 14) ^ (gh >>> 9 | gl << 23); + cdh = ch & dh; + cdl = cl & dl; + majh = cdh ^ ch & ah ^ dah; + majl = cdl ^ cl & al ^ dal; + chh = gh & hh ^ ~gh & eh; + chl = gl & hl ^ ~gl & el; + t1h = blocks2[j + 4]; + t1l = blocks2[j + 5]; + t2h = K[j + 4]; + t2l = K[j + 5]; + c1 = (t2l & 65535) + (t1l & 65535) + (chl & 65535) + (s1l & 65535) + (fl & 65535); + c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (fl >>> 16) + (c1 >>> 16); + c3 = (t2h & 65535) + (t1h & 65535) + (chh & 65535) + (s1h & 65535) + (fh & 65535) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (fh >>> 16) + (c3 >>> 16); + t1h = c4 << 16 | c3 & 65535; + t1l = c2 << 16 | c1 & 65535; + c1 = (majl & 65535) + (s0l & 65535); + c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16); + c3 = (majh & 65535) + (s0h & 65535) + (c2 >>> 16); + c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16); + t2h = c4 << 16 | c3 & 65535; + t2l = c2 << 16 | c1 & 65535; + c1 = (bl & 65535) + (t1l & 65535); + c2 = (bl >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (bh & 65535) + (t1h & 65535) + (c2 >>> 16); + c4 = (bh >>> 16) + (t1h >>> 16) + (c3 >>> 16); + fh = c4 << 16 | c3 & 65535; + fl = c2 << 16 | c1 & 65535; + c1 = (t2l & 65535) + (t1l & 65535); + c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (t2h & 65535) + (t1h & 65535) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16); + bh = c4 << 16 | c3 & 65535; + bl = c2 << 16 | c1 & 65535; + s0h = (bh >>> 28 | bl << 4) ^ (bl >>> 2 | bh << 30) ^ (bl >>> 7 | bh << 25); + s0l = (bl >>> 28 | bh << 4) ^ (bh >>> 2 | bl << 30) ^ (bh >>> 7 | bl << 25); + s1h = (fh >>> 14 | fl << 18) ^ (fh >>> 18 | fl << 14) ^ (fl >>> 9 | fh << 23); + s1l = (fl >>> 14 | fh << 18) ^ (fl >>> 18 | fh << 14) ^ (fh >>> 9 | fl << 23); + bch = bh & ch; + bcl = bl & cl; + majh = bch ^ bh & dh ^ cdh; + majl = bcl ^ bl & dl ^ cdl; + chh = fh & gh ^ ~fh & hh; + chl = fl & gl ^ ~fl & hl; + t1h = blocks2[j + 6]; + t1l = blocks2[j + 7]; + t2h = K[j + 6]; + t2l = K[j + 7]; + c1 = (t2l & 65535) + (t1l & 65535) + (chl & 65535) + (s1l & 65535) + (el & 65535); + c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (el >>> 16) + (c1 >>> 16); + c3 = (t2h & 65535) + (t1h & 65535) + (chh & 65535) + (s1h & 65535) + (eh & 65535) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (eh >>> 16) + (c3 >>> 16); + t1h = c4 << 16 | c3 & 65535; + t1l = c2 << 16 | c1 & 65535; + c1 = (majl & 65535) + (s0l & 65535); + c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16); + c3 = (majh & 65535) + (s0h & 65535) + (c2 >>> 16); + c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16); + t2h = c4 << 16 | c3 & 65535; + t2l = c2 << 16 | c1 & 65535; + c1 = (al & 65535) + (t1l & 65535); + c2 = (al >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (ah & 65535) + (t1h & 65535) + (c2 >>> 16); + c4 = (ah >>> 16) + (t1h >>> 16) + (c3 >>> 16); + eh = c4 << 16 | c3 & 65535; + el = c2 << 16 | c1 & 65535; + c1 = (t2l & 65535) + (t1l & 65535); + c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16); + c3 = (t2h & 65535) + (t1h & 65535) + (c2 >>> 16); + c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16); + ah = c4 << 16 | c3 & 65535; + al = c2 << 16 | c1 & 65535; + } + c1 = (h0l & 65535) + (al & 65535); + c2 = (h0l >>> 16) + (al >>> 16) + (c1 >>> 16); + c3 = (h0h & 65535) + (ah & 65535) + (c2 >>> 16); + c4 = (h0h >>> 16) + (ah >>> 16) + (c3 >>> 16); + this.h0h = c4 << 16 | c3 & 65535; + this.h0l = c2 << 16 | c1 & 65535; + c1 = (h1l & 65535) + (bl & 65535); + c2 = (h1l >>> 16) + (bl >>> 16) + (c1 >>> 16); + c3 = (h1h & 65535) + (bh & 65535) + (c2 >>> 16); + c4 = (h1h >>> 16) + (bh >>> 16) + (c3 >>> 16); + this.h1h = c4 << 16 | c3 & 65535; + this.h1l = c2 << 16 | c1 & 65535; + c1 = (h2l & 65535) + (cl & 65535); + c2 = (h2l >>> 16) + (cl >>> 16) + (c1 >>> 16); + c3 = (h2h & 65535) + (ch & 65535) + (c2 >>> 16); + c4 = (h2h >>> 16) + (ch >>> 16) + (c3 >>> 16); + this.h2h = c4 << 16 | c3 & 65535; + this.h2l = c2 << 16 | c1 & 65535; + c1 = (h3l & 65535) + (dl & 65535); + c2 = (h3l >>> 16) + (dl >>> 16) + (c1 >>> 16); + c3 = (h3h & 65535) + (dh & 65535) + (c2 >>> 16); + c4 = (h3h >>> 16) + (dh >>> 16) + (c3 >>> 16); + this.h3h = c4 << 16 | c3 & 65535; + this.h3l = c2 << 16 | c1 & 65535; + c1 = (h4l & 65535) + (el & 65535); + c2 = (h4l >>> 16) + (el >>> 16) + (c1 >>> 16); + c3 = (h4h & 65535) + (eh & 65535) + (c2 >>> 16); + c4 = (h4h >>> 16) + (eh >>> 16) + (c3 >>> 16); + this.h4h = c4 << 16 | c3 & 65535; + this.h4l = c2 << 16 | c1 & 65535; + c1 = (h5l & 65535) + (fl & 65535); + c2 = (h5l >>> 16) + (fl >>> 16) + (c1 >>> 16); + c3 = (h5h & 65535) + (fh & 65535) + (c2 >>> 16); + c4 = (h5h >>> 16) + (fh >>> 16) + (c3 >>> 16); + this.h5h = c4 << 16 | c3 & 65535; + this.h5l = c2 << 16 | c1 & 65535; + c1 = (h6l & 65535) + (gl & 65535); + c2 = (h6l >>> 16) + (gl >>> 16) + (c1 >>> 16); + c3 = (h6h & 65535) + (gh & 65535) + (c2 >>> 16); + c4 = (h6h >>> 16) + (gh >>> 16) + (c3 >>> 16); + this.h6h = c4 << 16 | c3 & 65535; + this.h6l = c2 << 16 | c1 & 65535; + c1 = (h7l & 65535) + (hl & 65535); + c2 = (h7l >>> 16) + (hl >>> 16) + (c1 >>> 16); + c3 = (h7h & 65535) + (hh & 65535) + (c2 >>> 16); + c4 = (h7h >>> 16) + (hh >>> 16) + (c3 >>> 16); + this.h7h = c4 << 16 | c3 & 65535; + this.h7l = c2 << 16 | c1 & 65535; +}; +Sha512.prototype.hex = function() { + this.finalize(); + const h0h = this.h0h; + const h0l = this.h0l; + const h1h = this.h1h; + const h1l = this.h1l; + const h2h = this.h2h; + const h2l = this.h2l; + const h3h = this.h3h; + const h3l = this.h3l; + const h4h = this.h4h; + const h4l = this.h4l; + const h5h = this.h5h; + const h5l = this.h5l; + const h6h = this.h6h; + const h6l = this.h6l; + const h7h = this.h7h; + const h7l = this.h7l; + const bits = this.bits; + let hex = HEX_CHARS[h0h >>> 28 & 15] + HEX_CHARS[h0h >>> 24 & 15] + HEX_CHARS[h0h >>> 20 & 15] + HEX_CHARS[h0h >>> 16 & 15] + HEX_CHARS[h0h >>> 12 & 15] + HEX_CHARS[h0h >>> 8 & 15] + HEX_CHARS[h0h >>> 4 & 15] + HEX_CHARS[h0h & 15] + HEX_CHARS[h0l >>> 28 & 15] + HEX_CHARS[h0l >>> 24 & 15] + HEX_CHARS[h0l >>> 20 & 15] + HEX_CHARS[h0l >>> 16 & 15] + HEX_CHARS[h0l >>> 12 & 15] + HEX_CHARS[h0l >>> 8 & 15] + HEX_CHARS[h0l >>> 4 & 15] + HEX_CHARS[h0l & 15] + HEX_CHARS[h1h >>> 28 & 15] + HEX_CHARS[h1h >>> 24 & 15] + HEX_CHARS[h1h >>> 20 & 15] + HEX_CHARS[h1h >>> 16 & 15] + HEX_CHARS[h1h >>> 12 & 15] + HEX_CHARS[h1h >>> 8 & 15] + HEX_CHARS[h1h >>> 4 & 15] + HEX_CHARS[h1h & 15] + HEX_CHARS[h1l >>> 28 & 15] + HEX_CHARS[h1l >>> 24 & 15] + HEX_CHARS[h1l >>> 20 & 15] + HEX_CHARS[h1l >>> 16 & 15] + HEX_CHARS[h1l >>> 12 & 15] + HEX_CHARS[h1l >>> 8 & 15] + HEX_CHARS[h1l >>> 4 & 15] + HEX_CHARS[h1l & 15] + HEX_CHARS[h2h >>> 28 & 15] + HEX_CHARS[h2h >>> 24 & 15] + HEX_CHARS[h2h >>> 20 & 15] + HEX_CHARS[h2h >>> 16 & 15] + HEX_CHARS[h2h >>> 12 & 15] + HEX_CHARS[h2h >>> 8 & 15] + HEX_CHARS[h2h >>> 4 & 15] + HEX_CHARS[h2h & 15] + HEX_CHARS[h2l >>> 28 & 15] + HEX_CHARS[h2l >>> 24 & 15] + HEX_CHARS[h2l >>> 20 & 15] + HEX_CHARS[h2l >>> 16 & 15] + HEX_CHARS[h2l >>> 12 & 15] + HEX_CHARS[h2l >>> 8 & 15] + HEX_CHARS[h2l >>> 4 & 15] + HEX_CHARS[h2l & 15] + HEX_CHARS[h3h >>> 28 & 15] + HEX_CHARS[h3h >>> 24 & 15] + HEX_CHARS[h3h >>> 20 & 15] + HEX_CHARS[h3h >>> 16 & 15] + HEX_CHARS[h3h >>> 12 & 15] + HEX_CHARS[h3h >>> 8 & 15] + HEX_CHARS[h3h >>> 4 & 15] + HEX_CHARS[h3h & 15]; + if (bits >= 256) { + hex += HEX_CHARS[h3l >>> 28 & 15] + HEX_CHARS[h3l >>> 24 & 15] + HEX_CHARS[h3l >>> 20 & 15] + HEX_CHARS[h3l >>> 16 & 15] + HEX_CHARS[h3l >>> 12 & 15] + HEX_CHARS[h3l >>> 8 & 15] + HEX_CHARS[h3l >>> 4 & 15] + HEX_CHARS[h3l & 15]; + } + if (bits >= 384) { + hex += HEX_CHARS[h4h >>> 28 & 15] + HEX_CHARS[h4h >>> 24 & 15] + HEX_CHARS[h4h >>> 20 & 15] + HEX_CHARS[h4h >>> 16 & 15] + HEX_CHARS[h4h >>> 12 & 15] + HEX_CHARS[h4h >>> 8 & 15] + HEX_CHARS[h4h >>> 4 & 15] + HEX_CHARS[h4h & 15] + HEX_CHARS[h4l >>> 28 & 15] + HEX_CHARS[h4l >>> 24 & 15] + HEX_CHARS[h4l >>> 20 & 15] + HEX_CHARS[h4l >>> 16 & 15] + HEX_CHARS[h4l >>> 12 & 15] + HEX_CHARS[h4l >>> 8 & 15] + HEX_CHARS[h4l >>> 4 & 15] + HEX_CHARS[h4l & 15] + HEX_CHARS[h5h >>> 28 & 15] + HEX_CHARS[h5h >>> 24 & 15] + HEX_CHARS[h5h >>> 20 & 15] + HEX_CHARS[h5h >>> 16 & 15] + HEX_CHARS[h5h >>> 12 & 15] + HEX_CHARS[h5h >>> 8 & 15] + HEX_CHARS[h5h >>> 4 & 15] + HEX_CHARS[h5h & 15] + HEX_CHARS[h5l >>> 28 & 15] + HEX_CHARS[h5l >>> 24 & 15] + HEX_CHARS[h5l >>> 20 & 15] + HEX_CHARS[h5l >>> 16 & 15] + HEX_CHARS[h5l >>> 12 & 15] + HEX_CHARS[h5l >>> 8 & 15] + HEX_CHARS[h5l >>> 4 & 15] + HEX_CHARS[h5l & 15]; + } + if (bits == 512) { + hex += HEX_CHARS[h6h >>> 28 & 15] + HEX_CHARS[h6h >>> 24 & 15] + HEX_CHARS[h6h >>> 20 & 15] + HEX_CHARS[h6h >>> 16 & 15] + HEX_CHARS[h6h >>> 12 & 15] + HEX_CHARS[h6h >>> 8 & 15] + HEX_CHARS[h6h >>> 4 & 15] + HEX_CHARS[h6h & 15] + HEX_CHARS[h6l >>> 28 & 15] + HEX_CHARS[h6l >>> 24 & 15] + HEX_CHARS[h6l >>> 20 & 15] + HEX_CHARS[h6l >>> 16 & 15] + HEX_CHARS[h6l >>> 12 & 15] + HEX_CHARS[h6l >>> 8 & 15] + HEX_CHARS[h6l >>> 4 & 15] + HEX_CHARS[h6l & 15] + HEX_CHARS[h7h >>> 28 & 15] + HEX_CHARS[h7h >>> 24 & 15] + HEX_CHARS[h7h >>> 20 & 15] + HEX_CHARS[h7h >>> 16 & 15] + HEX_CHARS[h7h >>> 12 & 15] + HEX_CHARS[h7h >>> 8 & 15] + HEX_CHARS[h7h >>> 4 & 15] + HEX_CHARS[h7h & 15] + HEX_CHARS[h7l >>> 28 & 15] + HEX_CHARS[h7l >>> 24 & 15] + HEX_CHARS[h7l >>> 20 & 15] + HEX_CHARS[h7l >>> 16 & 15] + HEX_CHARS[h7l >>> 12 & 15] + HEX_CHARS[h7l >>> 8 & 15] + HEX_CHARS[h7l >>> 4 & 15] + HEX_CHARS[h7l & 15]; + } + return hex; +}; +Sha512.prototype.toString = Sha512.prototype.hex; +Sha512.prototype.digest = function() { + this.finalize(); + const h0h = this.h0h; + const h0l = this.h0l; + const h1h = this.h1h; + const h1l = this.h1l; + const h2h = this.h2h; + const h2l = this.h2l; + const h3h = this.h3h; + const h3l = this.h3l; + const h4h = this.h4h; + const h4l = this.h4l; + const h5h = this.h5h; + const h5l = this.h5l; + const h6h = this.h6h; + const h6l = this.h6l; + const h7h = this.h7h; + const h7l = this.h7l; + const bits = this.bits; + const arr = [ + h0h >>> 24 & 255, + h0h >>> 16 & 255, + h0h >>> 8 & 255, + h0h & 255, + h0l >>> 24 & 255, + h0l >>> 16 & 255, + h0l >>> 8 & 255, + h0l & 255, + h1h >>> 24 & 255, + h1h >>> 16 & 255, + h1h >>> 8 & 255, + h1h & 255, + h1l >>> 24 & 255, + h1l >>> 16 & 255, + h1l >>> 8 & 255, + h1l & 255, + h2h >>> 24 & 255, + h2h >>> 16 & 255, + h2h >>> 8 & 255, + h2h & 255, + h2l >>> 24 & 255, + h2l >>> 16 & 255, + h2l >>> 8 & 255, + h2l & 255, + h3h >>> 24 & 255, + h3h >>> 16 & 255, + h3h >>> 8 & 255, + h3h & 255 + ]; + if (bits >= 256) { + arr.push( + h3l >>> 24 & 255, + h3l >>> 16 & 255, + h3l >>> 8 & 255, + h3l & 255 + ); + } + if (bits >= 384) { + arr.push( + h4h >>> 24 & 255, + h4h >>> 16 & 255, + h4h >>> 8 & 255, + h4h & 255, + h4l >>> 24 & 255, + h4l >>> 16 & 255, + h4l >>> 8 & 255, + h4l & 255, + h5h >>> 24 & 255, + h5h >>> 16 & 255, + h5h >>> 8 & 255, + h5h & 255, + h5l >>> 24 & 255, + h5l >>> 16 & 255, + h5l >>> 8 & 255, + h5l & 255 + ); + } + if (bits == 512) { + arr.push( + h6h >>> 24 & 255, + h6h >>> 16 & 255, + h6h >>> 8 & 255, + h6h & 255, + h6l >>> 24 & 255, + h6l >>> 16 & 255, + h6l >>> 8 & 255, + h6l & 255, + h7h >>> 24 & 255, + h7h >>> 16 & 255, + h7h >>> 8 & 255, + h7h & 255, + h7l >>> 24 & 255, + h7l >>> 16 & 255, + h7l >>> 8 & 255, + h7l & 255 + ); + } + return arr; +}; +Sha512.prototype.array = Sha512.prototype.digest; +Sha512.prototype.arrayBuffer = function() { + this.finalize(); + const bits = this.bits; + const buffer = new ArrayBuffer(bits / 8); + const dataView = new DataView(buffer); + dataView.setUint32(0, this.h0h); + dataView.setUint32(4, this.h0l); + dataView.setUint32(8, this.h1h); + dataView.setUint32(12, this.h1l); + dataView.setUint32(16, this.h2h); + dataView.setUint32(20, this.h2l); + dataView.setUint32(24, this.h3h); + if (bits >= 256) { + dataView.setUint32(28, this.h3l); + } + if (bits >= 384) { + dataView.setUint32(32, this.h4h); + dataView.setUint32(36, this.h4l); + dataView.setUint32(40, this.h5h); + dataView.setUint32(44, this.h5l); + } + if (bits == 512) { + dataView.setUint32(48, this.h6h); + dataView.setUint32(52, this.h6l); + dataView.setUint32(56, this.h7h); + dataView.setUint32(60, this.h7l); + } + return buffer; +}; +Sha512.prototype.clone = function() { + const hash = new Sha512(this.bits, false); + this.copyTo(hash); + return hash; +}; +Sha512.prototype.copyTo = function(hash) { + let i = 0; + const attrs = [ + "h0h", + "h0l", + "h1h", + "h1l", + "h2h", + "h2l", + "h3h", + "h3l", + "h4h", + "h4l", + "h5h", + "h5l", + "h6h", + "h6l", + "h7h", + "h7l", + "start", + "bytes", + "hBytes", + "finalized", + "hashed", + "lastByteIndex" + ]; + for (i = 0; i < attrs.length; ++i) { + hash[attrs[i]] = this[attrs[i]]; + } + for (i = 0; i < this.blocks.length; ++i) { + hash.blocks[i] = this.blocks[i]; + } +}; +export { + createMethod +}; +//# sourceMappingURL=sha512.js.map diff --git a/lib/sha512.js.map b/lib/sha512.js.map new file mode 100644 index 0000000..2d0dedf --- /dev/null +++ b/lib/sha512.js.map @@ -0,0 +1 @@ +{"version":3,"file":"sha512.js","sources":["../src/sha512.ts"],"sourcesContent":["/*\n * [js-sha512]{@link https://github.com/emn178/js-sha512}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2024\n * @license MIT\n */\n\n// @ts-nocheck\nconst INPUT_ERROR = 'input is invalid type';\nconst FINALIZE_ERROR = 'finalize already called';\n\nconst ARRAY_BUFFER = typeof ArrayBuffer !== 'undefined';\nconst HEX_CHARS = '0123456789abcdef'.split('');\nconst EXTRA = [-2147483648, 8388608, 32768, 128];\nconst SHIFT = [24, 16, 8, 0];\nconst K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f,\n 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242,\n 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235,\n 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275,\n 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f,\n 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc,\n 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6,\n 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218,\n 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99,\n 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc,\n 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915,\n 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba,\n 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc,\n 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817,\n];\n\nconst OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\nconst blocks: number[] = [];\n\nconst isArray = Array.isArray;\nconst isView = ArrayBuffer.isView;\n\n// [message: string, isString: bool]\nconst formatMessage = function (\n message: string | ArrayBuffer | ArrayBufferView,\n) {\n const type = typeof message;\n if (type === 'string') {\n return [message, true];\n }\n if (type !== 'object' || message === null) {\n throw new Error(INPUT_ERROR);\n }\n if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n return [new Uint8Array(message), false];\n }\n if (!isArray(message) && !isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n return [message, false];\n};\n\nconst createOutputMethod = function (\n outputType,\n bits,\n): (message) => typeof Sha512 {\n return function (message) {\n return new (Sha512 as any)(bits, true).update(message)[outputType]();\n };\n};\n\nexport const createMethod = function (bits): {\n array: (d: Uint8Array) => Uint8Array;\n} {\n const method = createOutputMethod('hex', bits);\n //@ts-expect-error, create does exits on the prototype\n method.create = function () {\n return new (Sha512 as any)(bits);\n };\n //@ts-expect-error, update does exits on the prototype\n method.update = function (message) {\n //@ts-expect-error, this is a valid return\n return method.create().update(message);\n };\n for (let i = 0; i < OUTPUT_TYPES.length; ++i) {\n const type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, bits);\n }\n //@ts-expect-error, this is a valid return\n return method;\n};\n\n/**\n * @class\n * @param bits\n * @param sharedMemory\n * @constructor\n */\nfunction Sha512(bits?: number, sharedMemory?) {\n if (sharedMemory) {\n blocks[0] =\n blocks[1] =\n blocks[2] =\n blocks[3] =\n blocks[4] =\n blocks[5] =\n blocks[6] =\n blocks[7] =\n blocks[8] =\n blocks[9] =\n blocks[10] =\n blocks[11] =\n blocks[12] =\n blocks[13] =\n blocks[14] =\n blocks[15] =\n blocks[16] =\n blocks[17] =\n blocks[18] =\n blocks[19] =\n blocks[20] =\n blocks[21] =\n blocks[22] =\n blocks[23] =\n blocks[24] =\n blocks[25] =\n blocks[26] =\n blocks[27] =\n blocks[28] =\n blocks[29] =\n blocks[30] =\n blocks[31] =\n blocks[32] =\n 0;\n this.blocks = blocks;\n } else {\n this.blocks = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ];\n }\n\n if (bits == 384) {\n this.h0h = 0xcbbb9d5d;\n this.h0l = 0xc1059ed8;\n this.h1h = 0x629a292a;\n this.h1l = 0x367cd507;\n this.h2h = 0x9159015a;\n this.h2l = 0x3070dd17;\n this.h3h = 0x152fecd8;\n this.h3l = 0xf70e5939;\n this.h4h = 0x67332667;\n this.h4l = 0xffc00b31;\n this.h5h = 0x8eb44a87;\n this.h5l = 0x68581511;\n this.h6h = 0xdb0c2e0d;\n this.h6l = 0x64f98fa7;\n this.h7h = 0x47b5481d;\n this.h7l = 0xbefa4fa4;\n } else if (bits == 256) {\n this.h0h = 0x22312194;\n this.h0l = 0xfc2bf72c;\n this.h1h = 0x9f555fa3;\n this.h1l = 0xc84c64c2;\n this.h2h = 0x2393b86b;\n this.h2l = 0x6f53b151;\n this.h3h = 0x96387719;\n this.h3l = 0x5940eabd;\n this.h4h = 0x96283ee2;\n this.h4l = 0xa88effe3;\n this.h5h = 0xbe5e1e25;\n this.h5l = 0x53863992;\n this.h6h = 0x2b0199fc;\n this.h6l = 0x2c85b8aa;\n this.h7h = 0x0eb72ddc;\n this.h7l = 0x81c52ca2;\n } else if (bits == 224) {\n this.h0h = 0x8c3d37c8;\n this.h0l = 0x19544da2;\n this.h1h = 0x73e19966;\n this.h1l = 0x89dcd4d6;\n this.h2h = 0x1dfab7ae;\n this.h2l = 0x32ff9c82;\n this.h3h = 0x679dd514;\n this.h3l = 0x582f9fcf;\n this.h4h = 0x0f6d2b69;\n this.h4l = 0x7bd44da8;\n this.h5h = 0x77e36f73;\n this.h5l = 0x04c48942;\n this.h6h = 0x3f9d85a8;\n this.h6l = 0x6a1d36c8;\n this.h7h = 0x1112e6ad;\n this.h7l = 0x91d692a1;\n } else {\n // 512\n this.h0h = 0x6a09e667;\n this.h0l = 0xf3bcc908;\n this.h1h = 0xbb67ae85;\n this.h1l = 0x84caa73b;\n this.h2h = 0x3c6ef372;\n this.h2l = 0xfe94f82b;\n this.h3h = 0xa54ff53a;\n this.h3l = 0x5f1d36f1;\n this.h4h = 0x510e527f;\n this.h4l = 0xade682d1;\n this.h5h = 0x9b05688c;\n this.h5l = 0x2b3e6c1f;\n this.h6h = 0x1f83d9ab;\n this.h6l = 0xfb41bd6b;\n this.h7h = 0x5be0cd19;\n this.h7l = 0x137e2179;\n }\n this.bits = bits;\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n}\n\nSha512.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n const result = formatMessage(message);\n message = result[0];\n const isString = result[1];\n let code;\n let index = 0;\n let i;\n const length = message.length;\n const blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n this.block =\n blocks[1] =\n blocks[2] =\n blocks[3] =\n blocks[4] =\n blocks[5] =\n blocks[6] =\n blocks[7] =\n blocks[8] =\n blocks[9] =\n blocks[10] =\n blocks[11] =\n blocks[12] =\n blocks[13] =\n blocks[14] =\n blocks[15] =\n blocks[16] =\n blocks[17] =\n blocks[18] =\n blocks[19] =\n blocks[20] =\n blocks[21] =\n blocks[22] =\n blocks[23] =\n blocks[24] =\n blocks[25] =\n blocks[26] =\n blocks[27] =\n blocks[28] =\n blocks[29] =\n blocks[30] =\n blocks[31] =\n blocks[32] =\n 0;\n }\n\n if (isString) {\n for (i = this.start; index < length && i < 128; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >>> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >>> 2] |= (0xc0 | (code >>> 6)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >>> 2] |= (0xe0 | (code >>> 12)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code =\n 0x10000 +\n (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >>> 2] |= (0xf0 | (code >>> 18)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n } else {\n for (i = this.start; index < length && i < 128; ++index) {\n blocks[i >>> 2] |= message[index] << SHIFT[i++ & 3];\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 128) {\n this.block = blocks[32];\n this.start = i - 128;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += (this.bytes / 4294967296) << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n};\n\nSha512.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n const blocks = this.blocks;\n const i = this.lastByteIndex;\n blocks[32] = this.block;\n blocks[i >>> 2] |= EXTRA[i & 3];\n this.block = blocks[32];\n if (i >= 112) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[1] =\n blocks[2] =\n blocks[3] =\n blocks[4] =\n blocks[5] =\n blocks[6] =\n blocks[7] =\n blocks[8] =\n blocks[9] =\n blocks[10] =\n blocks[11] =\n blocks[12] =\n blocks[13] =\n blocks[14] =\n blocks[15] =\n blocks[16] =\n blocks[17] =\n blocks[18] =\n blocks[19] =\n blocks[20] =\n blocks[21] =\n blocks[22] =\n blocks[23] =\n blocks[24] =\n blocks[25] =\n blocks[26] =\n blocks[27] =\n blocks[28] =\n blocks[29] =\n blocks[30] =\n blocks[31] =\n blocks[32] =\n 0;\n }\n blocks[30] = (this.hBytes << 3) | (this.bytes >>> 29);\n blocks[31] = this.bytes << 3;\n this.hash();\n};\n\nSha512.prototype.hash = function () {\n const h0h = this.h0h;\n const h0l = this.h0l;\n const h1h = this.h1h;\n const h1l = this.h1l;\n const h2h = this.h2h;\n const h2l = this.h2l;\n const h3h = this.h3h;\n const h3l = this.h3l;\n const h4h = this.h4h;\n const h4l = this.h4l;\n const h5h = this.h5h;\n const h5l = this.h5l;\n const h6h = this.h6h;\n const h6l = this.h6l;\n const h7h = this.h7h;\n const h7l = this.h7l;\n const blocks = this.blocks;\n let j;\n let s0h;\n let s0l;\n let s1h;\n let s1l;\n let c1;\n let c2;\n let c3;\n let c4;\n let abh;\n let abl;\n let dah;\n let dal;\n let cdh;\n let cdl;\n let bch;\n let bcl;\n let majh;\n let majl;\n let t1h;\n let t1l;\n let t2h;\n let t2l;\n let chh;\n let chl;\n\n for (j = 32; j < 160; j += 2) {\n t1h = blocks[j - 30];\n t1l = blocks[j - 29];\n s0h =\n ((t1h >>> 1) | (t1l << 31)) ^ ((t1h >>> 8) | (t1l << 24)) ^ (t1h >>> 7);\n s0l =\n ((t1l >>> 1) | (t1h << 31)) ^\n ((t1l >>> 8) | (t1h << 24)) ^\n ((t1l >>> 7) | (t1h << 25));\n\n t1h = blocks[j - 4];\n t1l = blocks[j - 3];\n s1h =\n ((t1h >>> 19) | (t1l << 13)) ^ ((t1l >>> 29) | (t1h << 3)) ^ (t1h >>> 6);\n s1l =\n ((t1l >>> 19) | (t1h << 13)) ^\n ((t1h >>> 29) | (t1l << 3)) ^\n ((t1l >>> 6) | (t1h << 26));\n\n t1h = blocks[j - 32];\n t1l = blocks[j - 31];\n t2h = blocks[j - 14];\n t2l = blocks[j - 13];\n\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (s0l & 0xffff) + (s1l & 0xffff);\n c2 =\n (t2l >>> 16) + (t1l >>> 16) + (s0l >>> 16) + (s1l >>> 16) + (c1 >>> 16);\n c3 =\n (t2h & 0xffff) +\n (t1h & 0xffff) +\n (s0h & 0xffff) +\n (s1h & 0xffff) +\n (c2 >>> 16);\n c4 =\n (t2h >>> 16) + (t1h >>> 16) + (s0h >>> 16) + (s1h >>> 16) + (c3 >>> 16);\n\n blocks[j] = (c4 << 16) | (c3 & 0xffff);\n blocks[j + 1] = (c2 << 16) | (c1 & 0xffff);\n }\n\n let ah = h0h;\n let al = h0l;\n let bh = h1h;\n let bl = h1l;\n let ch = h2h;\n let cl = h2l;\n let dh = h3h;\n let dl = h3l;\n let eh = h4h;\n let el = h4l;\n let fh = h5h;\n let fl = h5l;\n let gh = h6h;\n let gl = h6l;\n let hh = h7h;\n let hl = h7l;\n bch = bh & ch;\n bcl = bl & cl;\n for (j = 0; j < 160; j += 8) {\n s0h =\n ((ah >>> 28) | (al << 4)) ^\n ((al >>> 2) | (ah << 30)) ^\n ((al >>> 7) | (ah << 25));\n s0l =\n ((al >>> 28) | (ah << 4)) ^\n ((ah >>> 2) | (al << 30)) ^\n ((ah >>> 7) | (al << 25));\n\n s1h =\n ((eh >>> 14) | (el << 18)) ^\n ((eh >>> 18) | (el << 14)) ^\n ((el >>> 9) | (eh << 23));\n s1l =\n ((el >>> 14) | (eh << 18)) ^\n ((el >>> 18) | (eh << 14)) ^\n ((eh >>> 9) | (el << 23));\n\n abh = ah & bh;\n abl = al & bl;\n majh = abh ^ (ah & ch) ^ bch;\n majl = abl ^ (al & cl) ^ bcl;\n\n chh = (eh & fh) ^ (~eh & gh);\n chl = (el & fl) ^ (~el & gl);\n\n t1h = blocks[j];\n t1l = blocks[j + 1];\n t2h = K[j];\n t2l = K[j + 1];\n\n c1 =\n (t2l & 0xffff) +\n (t1l & 0xffff) +\n (chl & 0xffff) +\n (s1l & 0xffff) +\n (hl & 0xffff);\n c2 =\n (t2l >>> 16) +\n (t1l >>> 16) +\n (chl >>> 16) +\n (s1l >>> 16) +\n (hl >>> 16) +\n (c1 >>> 16);\n c3 =\n (t2h & 0xffff) +\n (t1h & 0xffff) +\n (chh & 0xffff) +\n (s1h & 0xffff) +\n (hh & 0xffff) +\n (c2 >>> 16);\n c4 =\n (t2h >>> 16) +\n (t1h >>> 16) +\n (chh >>> 16) +\n (s1h >>> 16) +\n (hh >>> 16) +\n (c3 >>> 16);\n\n t1h = (c4 << 16) | (c3 & 0xffff);\n t1l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (majl & 0xffff) + (s0l & 0xffff);\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\n\n t2h = (c4 << 16) | (c3 & 0xffff);\n t2l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (dl & 0xffff) + (t1l & 0xffff);\n c2 = (dl >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (dh & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (dh >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n\n hh = (c4 << 16) | (c3 & 0xffff);\n hl = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n\n dh = (c4 << 16) | (c3 & 0xffff);\n dl = (c2 << 16) | (c1 & 0xffff);\n\n s0h =\n ((dh >>> 28) | (dl << 4)) ^\n ((dl >>> 2) | (dh << 30)) ^\n ((dl >>> 7) | (dh << 25));\n s0l =\n ((dl >>> 28) | (dh << 4)) ^\n ((dh >>> 2) | (dl << 30)) ^\n ((dh >>> 7) | (dl << 25));\n\n s1h =\n ((hh >>> 14) | (hl << 18)) ^\n ((hh >>> 18) | (hl << 14)) ^\n ((hl >>> 9) | (hh << 23));\n s1l =\n ((hl >>> 14) | (hh << 18)) ^\n ((hl >>> 18) | (hh << 14)) ^\n ((hh >>> 9) | (hl << 23));\n\n dah = dh & ah;\n dal = dl & al;\n majh = dah ^ (dh & bh) ^ abh;\n majl = dal ^ (dl & bl) ^ abl;\n\n chh = (hh & eh) ^ (~hh & fh);\n chl = (hl & el) ^ (~hl & fl);\n\n t1h = blocks[j + 2];\n t1l = blocks[j + 3];\n t2h = K[j + 2];\n t2l = K[j + 3];\n\n c1 =\n (t2l & 0xffff) +\n (t1l & 0xffff) +\n (chl & 0xffff) +\n (s1l & 0xffff) +\n (gl & 0xffff);\n c2 =\n (t2l >>> 16) +\n (t1l >>> 16) +\n (chl >>> 16) +\n (s1l >>> 16) +\n (gl >>> 16) +\n (c1 >>> 16);\n c3 =\n (t2h & 0xffff) +\n (t1h & 0xffff) +\n (chh & 0xffff) +\n (s1h & 0xffff) +\n (gh & 0xffff) +\n (c2 >>> 16);\n c4 =\n (t2h >>> 16) +\n (t1h >>> 16) +\n (chh >>> 16) +\n (s1h >>> 16) +\n (gh >>> 16) +\n (c3 >>> 16);\n\n t1h = (c4 << 16) | (c3 & 0xffff);\n t1l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (majl & 0xffff) + (s0l & 0xffff);\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\n\n t2h = (c4 << 16) | (c3 & 0xffff);\n t2l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (cl & 0xffff) + (t1l & 0xffff);\n c2 = (cl >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (ch & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (ch >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n\n gh = (c4 << 16) | (c3 & 0xffff);\n gl = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n\n ch = (c4 << 16) | (c3 & 0xffff);\n cl = (c2 << 16) | (c1 & 0xffff);\n\n s0h =\n ((ch >>> 28) | (cl << 4)) ^\n ((cl >>> 2) | (ch << 30)) ^\n ((cl >>> 7) | (ch << 25));\n s0l =\n ((cl >>> 28) | (ch << 4)) ^\n ((ch >>> 2) | (cl << 30)) ^\n ((ch >>> 7) | (cl << 25));\n\n s1h =\n ((gh >>> 14) | (gl << 18)) ^\n ((gh >>> 18) | (gl << 14)) ^\n ((gl >>> 9) | (gh << 23));\n s1l =\n ((gl >>> 14) | (gh << 18)) ^\n ((gl >>> 18) | (gh << 14)) ^\n ((gh >>> 9) | (gl << 23));\n\n cdh = ch & dh;\n cdl = cl & dl;\n majh = cdh ^ (ch & ah) ^ dah;\n majl = cdl ^ (cl & al) ^ dal;\n\n chh = (gh & hh) ^ (~gh & eh);\n chl = (gl & hl) ^ (~gl & el);\n\n t1h = blocks[j + 4];\n t1l = blocks[j + 5];\n t2h = K[j + 4];\n t2l = K[j + 5];\n\n c1 =\n (t2l & 0xffff) +\n (t1l & 0xffff) +\n (chl & 0xffff) +\n (s1l & 0xffff) +\n (fl & 0xffff);\n c2 =\n (t2l >>> 16) +\n (t1l >>> 16) +\n (chl >>> 16) +\n (s1l >>> 16) +\n (fl >>> 16) +\n (c1 >>> 16);\n c3 =\n (t2h & 0xffff) +\n (t1h & 0xffff) +\n (chh & 0xffff) +\n (s1h & 0xffff) +\n (fh & 0xffff) +\n (c2 >>> 16);\n c4 =\n (t2h >>> 16) +\n (t1h >>> 16) +\n (chh >>> 16) +\n (s1h >>> 16) +\n (fh >>> 16) +\n (c3 >>> 16);\n\n t1h = (c4 << 16) | (c3 & 0xffff);\n t1l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (majl & 0xffff) + (s0l & 0xffff);\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\n\n t2h = (c4 << 16) | (c3 & 0xffff);\n t2l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (bl & 0xffff) + (t1l & 0xffff);\n c2 = (bl >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (bh & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (bh >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n\n fh = (c4 << 16) | (c3 & 0xffff);\n fl = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n\n bh = (c4 << 16) | (c3 & 0xffff);\n bl = (c2 << 16) | (c1 & 0xffff);\n\n s0h =\n ((bh >>> 28) | (bl << 4)) ^\n ((bl >>> 2) | (bh << 30)) ^\n ((bl >>> 7) | (bh << 25));\n s0l =\n ((bl >>> 28) | (bh << 4)) ^\n ((bh >>> 2) | (bl << 30)) ^\n ((bh >>> 7) | (bl << 25));\n\n s1h =\n ((fh >>> 14) | (fl << 18)) ^\n ((fh >>> 18) | (fl << 14)) ^\n ((fl >>> 9) | (fh << 23));\n s1l =\n ((fl >>> 14) | (fh << 18)) ^\n ((fl >>> 18) | (fh << 14)) ^\n ((fh >>> 9) | (fl << 23));\n\n bch = bh & ch;\n bcl = bl & cl;\n majh = bch ^ (bh & dh) ^ cdh;\n majl = bcl ^ (bl & dl) ^ cdl;\n\n chh = (fh & gh) ^ (~fh & hh);\n chl = (fl & gl) ^ (~fl & hl);\n\n t1h = blocks[j + 6];\n t1l = blocks[j + 7];\n t2h = K[j + 6];\n t2l = K[j + 7];\n\n c1 =\n (t2l & 0xffff) +\n (t1l & 0xffff) +\n (chl & 0xffff) +\n (s1l & 0xffff) +\n (el & 0xffff);\n c2 =\n (t2l >>> 16) +\n (t1l >>> 16) +\n (chl >>> 16) +\n (s1l >>> 16) +\n (el >>> 16) +\n (c1 >>> 16);\n c3 =\n (t2h & 0xffff) +\n (t1h & 0xffff) +\n (chh & 0xffff) +\n (s1h & 0xffff) +\n (eh & 0xffff) +\n (c2 >>> 16);\n c4 =\n (t2h >>> 16) +\n (t1h >>> 16) +\n (chh >>> 16) +\n (s1h >>> 16) +\n (eh >>> 16) +\n (c3 >>> 16);\n\n t1h = (c4 << 16) | (c3 & 0xffff);\n t1l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (majl & 0xffff) + (s0l & 0xffff);\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\n\n t2h = (c4 << 16) | (c3 & 0xffff);\n t2l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (al & 0xffff) + (t1l & 0xffff);\n c2 = (al >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (ah & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (ah >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n\n eh = (c4 << 16) | (c3 & 0xffff);\n el = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\n\n ah = (c4 << 16) | (c3 & 0xffff);\n al = (c2 << 16) | (c1 & 0xffff);\n }\n\n c1 = (h0l & 0xffff) + (al & 0xffff);\n c2 = (h0l >>> 16) + (al >>> 16) + (c1 >>> 16);\n c3 = (h0h & 0xffff) + (ah & 0xffff) + (c2 >>> 16);\n c4 = (h0h >>> 16) + (ah >>> 16) + (c3 >>> 16);\n\n this.h0h = (c4 << 16) | (c3 & 0xffff);\n this.h0l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (h1l & 0xffff) + (bl & 0xffff);\n c2 = (h1l >>> 16) + (bl >>> 16) + (c1 >>> 16);\n c3 = (h1h & 0xffff) + (bh & 0xffff) + (c2 >>> 16);\n c4 = (h1h >>> 16) + (bh >>> 16) + (c3 >>> 16);\n\n this.h1h = (c4 << 16) | (c3 & 0xffff);\n this.h1l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (h2l & 0xffff) + (cl & 0xffff);\n c2 = (h2l >>> 16) + (cl >>> 16) + (c1 >>> 16);\n c3 = (h2h & 0xffff) + (ch & 0xffff) + (c2 >>> 16);\n c4 = (h2h >>> 16) + (ch >>> 16) + (c3 >>> 16);\n\n this.h2h = (c4 << 16) | (c3 & 0xffff);\n this.h2l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (h3l & 0xffff) + (dl & 0xffff);\n c2 = (h3l >>> 16) + (dl >>> 16) + (c1 >>> 16);\n c3 = (h3h & 0xffff) + (dh & 0xffff) + (c2 >>> 16);\n c4 = (h3h >>> 16) + (dh >>> 16) + (c3 >>> 16);\n\n this.h3h = (c4 << 16) | (c3 & 0xffff);\n this.h3l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (h4l & 0xffff) + (el & 0xffff);\n c2 = (h4l >>> 16) + (el >>> 16) + (c1 >>> 16);\n c3 = (h4h & 0xffff) + (eh & 0xffff) + (c2 >>> 16);\n c4 = (h4h >>> 16) + (eh >>> 16) + (c3 >>> 16);\n\n this.h4h = (c4 << 16) | (c3 & 0xffff);\n this.h4l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (h5l & 0xffff) + (fl & 0xffff);\n c2 = (h5l >>> 16) + (fl >>> 16) + (c1 >>> 16);\n c3 = (h5h & 0xffff) + (fh & 0xffff) + (c2 >>> 16);\n c4 = (h5h >>> 16) + (fh >>> 16) + (c3 >>> 16);\n\n this.h5h = (c4 << 16) | (c3 & 0xffff);\n this.h5l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (h6l & 0xffff) + (gl & 0xffff);\n c2 = (h6l >>> 16) + (gl >>> 16) + (c1 >>> 16);\n c3 = (h6h & 0xffff) + (gh & 0xffff) + (c2 >>> 16);\n c4 = (h6h >>> 16) + (gh >>> 16) + (c3 >>> 16);\n\n this.h6h = (c4 << 16) | (c3 & 0xffff);\n this.h6l = (c2 << 16) | (c1 & 0xffff);\n\n c1 = (h7l & 0xffff) + (hl & 0xffff);\n c2 = (h7l >>> 16) + (hl >>> 16) + (c1 >>> 16);\n c3 = (h7h & 0xffff) + (hh & 0xffff) + (c2 >>> 16);\n c4 = (h7h >>> 16) + (hh >>> 16) + (c3 >>> 16);\n\n this.h7h = (c4 << 16) | (c3 & 0xffff);\n this.h7l = (c2 << 16) | (c1 & 0xffff);\n};\n\nSha512.prototype.hex = function () {\n this.finalize();\n\n const h0h = this.h0h;\n const h0l = this.h0l;\n const h1h = this.h1h;\n const h1l = this.h1l;\n const h2h = this.h2h;\n const h2l = this.h2l;\n const h3h = this.h3h;\n const h3l = this.h3l;\n const h4h = this.h4h;\n const h4l = this.h4l;\n const h5h = this.h5h;\n const h5l = this.h5l;\n const h6h = this.h6h;\n const h6l = this.h6l;\n const h7h = this.h7h;\n const h7l = this.h7l;\n const bits = this.bits;\n\n let hex =\n HEX_CHARS[(h0h >>> 28) & 0x0f] +\n HEX_CHARS[(h0h >>> 24) & 0x0f] +\n HEX_CHARS[(h0h >>> 20) & 0x0f] +\n HEX_CHARS[(h0h >>> 16) & 0x0f] +\n HEX_CHARS[(h0h >>> 12) & 0x0f] +\n HEX_CHARS[(h0h >>> 8) & 0x0f] +\n HEX_CHARS[(h0h >>> 4) & 0x0f] +\n HEX_CHARS[h0h & 0x0f] +\n HEX_CHARS[(h0l >>> 28) & 0x0f] +\n HEX_CHARS[(h0l >>> 24) & 0x0f] +\n HEX_CHARS[(h0l >>> 20) & 0x0f] +\n HEX_CHARS[(h0l >>> 16) & 0x0f] +\n HEX_CHARS[(h0l >>> 12) & 0x0f] +\n HEX_CHARS[(h0l >>> 8) & 0x0f] +\n HEX_CHARS[(h0l >>> 4) & 0x0f] +\n HEX_CHARS[h0l & 0x0f] +\n HEX_CHARS[(h1h >>> 28) & 0x0f] +\n HEX_CHARS[(h1h >>> 24) & 0x0f] +\n HEX_CHARS[(h1h >>> 20) & 0x0f] +\n HEX_CHARS[(h1h >>> 16) & 0x0f] +\n HEX_CHARS[(h1h >>> 12) & 0x0f] +\n HEX_CHARS[(h1h >>> 8) & 0x0f] +\n HEX_CHARS[(h1h >>> 4) & 0x0f] +\n HEX_CHARS[h1h & 0x0f] +\n HEX_CHARS[(h1l >>> 28) & 0x0f] +\n HEX_CHARS[(h1l >>> 24) & 0x0f] +\n HEX_CHARS[(h1l >>> 20) & 0x0f] +\n HEX_CHARS[(h1l >>> 16) & 0x0f] +\n HEX_CHARS[(h1l >>> 12) & 0x0f] +\n HEX_CHARS[(h1l >>> 8) & 0x0f] +\n HEX_CHARS[(h1l >>> 4) & 0x0f] +\n HEX_CHARS[h1l & 0x0f] +\n HEX_CHARS[(h2h >>> 28) & 0x0f] +\n HEX_CHARS[(h2h >>> 24) & 0x0f] +\n HEX_CHARS[(h2h >>> 20) & 0x0f] +\n HEX_CHARS[(h2h >>> 16) & 0x0f] +\n HEX_CHARS[(h2h >>> 12) & 0x0f] +\n HEX_CHARS[(h2h >>> 8) & 0x0f] +\n HEX_CHARS[(h2h >>> 4) & 0x0f] +\n HEX_CHARS[h2h & 0x0f] +\n HEX_CHARS[(h2l >>> 28) & 0x0f] +\n HEX_CHARS[(h2l >>> 24) & 0x0f] +\n HEX_CHARS[(h2l >>> 20) & 0x0f] +\n HEX_CHARS[(h2l >>> 16) & 0x0f] +\n HEX_CHARS[(h2l >>> 12) & 0x0f] +\n HEX_CHARS[(h2l >>> 8) & 0x0f] +\n HEX_CHARS[(h2l >>> 4) & 0x0f] +\n HEX_CHARS[h2l & 0x0f] +\n HEX_CHARS[(h3h >>> 28) & 0x0f] +\n HEX_CHARS[(h3h >>> 24) & 0x0f] +\n HEX_CHARS[(h3h >>> 20) & 0x0f] +\n HEX_CHARS[(h3h >>> 16) & 0x0f] +\n HEX_CHARS[(h3h >>> 12) & 0x0f] +\n HEX_CHARS[(h3h >>> 8) & 0x0f] +\n HEX_CHARS[(h3h >>> 4) & 0x0f] +\n HEX_CHARS[h3h & 0x0f];\n if (bits >= 256) {\n hex +=\n HEX_CHARS[(h3l >>> 28) & 0x0f] +\n HEX_CHARS[(h3l >>> 24) & 0x0f] +\n HEX_CHARS[(h3l >>> 20) & 0x0f] +\n HEX_CHARS[(h3l >>> 16) & 0x0f] +\n HEX_CHARS[(h3l >>> 12) & 0x0f] +\n HEX_CHARS[(h3l >>> 8) & 0x0f] +\n HEX_CHARS[(h3l >>> 4) & 0x0f] +\n HEX_CHARS[h3l & 0x0f];\n }\n if (bits >= 384) {\n hex +=\n HEX_CHARS[(h4h >>> 28) & 0x0f] +\n HEX_CHARS[(h4h >>> 24) & 0x0f] +\n HEX_CHARS[(h4h >>> 20) & 0x0f] +\n HEX_CHARS[(h4h >>> 16) & 0x0f] +\n HEX_CHARS[(h4h >>> 12) & 0x0f] +\n HEX_CHARS[(h4h >>> 8) & 0x0f] +\n HEX_CHARS[(h4h >>> 4) & 0x0f] +\n HEX_CHARS[h4h & 0x0f] +\n HEX_CHARS[(h4l >>> 28) & 0x0f] +\n HEX_CHARS[(h4l >>> 24) & 0x0f] +\n HEX_CHARS[(h4l >>> 20) & 0x0f] +\n HEX_CHARS[(h4l >>> 16) & 0x0f] +\n HEX_CHARS[(h4l >>> 12) & 0x0f] +\n HEX_CHARS[(h4l >>> 8) & 0x0f] +\n HEX_CHARS[(h4l >>> 4) & 0x0f] +\n HEX_CHARS[h4l & 0x0f] +\n HEX_CHARS[(h5h >>> 28) & 0x0f] +\n HEX_CHARS[(h5h >>> 24) & 0x0f] +\n HEX_CHARS[(h5h >>> 20) & 0x0f] +\n HEX_CHARS[(h5h >>> 16) & 0x0f] +\n HEX_CHARS[(h5h >>> 12) & 0x0f] +\n HEX_CHARS[(h5h >>> 8) & 0x0f] +\n HEX_CHARS[(h5h >>> 4) & 0x0f] +\n HEX_CHARS[h5h & 0x0f] +\n HEX_CHARS[(h5l >>> 28) & 0x0f] +\n HEX_CHARS[(h5l >>> 24) & 0x0f] +\n HEX_CHARS[(h5l >>> 20) & 0x0f] +\n HEX_CHARS[(h5l >>> 16) & 0x0f] +\n HEX_CHARS[(h5l >>> 12) & 0x0f] +\n HEX_CHARS[(h5l >>> 8) & 0x0f] +\n HEX_CHARS[(h5l >>> 4) & 0x0f] +\n HEX_CHARS[h5l & 0x0f];\n }\n if (bits == 512) {\n hex +=\n HEX_CHARS[(h6h >>> 28) & 0x0f] +\n HEX_CHARS[(h6h >>> 24) & 0x0f] +\n HEX_CHARS[(h6h >>> 20) & 0x0f] +\n HEX_CHARS[(h6h >>> 16) & 0x0f] +\n HEX_CHARS[(h6h >>> 12) & 0x0f] +\n HEX_CHARS[(h6h >>> 8) & 0x0f] +\n HEX_CHARS[(h6h >>> 4) & 0x0f] +\n HEX_CHARS[h6h & 0x0f] +\n HEX_CHARS[(h6l >>> 28) & 0x0f] +\n HEX_CHARS[(h6l >>> 24) & 0x0f] +\n HEX_CHARS[(h6l >>> 20) & 0x0f] +\n HEX_CHARS[(h6l >>> 16) & 0x0f] +\n HEX_CHARS[(h6l >>> 12) & 0x0f] +\n HEX_CHARS[(h6l >>> 8) & 0x0f] +\n HEX_CHARS[(h6l >>> 4) & 0x0f] +\n HEX_CHARS[h6l & 0x0f] +\n HEX_CHARS[(h7h >>> 28) & 0x0f] +\n HEX_CHARS[(h7h >>> 24) & 0x0f] +\n HEX_CHARS[(h7h >>> 20) & 0x0f] +\n HEX_CHARS[(h7h >>> 16) & 0x0f] +\n HEX_CHARS[(h7h >>> 12) & 0x0f] +\n HEX_CHARS[(h7h >>> 8) & 0x0f] +\n HEX_CHARS[(h7h >>> 4) & 0x0f] +\n HEX_CHARS[h7h & 0x0f] +\n HEX_CHARS[(h7l >>> 28) & 0x0f] +\n HEX_CHARS[(h7l >>> 24) & 0x0f] +\n HEX_CHARS[(h7l >>> 20) & 0x0f] +\n HEX_CHARS[(h7l >>> 16) & 0x0f] +\n HEX_CHARS[(h7l >>> 12) & 0x0f] +\n HEX_CHARS[(h7l >>> 8) & 0x0f] +\n HEX_CHARS[(h7l >>> 4) & 0x0f] +\n HEX_CHARS[h7l & 0x0f];\n }\n return hex;\n};\n\nSha512.prototype.toString = Sha512.prototype.hex;\n\nSha512.prototype.digest = function () {\n this.finalize();\n\n const h0h = this.h0h;\n const h0l = this.h0l;\n const h1h = this.h1h;\n const h1l = this.h1l;\n const h2h = this.h2h;\n const h2l = this.h2l;\n const h3h = this.h3h;\n const h3l = this.h3l;\n const h4h = this.h4h;\n const h4l = this.h4l;\n const h5h = this.h5h;\n const h5l = this.h5l;\n const h6h = this.h6h;\n const h6l = this.h6l;\n const h7h = this.h7h;\n const h7l = this.h7l;\n const bits = this.bits;\n\n const arr = [\n (h0h >>> 24) & 0xff,\n (h0h >>> 16) & 0xff,\n (h0h >>> 8) & 0xff,\n h0h & 0xff,\n (h0l >>> 24) & 0xff,\n (h0l >>> 16) & 0xff,\n (h0l >>> 8) & 0xff,\n h0l & 0xff,\n (h1h >>> 24) & 0xff,\n (h1h >>> 16) & 0xff,\n (h1h >>> 8) & 0xff,\n h1h & 0xff,\n (h1l >>> 24) & 0xff,\n (h1l >>> 16) & 0xff,\n (h1l >>> 8) & 0xff,\n h1l & 0xff,\n (h2h >>> 24) & 0xff,\n (h2h >>> 16) & 0xff,\n (h2h >>> 8) & 0xff,\n h2h & 0xff,\n (h2l >>> 24) & 0xff,\n (h2l >>> 16) & 0xff,\n (h2l >>> 8) & 0xff,\n h2l & 0xff,\n (h3h >>> 24) & 0xff,\n (h3h >>> 16) & 0xff,\n (h3h >>> 8) & 0xff,\n h3h & 0xff,\n ];\n\n if (bits >= 256) {\n arr.push(\n (h3l >>> 24) & 0xff,\n (h3l >>> 16) & 0xff,\n (h3l >>> 8) & 0xff,\n h3l & 0xff,\n );\n }\n if (bits >= 384) {\n arr.push(\n (h4h >>> 24) & 0xff,\n (h4h >>> 16) & 0xff,\n (h4h >>> 8) & 0xff,\n h4h & 0xff,\n (h4l >>> 24) & 0xff,\n (h4l >>> 16) & 0xff,\n (h4l >>> 8) & 0xff,\n h4l & 0xff,\n (h5h >>> 24) & 0xff,\n (h5h >>> 16) & 0xff,\n (h5h >>> 8) & 0xff,\n h5h & 0xff,\n (h5l >>> 24) & 0xff,\n (h5l >>> 16) & 0xff,\n (h5l >>> 8) & 0xff,\n h5l & 0xff,\n );\n }\n if (bits == 512) {\n arr.push(\n (h6h >>> 24) & 0xff,\n (h6h >>> 16) & 0xff,\n (h6h >>> 8) & 0xff,\n h6h & 0xff,\n (h6l >>> 24) & 0xff,\n (h6l >>> 16) & 0xff,\n (h6l >>> 8) & 0xff,\n h6l & 0xff,\n (h7h >>> 24) & 0xff,\n (h7h >>> 16) & 0xff,\n (h7h >>> 8) & 0xff,\n h7h & 0xff,\n (h7l >>> 24) & 0xff,\n (h7l >>> 16) & 0xff,\n (h7l >>> 8) & 0xff,\n h7l & 0xff,\n );\n }\n return arr;\n};\n\nSha512.prototype.array = Sha512.prototype.digest;\n\nSha512.prototype.arrayBuffer = function () {\n this.finalize();\n\n const bits = this.bits;\n const buffer = new ArrayBuffer(bits / 8);\n const dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0h);\n dataView.setUint32(4, this.h0l);\n dataView.setUint32(8, this.h1h);\n dataView.setUint32(12, this.h1l);\n dataView.setUint32(16, this.h2h);\n dataView.setUint32(20, this.h2l);\n dataView.setUint32(24, this.h3h);\n\n if (bits >= 256) {\n dataView.setUint32(28, this.h3l);\n }\n if (bits >= 384) {\n dataView.setUint32(32, this.h4h);\n dataView.setUint32(36, this.h4l);\n dataView.setUint32(40, this.h5h);\n dataView.setUint32(44, this.h5l);\n }\n if (bits == 512) {\n dataView.setUint32(48, this.h6h);\n dataView.setUint32(52, this.h6l);\n dataView.setUint32(56, this.h7h);\n dataView.setUint32(60, this.h7l);\n }\n return buffer;\n};\n\nSha512.prototype.clone = function () {\n const hash = new Sha512(this.bits, false);\n this.copyTo(hash);\n return hash;\n};\n\nSha512.prototype.copyTo = function (hash) {\n let i = 0;\n const attrs = [\n 'h0h',\n 'h0l',\n 'h1h',\n 'h1l',\n 'h2h',\n 'h2l',\n 'h3h',\n 'h3l',\n 'h4h',\n 'h4l',\n 'h5h',\n 'h5l',\n 'h6h',\n 'h6l',\n 'h7h',\n 'h7l',\n 'start',\n 'bytes',\n 'hBytes',\n 'finalized',\n 'hashed',\n 'lastByteIndex',\n ];\n for (i = 0; i < attrs.length; ++i) {\n hash[attrs[i]] = this[attrs[i]];\n }\n for (i = 0; i < this.blocks.length; ++i) {\n hash.blocks[i] = this.blocks[i];\n }\n};\n"],"names":["blocks"],"mappings":"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"} \ No newline at end of file diff --git a/lib/signal.d.ts b/lib/signal.d.ts new file mode 100644 index 0000000..f2c2232 --- /dev/null +++ b/lib/signal.d.ts @@ -0,0 +1,97 @@ +import { ManagerOptions, Socket, SocketOptions } from 'socket.io-client'; +import { QRCodeToDataURLOptions } from 'qrcode'; +import { EventEmitter } from 'eventemitter3'; +export type LinkMessage = { + credId?: string; + requestId: string; + wallet: string; +}; +export declare function generateQRCode({ requestId, url }: { + requestId?: string; + url: string; +}, qrCodeOptions?: QRCodeToDataURLOptions): Promise; +/** + * Generate a Deep Link URI + * @param {string} origin + * @param requestId + */ +export declare function generateDeepLink(origin: string, requestId: string): string; +/** + * + */ +export declare class SignalClient extends EventEmitter { + url: string; + type: 'offer' | 'answer' | null; + private authenticated; + private requestId; + peerClient: RTCPeerConnection | undefined; + private qrCodeOptions; + socket: Socket; + /** + * + * @param url + * @param options + */ + constructor(url: string, options?: Partial); + static generateRequestId(): string; + /** + * Handles the process of attestation by invoking the provided challenge handler and the specified options. + * + * @param {function(Uint8Array): any} onChallenge - A callback function to handle the challenge. Receives a Uint8Array representing the challenge. + * @param {object} [options=DEFAULT_ATTESTATION_OPTIONS] - Configuration options for the attestation process. + * @param debug + * @return {Promise} A promise that resolves when attestation is successfully completed or rejects with an error if it fails. + */ + attestation(onChallenge: (challenge: Uint8Array) => any, options?: { + attestationType: string; + authenticatorSelection: { + authenticatorAttachment: string; + userVerification: string; + requireResidentKey: boolean; + }; + extensions: { + liquid: boolean; + }; + }, debug?: boolean): Promise; + assertion(credId: string, debug?: boolean): Promise; + /** + * Create QR Code + */ + qrCode(): Promise; + /** + * Create a Deep Link URI + * @param requestId + */ + deepLink(requestId: string): string; + /** + * # Create a peer connection + * + * Send the nonce to the server and listen to a specified type. + * + * ## Offer + * - Will wait for an offer-description from the server + * - Will send an answer-description to the server + * - Will send candidates to the server + * + * ## Answer + * - Will send an offer-description to the server + * - Will wait for an answer-description from the server + * - Will send candidates to the server + * + * @param requestId + * @param type + * @param config + */ + peer(requestId: string | undefined, type: 'offer' | 'answer', config?: RTCConfiguration): Promise; + /** + * Await for a link message for a given requestId + * @param requestId + */ + link(requestId: string): Promise; + /** + * + * @param type + */ + signal(type: 'offer' | 'answer'): Promise; + close(disconnect?: boolean): void; +} diff --git a/lib/signal.js b/lib/signal.js new file mode 100644 index 0000000..dfc87f1 --- /dev/null +++ b/lib/signal.js @@ -0,0 +1,265 @@ +import { io } from "socket.io-client"; +import QRCode from "qrcode"; +import { EventEmitter } from "eventemitter3"; +import { v7 } from "uuid"; +import { attestation } from "./attestation.js"; +import { assertion } from "./assertion.js"; +import { DEFAULT_QR_CODE_OPTIONS } from "./constants.js"; +import { REQUEST_IS_MISSING_MESSAGE, REQUEST_IN_PROCESS_MESSAGE, UNAUTHENTICATED_MESSAGE, ORIGIN_IS_MISSING_MESSAGE } from "./errors.js"; +import { DEFAULT_ATTESTATION_OPTIONS } from "./attestation.fetch.js"; +async function generateQRCode({ requestId, url }, qrCodeOptions = DEFAULT_QR_CODE_OPTIONS) { + if (typeof requestId === "undefined") + throw new Error(REQUEST_IS_MISSING_MESSAGE); + const data = generateDeepLink(url, requestId); + return await QRCode.toDataURL(data, qrCodeOptions); +} +function generateDeepLink(origin, requestId) { + if (typeof origin !== "string") { + throw new Error(ORIGIN_IS_MISSING_MESSAGE); + } + if (typeof requestId !== "string") { + throw new Error(REQUEST_IS_MISSING_MESSAGE); + } + return `liquid://${origin.replace("https://", "")}/?requestId=${requestId}`; +} +class SignalClient extends EventEmitter { + /** + * + * @param url + * @param options + */ + constructor(url, options = { autoConnect: true }) { + super(); + this.type = null; + this.authenticated = false; + this.qrCodeOptions = DEFAULT_QR_CODE_OPTIONS; + this.url = url; + this.socket = io(url, options); + this.socket.on("connect", () => { + this.emit("connect", this.socket.id); + }); + this.socket.on("disconnect", () => { + this.emit("disconnect", this.socket.id); + }); + } + static generateRequestId() { + return v7(); + } + /** + * Handles the process of attestation by invoking the provided challenge handler and the specified options. + * + * @param {function(Uint8Array): any} onChallenge - A callback function to handle the challenge. Receives a Uint8Array representing the challenge. + * @param {object} [options=DEFAULT_ATTESTATION_OPTIONS] - Configuration options for the attestation process. + * @param debug + * @return {Promise} A promise that resolves when attestation is successfully completed or rejects with an error if it fails. + */ + async attestation(onChallenge, options = DEFAULT_ATTESTATION_OPTIONS, debug = false) { + try { + const response = await attestation({ + origin: this.url, + onChallenge, + options, + debug + }); + this.authenticated = true; + return response; + } catch (e) { + this.authenticated = false; + throw e; + } + } + async assertion(credId, debug = false) { + try { + const response = await assertion({ + origin: this.url, + credId, + debug + }); + this.authenticated = true; + return response; + } catch (e) { + this.authenticated = false; + throw e; + } + } + /** + * Create QR Code + */ + async qrCode() { + if (typeof this.requestId === "undefined") + throw new Error(REQUEST_IS_MISSING_MESSAGE); + return generateQRCode( + { requestId: this.requestId, url: this.url }, + this.qrCodeOptions + ); + } + /** + * Create a Deep Link URI + * @param requestId + */ + deepLink(requestId) { + if (typeof requestId !== "string" && typeof this.requestId === "undefined") { + throw new Error(REQUEST_IS_MISSING_MESSAGE); + } + return generateDeepLink(this.url, requestId || this.requestId || ""); + } + /** + * # Create a peer connection + * + * Send the nonce to the server and listen to a specified type. + * + * ## Offer + * - Will wait for an offer-description from the server + * - Will send an answer-description to the server + * - Will send candidates to the server + * + * ## Answer + * - Will send an offer-description to the server + * - Will wait for an answer-description from the server + * - Will send candidates to the server + * + * @param requestId + * @param type + * @param config + */ + async peer(requestId, type, config = { + iceServers: [ + { + urls: [ + "stun:stun.l.google.com:19302", + "stun:stun1.l.google.com:19302", + "stun:stun2.l.google.com:19302" + ] + } + ], + iceCandidatePoolSize: 10 + }) { + if (typeof this.requestId !== "undefined") + throw new Error(REQUEST_IN_PROCESS_MESSAGE); + return new Promise(async (resolve) => { + if (typeof requestId === "undefined") { + throw new Error(REQUEST_IS_MISSING_MESSAGE); + } + let candidatesBuffer = []; + this.peerClient = new RTCPeerConnection(config); + this.type = type === "offer" ? "answer" : "offer"; + type === "offer" && await this.link(requestId); + this.peerClient.onicecandidate = (event) => { + if (event.candidate) { + this.emit(`${this.type}-candidate`, event.candidate.toJSON()); + this.socket.emit(`${this.type}-candidate`, event.candidate.toJSON()); + } + }; + this.socket.on( + `${type}-candidate`, + async (candidate) => { + var _a, _b; + if (((_a = this.peerClient) == null ? void 0 : _a.remoteDescription) && ((_b = this.peerClient) == null ? void 0 : _b.remoteDescription)) { + this.emit(`${type}-candidate`, candidate); + await this.peerClient.addIceCandidate( + new RTCIceCandidate(candidate) + ); + } else { + candidatesBuffer.push(candidate); + } + } + ); + this.peerClient.ondatachannel = (event) => { + this.emit("data-channel", event.channel); + resolve(event.channel); + }; + if (type === "offer") { + const sdp = await this.signal(type); + await this.peerClient.setRemoteDescription(sdp); + const answer = await this.peerClient.createAnswer(); + await this.peerClient.setLocalDescription(answer); + if (candidatesBuffer.length > 0) { + await Promise.all( + candidatesBuffer.map(async (candidate) => { + var _a; + this.emit(`${type}-candidate`, candidate); + await ((_a = this.peerClient) == null ? void 0 : _a.addIceCandidate( + new RTCIceCandidate(candidate) + )); + }) + ); + candidatesBuffer = []; + } + this.emit(`${this.type}-description`, answer.sdp); + this.socket.emit(`${this.type}-description`, answer.sdp); + } else { + const dataChannel = this.peerClient.createDataChannel("liquid"); + const localSdp = await this.peerClient.createOffer(); + await this.peerClient.setLocalDescription(localSdp); + this.socket.emit(`${this.type}-description`, localSdp.sdp); + this.emit(`${this.type}-description`, localSdp.sdp); + const sdp = await this.signal(type); + await this.peerClient.setRemoteDescription(sdp); + if (candidatesBuffer.length > 0) { + await Promise.all( + candidatesBuffer.map(async (candidate) => { + var _a; + this.emit(`${type}-candidate`, candidate); + await ((_a = this.peerClient) == null ? void 0 : _a.addIceCandidate( + new RTCIceCandidate(candidate) + )); + }) + ); + candidatesBuffer = []; + } + this.emit("data-channel", dataChannel); + resolve(dataChannel); + } + }); + } + /** + * Await for a link message for a given requestId + * @param requestId + */ + async link(requestId) { + if (typeof this.requestId !== "undefined") + throw new Error(REQUEST_IN_PROCESS_MESSAGE); + this.requestId = requestId; + this.emit("link", { requestId }); + return new Promise((resolve) => { + this.socket.emit( + "link", + { requestId }, + ({ data }) => { + this.authenticated = true; + delete this.requestId; + this.emit("link-message", data); + resolve(data); + } + ); + }); + } + /** + * + * @param type + */ + async signal(type) { + if (!this.authenticated) throw new Error(UNAUTHENTICATED_MESSAGE); + this.emit("signal", { type }); + return new Promise((resolve) => { + this.socket.once(`${type}-description`, (sdp) => { + const description = { type, sdp }; + this.emit(`${type}-description`, description); + resolve(description); + }); + }); + } + close(disconnect = false) { + this.socket.removeAllListeners(); + delete this.requestId; + this.authenticated = false; + if (disconnect) this.socket.disconnect(); + this.emit("close"); + } +} +export { + SignalClient, + generateDeepLink, + generateQRCode +}; +//# sourceMappingURL=signal.js.map diff --git a/lib/signal.js.map b/lib/signal.js.map new file mode 100644 index 0000000..588f130 --- /dev/null +++ b/lib/signal.js.map @@ -0,0 +1 @@ +{"version":3,"file":"signal.js","sources":["../src/signal.ts"],"sourcesContent":["/**\n * Signal Module\n *\n * @packageDocumentation\n * @document ./signal.offer.guide.md\n * @document ./signal.answer.guide.md\n */\nimport { io, ManagerOptions, Socket, SocketOptions } from 'socket.io-client';\nimport QRCode from 'qrcode';\nimport type { QRCodeToDataURLOptions } from 'qrcode';\nimport { EventEmitter } from 'eventemitter3';\nimport { v7 as uuidv7 } from 'uuid';\n\nimport { attestation } from './attestation.js';\nimport { assertion } from './assertion.js';\n\nimport { DEFAULT_QR_CODE_OPTIONS } from './constants.js';\nimport {\n ORIGIN_IS_MISSING_MESSAGE,\n REQUEST_IN_PROCESS_MESSAGE,\n REQUEST_IS_MISSING_MESSAGE,\n UNAUTHENTICATED_MESSAGE,\n} from './errors.js';\nimport { DEFAULT_ATTESTATION_OPTIONS } from './attestation.fetch.js';\n\nexport type LinkMessage = {\n credId?: string;\n requestId: string;\n wallet: string;\n};\n\nexport async function generateQRCode(\n { requestId, url }: { requestId?: string; url: string },\n qrCodeOptions: QRCodeToDataURLOptions = DEFAULT_QR_CODE_OPTIONS,\n) {\n if (typeof requestId === 'undefined')\n throw new Error(REQUEST_IS_MISSING_MESSAGE);\n const data = generateDeepLink(url, requestId);\n return await QRCode.toDataURL(data, qrCodeOptions);\n}\n\n/**\n * Generate a Deep Link URI\n * @param {string} origin\n * @param requestId\n */\nexport function generateDeepLink(origin: string, requestId: string) {\n if (typeof origin !== 'string') {\n throw new Error(ORIGIN_IS_MISSING_MESSAGE);\n }\n if (typeof requestId !== 'string') {\n throw new Error(REQUEST_IS_MISSING_MESSAGE);\n }\n return `liquid://${origin.replace('https://', '')}/?requestId=${requestId}`;\n}\n/**\n *\n */\nexport class SignalClient extends EventEmitter {\n url: string;\n type: 'offer' | 'answer' | null = null;\n private authenticated: boolean = false;\n private requestId: string | undefined;\n peerClient: RTCPeerConnection | undefined;\n private qrCodeOptions: QRCodeToDataURLOptions = DEFAULT_QR_CODE_OPTIONS;\n socket: Socket;\n\n /**\n *\n * @param url\n * @param options\n */\n constructor(\n url: string,\n options: Partial = { autoConnect: true },\n ) {\n super();\n this.url = url;\n this.socket = io(url, options);\n\n this.socket.on('connect', () => {\n this.emit('connect', this.socket.id);\n });\n\n this.socket.on('disconnect', () => {\n this.emit('disconnect', this.socket.id);\n });\n }\n\n static generateRequestId(): string {\n return uuidv7();\n }\n\n /**\n * Handles the process of attestation by invoking the provided challenge handler and the specified options.\n *\n * @param {function(Uint8Array): any} onChallenge - A callback function to handle the challenge. Receives a Uint8Array representing the challenge.\n * @param {object} [options=DEFAULT_ATTESTATION_OPTIONS] - Configuration options for the attestation process.\n * @param debug\n * @return {Promise} A promise that resolves when attestation is successfully completed or rejects with an error if it fails.\n */\n async attestation(\n onChallenge: (challenge: Uint8Array) => any,\n options = DEFAULT_ATTESTATION_OPTIONS,\n debug = false,\n ) {\n try {\n const response = await attestation({\n origin: this.url,\n onChallenge,\n options,\n debug,\n });\n this.authenticated = true;\n return response;\n } catch (e) {\n this.authenticated = false;\n throw e;\n }\n }\n async assertion(credId: string, debug = false) {\n try {\n const response = await assertion({\n origin: this.url,\n credId,\n debug,\n });\n this.authenticated = true;\n return response;\n } catch (e) {\n this.authenticated = false;\n throw e;\n }\n }\n /**\n * Create QR Code\n */\n async qrCode() {\n if (typeof this.requestId === 'undefined')\n throw new Error(REQUEST_IS_MISSING_MESSAGE);\n return generateQRCode(\n { requestId: this.requestId, url: this.url },\n this.qrCodeOptions,\n );\n }\n\n /**\n * Create a Deep Link URI\n * @param requestId\n */\n deepLink(requestId: string) {\n if (\n typeof requestId !== 'string' &&\n typeof this.requestId === 'undefined'\n ) {\n throw new Error(REQUEST_IS_MISSING_MESSAGE);\n }\n return generateDeepLink(this.url, requestId || this.requestId || '');\n }\n /**\n * # Create a peer connection\n *\n * Send the nonce to the server and listen to a specified type.\n *\n * ## Offer\n * - Will wait for an offer-description from the server\n * - Will send an answer-description to the server\n * - Will send candidates to the server\n *\n * ## Answer\n * - Will send an offer-description to the server\n * - Will wait for an answer-description from the server\n * - Will send candidates to the server\n *\n * @param requestId\n * @param type\n * @param config\n */\n async peer(\n requestId: string | undefined,\n type: 'offer' | 'answer',\n config: RTCConfiguration = {\n iceServers: [\n {\n urls: [\n 'stun:stun.l.google.com:19302',\n 'stun:stun1.l.google.com:19302',\n 'stun:stun2.l.google.com:19302',\n ],\n },\n ],\n iceCandidatePoolSize: 10,\n },\n ): Promise {\n if (typeof this.requestId !== 'undefined')\n throw new Error(REQUEST_IN_PROCESS_MESSAGE);\n\n return new Promise(async (resolve) => {\n if (typeof requestId === 'undefined') {\n throw new Error(REQUEST_IS_MISSING_MESSAGE);\n }\n let candidatesBuffer: RTCIceCandidateInit[] = [];\n // Create Peer Connection\n this.peerClient = new RTCPeerConnection(config);\n\n this.type = type === 'offer' ? 'answer' : 'offer';\n // Wait for a link message\n type === 'offer' && (await this.link(requestId));\n // Listen for Local Candidates\n this.peerClient.onicecandidate = (event) => {\n if (event.candidate) {\n this.emit(`${this.type}-candidate`, event.candidate.toJSON());\n this.socket.emit(`${this.type}-candidate`, event.candidate.toJSON());\n }\n };\n // Listen to Remote Candidates\n this.socket.on(\n `${type}-candidate`,\n async (candidate: RTCIceCandidateInit) => {\n if (\n this.peerClient?.remoteDescription &&\n this.peerClient?.remoteDescription\n ) {\n this.emit(`${type}-candidate`, candidate);\n await this.peerClient.addIceCandidate(\n new RTCIceCandidate(candidate),\n );\n } else {\n candidatesBuffer.push(candidate);\n }\n },\n );\n\n // Listen for Remote DataChannel and Resolve\n this.peerClient.ondatachannel = (event) => {\n this.emit('data-channel', event.channel);\n resolve(event.channel);\n };\n // Handle Session Descriptions\n if (type === 'offer') {\n const sdp = await this.signal(type);\n await this.peerClient.setRemoteDescription(sdp);\n const answer = await this.peerClient.createAnswer();\n await this.peerClient.setLocalDescription(answer);\n if (candidatesBuffer.length > 0) {\n await Promise.all(\n candidatesBuffer.map(async (candidate) => {\n this.emit(`${type}-candidate`, candidate);\n await this.peerClient?.addIceCandidate(\n new RTCIceCandidate(candidate),\n );\n }),\n );\n candidatesBuffer = [];\n }\n this.emit(`${this.type}-description`, answer.sdp);\n this.socket.emit(`${this.type}-description`, answer.sdp);\n } else {\n const dataChannel = this.peerClient.createDataChannel('liquid');\n const localSdp = await this.peerClient.createOffer();\n await this.peerClient.setLocalDescription(localSdp);\n this.socket.emit(`${this.type}-description`, localSdp.sdp);\n this.emit(`${this.type}-description`, localSdp.sdp);\n const sdp = await this.signal(type);\n await this.peerClient.setRemoteDescription(sdp);\n if (candidatesBuffer.length > 0) {\n await Promise.all(\n candidatesBuffer.map(async (candidate) => {\n this.emit(`${type}-candidate`, candidate);\n await this.peerClient?.addIceCandidate(\n new RTCIceCandidate(candidate),\n );\n }),\n );\n candidatesBuffer = [];\n }\n this.emit('data-channel', dataChannel);\n resolve(dataChannel);\n }\n });\n }\n\n /**\n * Await for a link message for a given requestId\n * @param requestId\n */\n async link(requestId: string) {\n if (typeof this.requestId !== 'undefined')\n throw new Error(REQUEST_IN_PROCESS_MESSAGE);\n this.requestId = requestId;\n this.emit('link', { requestId });\n\n return new Promise((resolve) => {\n this.socket.emit(\n 'link',\n { requestId },\n ({ data }: { data: LinkMessage }) => {\n this.authenticated = true;\n delete this.requestId;\n\n this.emit('link-message', data);\n resolve(data);\n },\n );\n });\n }\n\n /**\n *\n * @param type\n */\n async signal(type: 'offer' | 'answer') {\n if (!this.authenticated) throw new Error(UNAUTHENTICATED_MESSAGE);\n this.emit('signal', { type });\n return new Promise((resolve) => {\n this.socket.once(`${type}-description`, (sdp: string) => {\n const description = { type, sdp } as RTCSessionDescriptionInit;\n this.emit(`${type}-description`, description);\n resolve(description);\n });\n });\n }\n\n close(disconnect = false) {\n this.socket.removeAllListeners();\n delete this.requestId;\n this.authenticated = false;\n if (disconnect) this.socket.disconnect();\n this.emit('close');\n }\n}\n"],"names":["uuidv7"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f0fafdf..45594bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,16 @@ { - "name": "@algorandfoundation/liquid-client", - "version": "1.0.0-canary.3", + "name": "@algorandecosystem/liquid-client", + "version": "1.0.0-beta.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@algorandfoundation/liquid-client", - "version": "1.0.0-canary.3", + "name": "@algorandecosystem/liquid-client", + "version": "1.0.0-beta.1", "license": "Apache-2.0", "dependencies": { - "canvas": "^2.11.2", "eventemitter3": "^5.0.1", - "qr-code-styling": "^1.9.1", + "qrcode": "^1.5.4", "socket.io-client": "^4.7.5", "tweetnacl": "^1.0.3", "uuid": "^10.0.0" @@ -24,7 +23,6 @@ "@semantic-release/github": "^10.0.3", "@semantic-release/npm": "^12.0.0", "@semantic-release/release-notes-generator": "^13.0.0", - "@types/qrcode": "^1.5.5", "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "^7.8.0", "@typescript-eslint/parser": "^7.8.0", @@ -73,180 +71,21 @@ } }, "node_modules/@actions/github": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz", - "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.1.tgz", + "integrity": "sha512-xbZVcaqD4XnQAe35qSQqskb3SqIAfRyLBrHMd/8TuL7hJSz2QtbDwnNM8zWx4zO5l2fnGtseNE3MbEvD7BxVMw==", "dev": true, "license": "MIT", "dependencies": { "@actions/http-client": "^2.2.0", "@octokit/core": "^5.0.1", - "@octokit/plugin-paginate-rest": "^9.0.0", - "@octokit/plugin-rest-endpoint-methods": "^10.0.0" - } - }, - "node_modules/@actions/github/node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@actions/github/node_modules/@octokit/core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.1.tgz", - "integrity": "sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.1.0", - "@octokit/request": "^8.4.1", - "@octokit/request-error": "^5.1.1", - "@octokit/types": "^13.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@actions/github/node_modules/@octokit/endpoint": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", - "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@actions/github/node_modules/@octokit/graphql": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz", - "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==", - "dev": true, - "license": "MIT", - "dependencies": { + "@octokit/plugin-paginate-rest": "^9.2.2", + "@octokit/plugin-rest-endpoint-methods": "^10.4.0", "@octokit/request": "^8.4.1", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@actions/github/node_modules/@octokit/openapi-types": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", - "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@actions/github/node_modules/@octokit/plugin-paginate-rest": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.2.tgz", - "integrity": "sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^12.6.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "5" - } - }, - "node_modules/@actions/github/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", - "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^20.0.0" - } - }, - "node_modules/@actions/github/node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", - "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^12.6.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "5" - } - }, - "node_modules/@actions/github/node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", - "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^20.0.0" - } - }, - "node_modules/@actions/github/node_modules/@octokit/request": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz", - "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^9.0.6", "@octokit/request-error": "^5.1.1", - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@actions/github/node_modules/@octokit/request-error": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", - "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 18" + "undici": "^5.28.5" } }, - "node_modules/@actions/github/node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@actions/github/node_modules/universal-user-agent": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", - "dev": true, - "license": "ISC" - }, "node_modules/@actions/http-client": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", @@ -280,24 +119,24 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "license": "MIT", "engines": { @@ -305,9 +144,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -315,13 +154,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz", - "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.10" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -331,27 +170,24 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", - "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", "dev": true, "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz", - "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -367,41 +203,10 @@ "node": ">=18" } }, - "node_modules/@bundled-es-modules/cookie": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.1.tgz", - "integrity": "sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cookie": "^0.7.2" - } - }, - "node_modules/@bundled-es-modules/statuses": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", - "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", - "dev": true, - "license": "ISC", - "dependencies": { - "statuses": "^2.0.1" - } - }, - "node_modules/@bundled-es-modules/tough-cookie": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz", - "integrity": "sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@types/tough-cookie": "^4.0.5", - "tough-cookie": "^4.1.4" - } - }, "node_modules/@codecov/bundler-plugin-core": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@codecov/bundler-plugin-core/-/bundler-plugin-core-1.9.0.tgz", - "integrity": "sha512-UB0I5haL0gnF4ei46wxNo7ptCHqFAh3PnmcLLeXRb2zV7HeobOF8WRjOW/PwrXAphPS/6bL7PDUmh3ruVObGtg==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@codecov/bundler-plugin-core/-/bundler-plugin-core-1.9.1.tgz", + "integrity": "sha512-dt3ic7gMswz4p/qdkYPVJwXlLiLsz55rBBn2I7mr0HTG8pCoLRqnANJIwo5WrqGBZgPyVSMPBqBra6VxLWfDyA==", "dev": true, "license": "MIT", "dependencies": { @@ -417,13 +222,13 @@ } }, "node_modules/@codecov/vite-plugin": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@codecov/vite-plugin/-/vite-plugin-1.9.0.tgz", - "integrity": "sha512-5+CxUGN0Rxr5F6xYqrKwug3NXTlNVBEZcI9caOCjlpErt7p2lp7J/6Qo+GRjmaVkXErnNMiyhjzXRB6rLNAjfg==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@codecov/vite-plugin/-/vite-plugin-1.9.1.tgz", + "integrity": "sha512-S6Yne7comVulJ1jD3T7rCfYFHPR0zUjAYoLjUDPXNJCUrdzWJdf/ak/UepE7TicqQG+yBa6eb5WusqcPgg+1AQ==", "dev": true, "license": "MIT", "dependencies": { - "@codecov/bundler-plugin-core": "^1.9.0", + "@codecov/bundler-plugin-core": "^1.9.1", "unplugin": "^1.10.1" }, "engines": { @@ -445,9 +250,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", - "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", "cpu": [ "ppc64" ], @@ -462,9 +267,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz", - "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", "cpu": [ "arm" ], @@ -479,9 +284,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", - "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", "cpu": [ "arm64" ], @@ -496,9 +301,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz", - "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", "cpu": [ "x64" ], @@ -513,9 +318,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", - "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", "cpu": [ "arm64" ], @@ -530,9 +335,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", - "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", "cpu": [ "x64" ], @@ -547,9 +352,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", - "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", "cpu": [ "arm64" ], @@ -564,9 +369,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", - "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", "cpu": [ "x64" ], @@ -581,9 +386,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", - "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", "cpu": [ "arm" ], @@ -598,9 +403,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", - "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", "cpu": [ "arm64" ], @@ -615,9 +420,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", - "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", "cpu": [ "ia32" ], @@ -632,9 +437,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", - "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", "cpu": [ "loong64" ], @@ -649,9 +454,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", - "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", "cpu": [ "mips64el" ], @@ -666,9 +471,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", - "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", "cpu": [ "ppc64" ], @@ -683,9 +488,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", - "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", "cpu": [ "riscv64" ], @@ -700,9 +505,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", - "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", "cpu": [ "s390x" ], @@ -717,9 +522,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", - "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", "cpu": [ "x64" ], @@ -734,9 +539,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", - "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", "cpu": [ "arm64" ], @@ -751,9 +556,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", - "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", "cpu": [ "x64" ], @@ -768,9 +573,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", - "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", "cpu": [ "arm64" ], @@ -785,9 +590,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", - "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", "cpu": [ "x64" ], @@ -801,10 +606,27 @@ "node": ">=18" } }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", - "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", "cpu": [ "x64" ], @@ -819,9 +641,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", - "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", "cpu": [ "arm64" ], @@ -836,9 +658,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", - "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", "cpu": [ "ia32" ], @@ -853,9 +675,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", - "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", "cpu": [ "x64" ], @@ -870,9 +692,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", - "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -889,9 +711,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { @@ -922,10 +744,17 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -934,9 +763,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -978,21 +807,58 @@ "@shikijs/vscode-textmate": "^10.0.1" } }, + "node_modules/@hapi/address": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-5.1.1.tgz", + "integrity": "sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^11.0.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/formula": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-3.0.2.tgz", + "integrity": "sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.7.tgz", + "integrity": "sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==", "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@hapi/pinpoint": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz", + "integrity": "sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/tlds": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@hapi/tlds/-/tlds-1.1.6.tgz", + "integrity": "sha512-xdi7A/4NZokvV0ewovme3aUO5kQhW9pQ2YD1hRqZGhhSi5rBv4usHYidVocXSi9eihYsznZxLtAiEYYUL6VBGw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@hapi/hoek": "^9.0.0" + "@hapi/hoek": "^11.0.2" } }, "node_modules/@humanwhocodes/config-array": { @@ -1011,10 +877,17 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -1023,9 +896,9 @@ } }, "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -1057,204 +930,35 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/@inquirer/confirm": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.8.tgz", - "integrity": "sha512-dNLWCYZvXDjO3rnQfk2iuJNL4Ivwz/T2+C3+WnNfJKsNGSuOs3wAo2F6e0p946gtSAk31nZMfW+MRmYaplPKsg==", + "node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.1.9", - "@inquirer/type": "^3.0.5" - }, + "license": "BlueOak-1.0.0", "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/core": { - "version": "10.1.9", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.9.tgz", - "integrity": "sha512-sXhVB8n20NYkUBfDYgizGHlpRVaCRjtuzNZA6xpALIUbkgfd2Hjz+DfEN6+h1BRnuxw0/P4jCIMjMsEOAMwAJw==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "license": "MIT", - "dependencies": { - "@inquirer/figures": "^1.0.11", - "@inquirer/type": "^3.0.5", - "ansi-escapes": "^4.3.2", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" - }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@inquirer/core/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@inquirer/core/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@inquirer/core/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/core/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/figures": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.11.tgz", - "integrity": "sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/type": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.5.tgz", - "integrity": "sha512-ZJpeIYYueOz/i/ONzrfof8g89kNdO2hjGuvULROo3O8rlB2CRtSseE5KeirnyE4t/thAn/EwvS/vuQeJCn+NZg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -1267,27 +971,17 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { @@ -1295,67 +989,23 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", - "license": "BSD-3-Clause", - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@microsoft/api-extractor": { - "version": "7.52.1", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.52.1.tgz", - "integrity": "sha512-m3I5uAwE05orsu3D1AGyisX5KxsgVXB+U4bWOOaX/Z7Ftp/2Cy41qsNhO6LPvSxHBaapyser5dVorF1t5M6tig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@microsoft/api-extractor-model": "7.30.4", - "@microsoft/tsdoc": "~0.15.1", - "@microsoft/tsdoc-config": "~0.17.1", - "@rushstack/node-core-library": "5.12.0", - "@rushstack/rig-package": "0.5.3", - "@rushstack/terminal": "0.15.1", - "@rushstack/ts-command-line": "4.23.6", - "lodash": "~4.17.15", - "minimatch": "~3.0.3", + "version": "7.57.6", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.57.6.tgz", + "integrity": "sha512-0rFv/D8Grzw1Mjs2+8NGUR+o4h9LVm5zKRtMeWnpdB5IMJF4TeHCL1zR5LMCIudkOvyvjbhMG5Wjs0B5nqsrRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@microsoft/api-extractor-model": "7.33.4", + "@microsoft/tsdoc": "~0.16.0", + "@microsoft/tsdoc-config": "~0.18.1", + "@rushstack/node-core-library": "5.20.3", + "@rushstack/rig-package": "0.7.2", + "@rushstack/terminal": "0.22.3", + "@rushstack/ts-command-line": "5.3.3", + "diff": "~8.0.2", + "lodash": "~4.17.23", + "minimatch": "10.2.1", "resolve": "~1.22.1", "semver": "~7.5.4", "source-map": "~0.6.1", @@ -1366,48 +1016,48 @@ } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.30.4", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.30.4.tgz", - "integrity": "sha512-RobC0gyVYsd2Fao9MTKOfTdBm41P/bCMUmzS5mQ7/MoAKEqy0FOBph3JOYdq4X4BsEnMEiSHc+0NUNmdzxCpjA==", + "version": "7.33.4", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.33.4.tgz", + "integrity": "sha512-u1LTaNTikZAQ9uK6KG1Ms7nvNedsnODnspq/gH2dcyETWvH4hVNGNDvRAEutH66kAmxA4/necElqGNs1FggC8w==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/tsdoc": "~0.15.1", - "@microsoft/tsdoc-config": "~0.17.1", - "@rushstack/node-core-library": "5.12.0" + "@microsoft/tsdoc": "~0.16.0", + "@microsoft/tsdoc-config": "~0.18.1", + "@rushstack/node-core-library": "5.20.3" } }, "node_modules/@microsoft/api-extractor-model/node_modules/@microsoft/tsdoc": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz", - "integrity": "sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz", + "integrity": "sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==", "dev": true, "license": "MIT" }, "node_modules/@microsoft/api-extractor-model/node_modules/@microsoft/tsdoc-config": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.17.1.tgz", - "integrity": "sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==", + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.1.tgz", + "integrity": "sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/tsdoc": "0.15.1", - "ajv": "~8.12.0", + "@microsoft/tsdoc": "0.16.0", + "ajv": "~8.18.0", "jju": "~1.4.0", "resolve": "~1.22.2" } }, "node_modules/@microsoft/api-extractor-model/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -1422,13 +1072,13 @@ "license": "MIT" }, "node_modules/@microsoft/api-extractor-model/node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -1443,53 +1093,42 @@ } }, "node_modules/@microsoft/api-extractor/node_modules/@microsoft/tsdoc": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz", - "integrity": "sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz", + "integrity": "sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==", "dev": true, "license": "MIT" }, "node_modules/@microsoft/api-extractor/node_modules/@microsoft/tsdoc-config": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.17.1.tgz", - "integrity": "sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==", + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.18.1.tgz", + "integrity": "sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg==", "dev": true, "license": "MIT", "dependencies": { - "@microsoft/tsdoc": "0.15.1", - "ajv": "~8.12.0", + "@microsoft/tsdoc": "0.16.0", + "ajv": "~8.18.0", "jju": "~1.4.0", "resolve": "~1.22.2" } }, "node_modules/@microsoft/api-extractor/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@microsoft/api-extractor/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/@microsoft/api-extractor/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -1511,26 +1150,29 @@ } }, "node_modules/@microsoft/api-extractor/node_modules/minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", + "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "*" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@microsoft/api-extractor/node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -1560,6 +1202,20 @@ "node": ">=10" } }, + "node_modules/@microsoft/api-extractor/node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/@microsoft/tsdoc": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", @@ -1580,22 +1236,21 @@ "resolve": "~1.19.0" } }, - "node_modules/@mswjs/interceptors": { - "version": "0.37.6", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.37.6.tgz", - "integrity": "sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w==", + "node_modules/@microsoft/tsdoc-config/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { - "@open-draft/deferred-promise": "^2.2.0", - "@open-draft/logger": "^0.3.0", - "@open-draft/until": "^2.0.0", - "is-node-process": "^1.2.0", - "outvariant": "^1.4.3", - "strict-event-emitter": "^0.5.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=18" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/@nodelib/fs.scandir": { @@ -1637,9 +1292,9 @@ } }, "node_modules/@octokit/auth-token": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz", - "integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", "dev": true, "license": "MIT", "engines": { @@ -1647,48 +1302,48 @@ } }, "node_modules/@octokit/core": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.4.tgz", - "integrity": "sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.2.tgz", + "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/auth-token": "^5.0.0", - "@octokit/graphql": "^8.1.2", - "@octokit/request": "^9.2.1", - "@octokit/request-error": "^6.1.7", - "@octokit/types": "^13.6.2", - "before-after-hook": "^3.0.2", - "universal-user-agent": "^7.0.0" + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.4.1", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/endpoint": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz", - "integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", + "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^13.6.2", - "universal-user-agent": "^7.0.2" + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/graphql": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.1.tgz", - "integrity": "sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz", + "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/request": "^9.2.2", - "@octokit/types": "^13.8.0", - "universal-user-agent": "^7.0.0" + "@octokit/request": "^8.4.1", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^6.0.0" }, "engines": { "node": ">= 18" @@ -1702,81 +1357,97 @@ "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "11.6.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.6.0.tgz", - "integrity": "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.2.tgz", + "integrity": "sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^13.10.0" + "@octokit/types": "^12.6.0" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=6" + "@octokit/core": "5" } }, - "node_modules/@octokit/plugin-retry": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.2.0.tgz", - "integrity": "sha512-psMbEYb/Fh+V+ZaFo8J16QiFz4sVTv3GntCSU+hYqzHiMdc3P+hhHLVv+dJt0PGIPAGoIA5u+J2DCJdK6lEPsQ==", + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/request-error": "^6.1.7", - "@octokit/types": "^13.6.2", - "bottleneck": "^2.15.3" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": ">=6" + "@octokit/openapi-types": "^20.0.0" } }, - "node_modules/@octokit/plugin-throttling": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.6.0.tgz", - "integrity": "sha512-zn7m1N3vpJDaVzLqjCRdJ0cRzNiekHEWPi8Ww9xyPNrDt5PStHvVE0eR8wy4RSU8Eg7YO8MHyvn6sv25EGVhhg==", + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", + "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^13.7.0", - "bottleneck": "^2.15.3" + "@octokit/types": "^12.6.0" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": "^6.1.3" + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/request": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz", - "integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz", + "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/endpoint": "^10.1.3", - "@octokit/request-error": "^6.1.7", - "@octokit/types": "^13.6.2", - "fast-content-type-parse": "^2.0.0", - "universal-user-agent": "^7.0.2" + "@octokit/endpoint": "^9.0.6", + "@octokit/request-error": "^5.1.1", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/request-error": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz", - "integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", + "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^13.6.2" + "@octokit/types": "^13.1.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" }, "engines": { "node": ">= 18" @@ -1785,38 +1456,13 @@ "node_modules/@octokit/types": { "version": "13.10.0", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", - "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^24.2.0" - } - }, - "node_modules/@open-draft/deferred-promise": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", - "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@open-draft/logger": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", - "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", "dev": true, "license": "MIT", "dependencies": { - "is-node-process": "^1.2.0", - "outvariant": "^1.4.0" + "@octokit/openapi-types": "^24.2.0" } }, - "node_modules/@open-draft/until": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", - "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", - "dev": true, - "license": "MIT" - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -1829,16 +1475,16 @@ } }, "node_modules/@pkgr/core": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.2.tgz", - "integrity": "sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==", + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts" + "url": "https://opencollective.com/pkgr" } }, "node_modules/@pnpm/config.env-replace": { @@ -1872,9 +1518,9 @@ "license": "ISC" }, "node_modules/@pnpm/npm-conf": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", - "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.2.tgz", + "integrity": "sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==", "dev": true, "license": "MIT", "dependencies": { @@ -1887,16 +1533,16 @@ } }, "node_modules/@polka/url": { - "version": "1.0.0-next.28", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", - "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", "dev": true, "license": "MIT" }, "node_modules/@rollup/pluginutils": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", - "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1924,9 +1570,9 @@ "license": "MIT" }, "node_modules/@rollup/pluginutils/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "engines": { @@ -1937,9 +1583,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.36.0.tgz", - "integrity": "sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", "cpu": [ "arm" ], @@ -1951,9 +1597,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.36.0.tgz", - "integrity": "sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", "cpu": [ "arm64" ], @@ -1965,9 +1611,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.36.0.tgz", - "integrity": "sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", "cpu": [ "arm64" ], @@ -1979,9 +1625,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.36.0.tgz", - "integrity": "sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", "cpu": [ "x64" ], @@ -1993,9 +1639,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.36.0.tgz", - "integrity": "sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", "cpu": [ "arm64" ], @@ -2007,9 +1653,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.36.0.tgz", - "integrity": "sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", "cpu": [ "x64" ], @@ -2021,9 +1667,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.36.0.tgz", - "integrity": "sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", "cpu": [ "arm" ], @@ -2035,9 +1681,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.36.0.tgz", - "integrity": "sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", "cpu": [ "arm" ], @@ -2049,9 +1695,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.36.0.tgz", - "integrity": "sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", "cpu": [ "arm64" ], @@ -2063,9 +1709,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.36.0.tgz", - "integrity": "sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", "cpu": [ "arm64" ], @@ -2076,10 +1722,24 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.36.0.tgz", - "integrity": "sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", "cpu": [ "loong64" ], @@ -2090,10 +1750,24 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.36.0.tgz", - "integrity": "sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==", + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", "cpu": [ "ppc64" ], @@ -2105,9 +1779,23 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.36.0.tgz", - "integrity": "sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", "cpu": [ "riscv64" ], @@ -2119,9 +1807,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.36.0.tgz", - "integrity": "sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", "cpu": [ "s390x" ], @@ -2133,9 +1821,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.36.0.tgz", - "integrity": "sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", "cpu": [ "x64" ], @@ -2147,9 +1835,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.36.0.tgz", - "integrity": "sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", "cpu": [ "x64" ], @@ -2160,10 +1848,38 @@ "linux" ] }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.36.0.tgz", - "integrity": "sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", "cpu": [ "arm64" ], @@ -2175,9 +1891,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.36.0.tgz", - "integrity": "sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", "cpu": [ "ia32" ], @@ -2188,10 +1904,24 @@ "win32" ] }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.36.0.tgz", - "integrity": "sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", "cpu": [ "x64" ], @@ -2203,13 +1933,13 @@ ] }, "node_modules/@rushstack/node-core-library": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.12.0.tgz", - "integrity": "sha512-QSwwzgzWoil1SCQse+yCHwlhRxNv2dX9siPnAb9zR/UmMhac4mjMrlMZpk64BlCeOFi1kJKgXRkihSwRMbboAQ==", + "version": "5.20.3", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.20.3.tgz", + "integrity": "sha512-95JgEPq2k7tHxhF9/OJnnyHDXfC9cLhhta0An/6MlkDsX2A6dTzDrTUG18vx4vjc280V0fi0xDH9iQczpSuWsw==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "~8.13.0", + "ajv": "~8.18.0", "ajv-draft-04": "~1.0.0", "ajv-formats": "~3.0.1", "fs-extra": "~11.3.0", @@ -2228,16 +1958,16 @@ } }, "node_modules/@rushstack/node-core-library/node_modules/ajv": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", - "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -2280,13 +2010,13 @@ } }, "node_modules/@rushstack/node-core-library/node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -2316,10 +2046,25 @@ "node": ">=10" } }, + "node_modules/@rushstack/problem-matcher": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@rushstack/problem-matcher/-/problem-matcher-0.2.1.tgz", + "integrity": "sha512-gulfhBs6n+I5b7DvjKRfhMGyUejtSgOHTclF/eONr8hcgF1APEDjhxIsfdUYYMzC3rvLwGluqLjbwCFZ8nxrog==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/@rushstack/rig-package": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.5.3.tgz", - "integrity": "sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.7.2.tgz", + "integrity": "sha512-9XbFWuqMYcHUso4mnETfhGVUSaADBRj6HUAAEYk50nMPn8WRICmBuCphycQGNB3duIR6EEZX3Xj3SYc2XiP+9A==", "dev": true, "license": "MIT", "dependencies": { @@ -2328,13 +2073,13 @@ } }, "node_modules/@rushstack/rig-package/node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -2349,13 +2094,14 @@ } }, "node_modules/@rushstack/terminal": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.15.1.tgz", - "integrity": "sha512-3vgJYwumcjoDOXU3IxZfd616lqOdmr8Ezj4OWgJZfhmiBK4Nh7eWcv8sU8N/HdzXcuHDXCRGn/6O2Q75QvaZMA==", + "version": "0.22.3", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.22.3.tgz", + "integrity": "sha512-gHC9pIMrUPzAbBiI4VZMU7Q+rsCzb8hJl36lFIulIzoceKotyKL3Rd76AZ2CryCTKEg+0bnTj406HE5YY5OQvw==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/node-core-library": "5.12.0", + "@rushstack/node-core-library": "5.20.3", + "@rushstack/problem-matcher": "0.2.1", "supports-color": "~8.1.1" }, "peerDependencies": { @@ -2384,138 +2130,344 @@ } }, "node_modules/@rushstack/ts-command-line": { - "version": "4.23.6", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.23.6.tgz", - "integrity": "sha512-7WepygaF3YPEoToh4MAL/mmHkiIImQq3/uAkQX46kVoKTNOOlCtFGyNnze6OYuWw2o9rxsyrHVfIBKxq/am2RA==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-5.3.3.tgz", + "integrity": "sha512-c+ltdcvC7ym+10lhwR/vWiOhsrm/bP3By2VsFcs5qTKv+6tTmxgbVrtJ5NdNjANiV5TcmOZgUN+5KYQ4llsvEw==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/terminal": "0.15.1", + "@rushstack/terminal": "0.22.3", "@types/argparse": "1.0.38", "argparse": "~1.0.9", "string-argv": "~0.3.1" } }, - "node_modules/@rushstack/ts-command-line/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@rushstack/ts-command-line/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@semantic-release/changelog": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", + "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "fs-extra": "^11.0.0", + "lodash": "^4.17.4" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" + } + }, + "node_modules/@semantic-release/commit-analyzer": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-12.0.0.tgz", + "integrity": "sha512-qG+md5gdes+xa8zP7lIo1fWE17zRdO8yMCaxh9lyL65TQleoSv8WHHOqRURfghTytUh+NpkSyBprQ5hrkxOKVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", + "debug": "^4.0.0", + "import-from-esm": "^1.0.3", + "lodash-es": "^4.17.21", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=20.8.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", + "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@semantic-release/git": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", + "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "execa": "^5.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.0", + "p-reduce": "^2.0.0" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" + } + }, + "node_modules/@semantic-release/github": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-10.3.5.tgz", + "integrity": "sha512-svvRglGmvqvxjmDgkXhrjf0lC88oZowFhOfifTldbgX9Dzj0inEtMLaC+3/MkDEmxmaQjWmF5Q/0CMIvPNSVdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/core": "^6.0.0", + "@octokit/plugin-paginate-rest": "^11.0.0", + "@octokit/plugin-retry": "^7.0.0", + "@octokit/plugin-throttling": "^9.0.0", + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "debug": "^4.3.4", + "dir-glob": "^3.0.1", + "globby": "^14.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "issue-parser": "^7.0.0", + "lodash-es": "^4.17.21", + "mime": "^4.0.0", + "p-filter": "^4.0.0", + "url-join": "^5.0.0" + }, + "engines": { + "node": ">=20.8.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/auth-token": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz", + "integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/core": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.6.tgz", + "integrity": "sha512-kIU8SLQkYWGp3pVKiYzA5OSaNF5EE03P/R8zEmmrG6XwOg5oBjXyQVVIauQ0dgau4zYhpZEhJrvIYt6oM+zZZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^5.0.0", + "@octokit/graphql": "^8.2.2", + "@octokit/request": "^9.2.3", + "@octokit/request-error": "^6.1.8", + "@octokit/types": "^14.0.0", + "before-after-hook": "^3.0.2", + "universal-user-agent": "^7.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/core/node_modules/@octokit/types": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", + "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^25.1.0" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/endpoint": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz", + "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^14.0.0", + "universal-user-agent": "^7.0.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/endpoint/node_modules/@octokit/types": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", + "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^25.1.0" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/graphql": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.2.tgz", + "integrity": "sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request": "^9.2.3", + "@octokit/types": "^14.0.0", + "universal-user-agent": "^7.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/graphql/node_modules/@octokit/types": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", + "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", "dev": true, "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" + "@octokit/openapi-types": "^25.1.0" } }, - "node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "node_modules/@semantic-release/github/node_modules/@octokit/openapi-types": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", + "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", "dev": true, "license": "MIT" }, - "node_modules/@semantic-release/changelog": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", - "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", + "node_modules/@semantic-release/github/node_modules/@octokit/plugin-paginate-rest": { + "version": "11.6.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.6.0.tgz", + "integrity": "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==", "dev": true, "license": "MIT", "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "fs-extra": "^11.0.0", - "lodash": "^4.17.4" + "@octokit/types": "^13.10.0" }, "engines": { - "node": ">=14.17" + "node": ">= 18" }, "peerDependencies": { - "semantic-release": ">=18.0.0" + "@octokit/core": ">=6" } }, - "node_modules/@semantic-release/commit-analyzer": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-12.0.0.tgz", - "integrity": "sha512-qG+md5gdes+xa8zP7lIo1fWE17zRdO8yMCaxh9lyL65TQleoSv8WHHOqRURfghTytUh+NpkSyBprQ5hrkxOKVQ==", + "node_modules/@semantic-release/github/node_modules/@octokit/plugin-retry": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.2.1.tgz", + "integrity": "sha512-wUc3gv0D6vNHpGxSaR3FlqJpTXGWgqmk607N9L3LvPL4QjaxDgX/1nY2mGpT37Khn+nlIXdljczkRnNdTTV3/A==", "dev": true, "license": "MIT", "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", - "debug": "^4.0.0", - "import-from-esm": "^1.0.3", - "lodash-es": "^4.17.21", - "micromatch": "^4.0.2" + "@octokit/request-error": "^6.1.8", + "@octokit/types": "^14.0.0", + "bottleneck": "^2.15.3" }, "engines": { - "node": ">=20.8.1" + "node": ">= 18" }, "peerDependencies": { - "semantic-release": ">=20.1.0" + "@octokit/core": ">=6" } }, - "node_modules/@semantic-release/error": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", - "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", + "node_modules/@semantic-release/github/node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", + "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", "dev": true, "license": "MIT", - "engines": { - "node": ">=14.17" + "dependencies": { + "@octokit/openapi-types": "^25.1.0" } }, - "node_modules/@semantic-release/git": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", - "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", + "node_modules/@semantic-release/github/node_modules/@octokit/plugin-throttling": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.6.1.tgz", + "integrity": "sha512-bt3EBUkeKUzDQXRCcFrR9SWVqlLFRRqcCrr6uAorWt6NXTyjMKqcGrFmXqJy9NCbnKgiIZ2OXWq04theFc76Jg==", "dev": true, "license": "MIT", "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "execa": "^5.0.0", - "lodash": "^4.17.4", - "micromatch": "^4.0.0", - "p-reduce": "^2.0.0" + "@octokit/types": "^13.7.0", + "bottleneck": "^2.15.3" }, "engines": { - "node": ">=14.17" + "node": ">= 18" }, "peerDependencies": { - "semantic-release": ">=18.0.0" + "@octokit/core": "^6.1.3" } }, - "node_modules/@semantic-release/github": { - "version": "10.3.5", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-10.3.5.tgz", - "integrity": "sha512-svvRglGmvqvxjmDgkXhrjf0lC88oZowFhOfifTldbgX9Dzj0inEtMLaC+3/MkDEmxmaQjWmF5Q/0CMIvPNSVdQ==", + "node_modules/@semantic-release/github/node_modules/@octokit/request": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz", + "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/core": "^6.0.0", - "@octokit/plugin-paginate-rest": "^11.0.0", - "@octokit/plugin-retry": "^7.0.0", - "@octokit/plugin-throttling": "^9.0.0", - "@semantic-release/error": "^4.0.0", - "aggregate-error": "^5.0.0", - "debug": "^4.3.4", - "dir-glob": "^3.0.1", - "globby": "^14.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "issue-parser": "^7.0.0", - "lodash-es": "^4.17.21", - "mime": "^4.0.0", - "p-filter": "^4.0.0", - "url-join": "^5.0.0" + "@octokit/endpoint": "^10.1.4", + "@octokit/request-error": "^6.1.8", + "@octokit/types": "^14.0.0", + "fast-content-type-parse": "^2.0.0", + "universal-user-agent": "^7.0.2" }, "engines": { - "node": ">=20.8.1" + "node": ">= 18" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/request-error": { + "version": "6.1.8", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz", + "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^14.0.0" }, - "peerDependencies": { - "semantic-release": ">=20.1.0" + "engines": { + "node": ">= 18" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/request-error/node_modules/@octokit/types": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", + "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^25.1.0" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/request/node_modules/@octokit/types": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", + "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^25.1.0" } }, "node_modules/@semantic-release/github/node_modules/@semantic-release/error": { @@ -2545,10 +2497,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@semantic-release/github/node_modules/before-after-hook": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", + "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/@semantic-release/github/node_modules/clean-stack": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", - "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.3.0.tgz", + "integrity": "sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==", "dev": true, "license": "MIT", "dependencies": { @@ -2587,10 +2546,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@semantic-release/github/node_modules/universal-user-agent": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", + "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==", + "dev": true, + "license": "ISC" + }, "node_modules/@semantic-release/npm": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.1.tgz", - "integrity": "sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.2.tgz", + "integrity": "sha512-+M9/Lb35IgnlUO6OSJ40Ie+hUsZLuph2fqXC/qrKn0fMvUU/jiCjpoL6zEm69vzcmaZJ8yNKtMBEKHWN49WBbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2601,7 +2567,7 @@ "lodash-es": "^4.17.21", "nerf-dart": "^1.0.0", "normalize-url": "^8.0.0", - "npm": "^10.5.0", + "npm": "^10.9.3", "rc": "^1.2.8", "read-pkg": "^9.0.0", "registry-auth-token": "^5.0.0", @@ -2656,9 +2622,9 @@ } }, "node_modules/@semantic-release/npm/node_modules/clean-stack": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", - "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.3.0.tgz", + "integrity": "sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==", "dev": true, "license": "MIT", "dependencies": { @@ -2685,24 +2651,24 @@ } }, "node_modules/@semantic-release/npm/node_modules/execa": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", - "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", "dev": true, "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.3", + "cross-spawn": "^7.0.6", "figures": "^6.1.0", "get-stream": "^9.0.0", - "human-signals": "^8.0.0", + "human-signals": "^8.0.1", "is-plain-obj": "^4.1.0", "is-stream": "^4.0.1", "npm-run-path": "^6.0.0", - "pretty-ms": "^9.0.0", + "pretty-ms": "^9.2.0", "signal-exit": "^4.1.0", "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.0.0" + "yoctocolors": "^2.1.1" }, "engines": { "node": "^18.19.0 || >=20.5.0" @@ -2729,9 +2695,9 @@ } }, "node_modules/@semantic-release/npm/node_modules/human-signals": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", - "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2874,30 +2840,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -2930,10 +2872,17 @@ "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", "license": "MIT" }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, "node_modules/@testing-library/dom": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", - "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "dev": true, "license": "MIT", "dependencies": { @@ -2941,9 +2890,9 @@ "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", - "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", + "picocolors": "1.1.1", "pretty-format": "^27.0.2" }, "engines": { @@ -2978,6 +2927,17 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, "node_modules/@types/component-emitter": { "version": "1.2.14", "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.14.tgz", @@ -2985,17 +2945,17 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", "dev": true, "license": "MIT" }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, "license": "MIT" }, @@ -3009,16 +2969,6 @@ "@types/unist": "*" } }, - "node_modules/@types/node": { - "version": "22.13.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.11.tgz", - "integrity": "sha512-iEUCUJoU0i3VnrCmgoWCXttklWcvoCIx4jzcP22fioIVSdTmjgoEvmAO/QPw6TcS9k5FrNgn4w7q5lGOd1CT5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", @@ -3026,30 +2976,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/qrcode": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.5.tgz", - "integrity": "sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/statuses": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.5.tgz", - "integrity": "sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", @@ -3296,28 +3222,27 @@ "license": "ISC" }, "node_modules/@vitest/browser": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-3.0.9.tgz", - "integrity": "sha512-P9dcCeMkA3/oYGfUzRFZJLZxiOpApztxhPsQDUiZzAzLoZonWhse2+vPB0xEBP8Q0lX1WCEEmtY7HzBRi4oYBA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-3.2.4.tgz", + "integrity": "sha512-tJxiPrWmzH8a+w9nLKlQMzAKX/7VjFs50MWgcAj7p9XQ7AQ9/35fByFYptgPELyLw+0aixTnC4pUWV+APcZ/kw==", "dev": true, "license": "MIT", "dependencies": { "@testing-library/dom": "^10.4.0", "@testing-library/user-event": "^14.6.1", - "@vitest/mocker": "3.0.9", - "@vitest/utils": "3.0.9", + "@vitest/mocker": "3.2.4", + "@vitest/utils": "3.2.4", "magic-string": "^0.30.17", - "msw": "^2.7.3", "sirv": "^3.0.1", "tinyrainbow": "^2.0.0", - "ws": "^8.18.1" + "ws": "^8.18.2" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "playwright": "*", - "vitest": "3.0.9", + "vitest": "3.2.4", "webdriverio": "^7.0.0 || ^8.0.0 || ^9.0.0" }, "peerDependenciesMeta": { @@ -3333,22 +3258,23 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.9.tgz", - "integrity": "sha512-15OACZcBtQ34keIEn19JYTVuMFTlFrClclwWjHo/IRPg/8ELpkgNTl0o7WLP9WO9XGH6+tip9CPYtEOrIDJvBA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", + "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^1.0.2", - "debug": "^4.4.0", + "ast-v8-to-istanbul": "^0.3.3", + "debug": "^4.4.1", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-lib-source-maps": "^5.0.6", "istanbul-reports": "^3.1.7", "magic-string": "^0.30.17", "magicast": "^0.3.5", - "std-env": "^3.8.0", + "std-env": "^3.9.0", "test-exclude": "^7.0.1", "tinyrainbow": "^2.0.0" }, @@ -3356,8 +3282,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "3.0.9", - "vitest": "3.0.9" + "@vitest/browser": "3.2.4", + "vitest": "3.2.4" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -3366,14 +3292,15 @@ } }, "node_modules/@vitest/expect": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.9.tgz", - "integrity": "sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.9", - "@vitest/utils": "3.0.9", + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -3382,13 +3309,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.9.tgz", - "integrity": "sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.9", + "@vitest/spy": "3.2.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -3397,7 +3324,7 @@ }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0" + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "peerDependenciesMeta": { "msw": { @@ -3409,9 +3336,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz", - "integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "dev": true, "license": "MIT", "dependencies": { @@ -3422,27 +3349,28 @@ } }, "node_modules/@vitest/runner": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.9.tgz", - "integrity": "sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.9", - "pathe": "^2.0.3" + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.9.tgz", - "integrity": "sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.9", + "@vitest/pretty-format": "3.2.4", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -3451,27 +3379,27 @@ } }, "node_modules/@vitest/spy": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.9.tgz", - "integrity": "sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", "dev": true, "license": "MIT", "dependencies": { - "tinyspy": "^3.0.2" + "tinyspy": "^4.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz", - "integrity": "sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.9", - "loupe": "^3.1.3", + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" }, "funding": { @@ -3479,46 +3407,59 @@ } }, "node_modules/@volar/language-core": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.12.tgz", - "integrity": "sha512-RLrFdXEaQBWfSnYGVxvR2WrO6Bub0unkdHYIdC31HzIEqATIuuhRRzYu76iGPZ6OtA4Au1SnW0ZwIqPP217YhA==", + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.28.tgz", + "integrity": "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==", "dev": true, "license": "MIT", "dependencies": { - "@volar/source-map": "2.4.12" + "@volar/source-map": "2.4.28" } }, "node_modules/@volar/source-map": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.12.tgz", - "integrity": "sha512-bUFIKvn2U0AWojOaqf63ER0N/iHIBYZPpNGogfLPQ68F5Eet6FnLlyho7BS0y2HJ1jFhSif7AcuTx1TqsCzRzw==", + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.28.tgz", + "integrity": "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==", "dev": true, "license": "MIT" }, "node_modules/@volar/typescript": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.12.tgz", - "integrity": "sha512-HJB73OTJDgPc80K30wxi3if4fSsZZAOScbj2fcicMuOPoOkcf9NNAINb33o+DzhBdF9xTKC1gnPmIRDous5S0g==", + "version": "2.4.28", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.28.tgz", + "integrity": "sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==", "dev": true, "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.12", + "@volar/language-core": "2.4.28", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } }, "node_modules/@vue/compiler-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", - "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.29.tgz", + "integrity": "sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.13", - "entities": "^4.5.0", + "@babel/parser": "^7.29.0", + "@vue/shared": "3.5.29", + "entities": "^7.0.1", "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-core/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/@vue/compiler-core/node_modules/estree-walker": { @@ -3529,14 +3470,14 @@ "license": "MIT" }, "node_modules/@vue/compiler-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", - "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.29.tgz", + "integrity": "sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-core": "3.5.29", + "@vue/shared": "3.5.29" } }, "node_modules/@vue/compiler-vue2": { @@ -3576,22 +3517,16 @@ } }, "node_modules/@vue/shared": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", - "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "version": "3.5.29", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.29.tgz", + "integrity": "sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==", "dev": true, "license": "MIT" }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "license": "ISC" - }, "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", "bin": { @@ -3612,9 +3547,9 @@ } }, "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", "engines": { @@ -3636,9 +3571,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -3671,9 +3606,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { @@ -3702,29 +3637,16 @@ "license": "MIT" }, "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", + "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" + "environment": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3743,7 +3665,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -3776,40 +3697,6 @@ "node": ">= 8" } }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "license": "ISC" - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -3861,6 +3748,25 @@ "node": ">=12" } }, + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.11.tgz", + "integrity": "sha512-Qya9fkoofMjCBNVdWINMjB5KZvkYfaO9/anwkWnjxibpWUxo5iHl2sOdP7/uAqaRuUYuoo8rDwnbaaKVFxoUvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "estree-walker": "^3.0.3", + "js-tokens": "^10.0.0" + } + }, + "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true, + "license": "MIT" + }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -3876,22 +3782,26 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", - "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", + "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", "dev": true, "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } }, "node_modules/basic-auth": { "version": "2.0.1", @@ -3907,9 +3817,9 @@ } }, "node_modules/before-after-hook": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", - "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", "dev": true, "license": "Apache-2.0" }, @@ -3934,13 +3844,16 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/braces": { @@ -4007,25 +3920,19 @@ "node": ">=6" } }, - "node_modules/canvas": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", - "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", - "hasInstallScript": true, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "license": "MIT", - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "nan": "^2.17.0", - "simple-get": "^3.0.3" - }, "engines": { "node": ">=6" } }, "node_modules/chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", "dev": true, "license": "MIT", "dependencies": { @@ -4036,7 +3943,7 @@ "pathval": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/chalk": { @@ -4067,9 +3974,9 @@ } }, "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", "dev": true, "license": "MIT", "engines": { @@ -4114,15 +4021,6 @@ "node": ">= 6" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -4167,46 +4065,6 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/cli-highlight/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-highlight/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-highlight/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/cli-highlight/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -4252,38 +4110,6 @@ "@colors/colors": "1.5.0" } }, - "node_modules/cli-table3/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-table3/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -4299,51 +4125,10 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -4356,18 +4141,8 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "license": "MIT" }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -4413,22 +4188,22 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, "license": "MIT" }, "node_modules/concurrently": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.1.2.tgz", - "integrity": "sha512-H9MWcoPsYddwbOGM6difjVwVZHl63nwMEwDJG/L7VGtuaJhb12h2caPG2tVPWs7emuYix252iGfqOyrz1GczTQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz", + "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.2", - "lodash": "^4.17.21", - "rxjs": "^7.8.1", - "shell-quote": "^1.8.1", - "supports-color": "^8.1.1", - "tree-kill": "^1.2.2", - "yargs": "^17.7.2" + "chalk": "4.1.2", + "rxjs": "7.8.2", + "shell-quote": "1.8.3", + "supports-color": "8.1.1", + "tree-kill": "1.2.2", + "yargs": "17.7.2" }, "bin": { "conc": "dist/bin/concurrently.js", @@ -4458,9 +4233,9 @@ } }, "node_modules/confbox": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.1.tgz", - "integrity": "sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", "dev": true, "license": "MIT" }, @@ -4475,12 +4250,6 @@ "proto-list": "~1.2.1" } }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "license": "ISC" - }, "node_modules/conventional-changelog-angular": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", @@ -4557,16 +4326,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -4682,9 +4441,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -4698,16 +4457,13 @@ } } }, - "node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "license": "MIT", - "dependencies": { - "mimic-response": "^2.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/deep-eql": { @@ -4747,12 +4503,6 @@ "node": ">=0.4.0" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "license": "MIT" - }, "node_modules/deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", @@ -4770,15 +4520,22 @@ "node": ">=6" } }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "license": "Apache-2.0", + "node_modules/diff": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", + "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=8" + "node": ">=0.3.1" } }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==", + "license": "MIT" + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -4858,10 +4615,9 @@ "license": "MIT" }, "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, "node_modules/emojilib": { @@ -4872,39 +4628,22 @@ "license": "MIT" }, "node_modules/engine.io-client": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz", - "integrity": "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==", + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.4.tgz", + "integrity": "sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", + "debug": "~4.4.1", "engine.io-parser": "~5.2.1", - "ws": "~8.17.1", + "ws": "~8.18.3", "xmlhttprequest-ssl": "~2.1.1" } }, - "node_modules/engine.io-client/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/engine.io-client/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -4945,9 +4684,9 @@ } }, "node_modules/env-ci": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.1.0.tgz", - "integrity": "sha512-Z8dnwSDbV1XYM9SBF2J0GcNVvmfmfh3a49qddGIROhBoVro6MZVTji15z/sJbQ2ko2ei8n988EU1wzoLU/tF+g==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.2.0.tgz", + "integrity": "sha512-D5kWfzkmaOQDioPmiviWAVtKmpPT4/iJmMVQxWxMPJTFyTkdc5JQUfc5iXEeWxcOdsYTKSAiA/Age4NUOqKsRA==", "dev": true, "license": "MIT", "dependencies": { @@ -5126,9 +4865,9 @@ } }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5156,9 +4895,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "dev": true, "license": "MIT" }, @@ -5192,9 +4931,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", - "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -5205,31 +4944,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.1", - "@esbuild/android-arm": "0.25.1", - "@esbuild/android-arm64": "0.25.1", - "@esbuild/android-x64": "0.25.1", - "@esbuild/darwin-arm64": "0.25.1", - "@esbuild/darwin-x64": "0.25.1", - "@esbuild/freebsd-arm64": "0.25.1", - "@esbuild/freebsd-x64": "0.25.1", - "@esbuild/linux-arm": "0.25.1", - "@esbuild/linux-arm64": "0.25.1", - "@esbuild/linux-ia32": "0.25.1", - "@esbuild/linux-loong64": "0.25.1", - "@esbuild/linux-mips64el": "0.25.1", - "@esbuild/linux-ppc64": "0.25.1", - "@esbuild/linux-riscv64": "0.25.1", - "@esbuild/linux-s390x": "0.25.1", - "@esbuild/linux-x64": "0.25.1", - "@esbuild/netbsd-arm64": "0.25.1", - "@esbuild/netbsd-x64": "0.25.1", - "@esbuild/openbsd-arm64": "0.25.1", - "@esbuild/openbsd-x64": "0.25.1", - "@esbuild/sunos-x64": "0.25.1", - "@esbuild/win32-arm64": "0.25.1", - "@esbuild/win32-ia32": "0.25.1", - "@esbuild/win32-x64": "0.25.1" + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" } }, "node_modules/escalade": { @@ -5313,9 +5053,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz", + "integrity": "sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==", "dev": true, "license": "MIT", "bin": { @@ -5326,14 +5066,14 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz", - "integrity": "sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==", + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", "dev": true, "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.9.1" + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -5344,7 +5084,7 @@ "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", - "eslint-config-prettier": "*", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", "prettier": ">=3.0.0" }, "peerDependenciesMeta": { @@ -5397,10 +5137,17 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -5409,9 +5156,9 @@ } }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -5440,9 +5187,9 @@ } }, "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -5496,9 +5243,9 @@ } }, "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", "license": "MIT" }, "node_modules/execa": { @@ -5539,9 +5286,9 @@ } }, "node_modules/expect-type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.0.tgz", - "integrity": "sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -5549,9 +5296,9 @@ } }, "node_modules/exsolve": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.4.tgz", - "integrity": "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", "dev": true, "license": "MIT" }, @@ -5631,9 +5378,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, "funding": [ { @@ -5648,9 +5395,9 @@ "license": "BSD-3-Clause" }, "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "dev": true, "license": "ISC", "dependencies": { @@ -5769,9 +5516,9 @@ "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "dev": true, "funding": [ { @@ -5820,15 +5567,16 @@ } }, "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -5847,9 +5595,9 @@ } }, "node_modules/fs-extra": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", - "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", "dev": true, "license": "MIT", "dependencies": { @@ -5861,34 +5609,11 @@ "node": ">=14.14" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, "license": "ISC" }, "node_modules/fsevents": { @@ -5923,58 +5648,16 @@ "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gauge/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/gauge/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -6058,15 +5741,16 @@ } }, "node_modules/glob": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", - "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^4.0.1", - "minimatch": "^10.0.0", + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" @@ -6095,16 +5779,16 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -6148,9 +5832,9 @@ } }, "node_modules/globby/node_modules/ignore": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz", - "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, "license": "MIT", "engines": { @@ -6197,16 +5881,6 @@ "dev": true, "license": "MIT" }, - "node_modules/graphql": { - "version": "16.10.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz", - "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" - } - }, "node_modules/handlebars": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", @@ -6268,12 +5942,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "license": "ISC" - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -6297,13 +5965,6 @@ "he": "bin/he" } }, - "node_modules/headers-polyfill": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz", - "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", - "dev": true, - "license": "MIT" - }, "node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", @@ -6547,9 +6208,9 @@ } }, "node_modules/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", "dev": true, "license": "MIT", "funding": { @@ -6578,9 +6239,9 @@ } }, "node_modules/index-to-position": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.0.0.tgz", - "integrity": "sha512-sCO7uaLVhRJ25vz1o8s9IFM3nVS4DkuQnyjMwiQPKvQuBYBDmb8H7zx8ki7nVh4HJQOdVWebyvLE0qt+clruxA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz", + "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==", "dev": true, "license": "MIT", "engines": { @@ -6595,6 +6256,7 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "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.", + "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -6605,6 +6267,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, "license": "ISC" }, "node_modules/ini": { @@ -6699,13 +6362,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-node-process": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", - "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", - "dev": true, - "license": "MIT" - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -6844,22 +6500,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/istanbul-lib-source-maps": { "version": "5.0.6", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", @@ -6876,9 +6516,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -6890,13 +6530,13 @@ } }, "node_modules/jackspeak": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz", - "integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@isaacs/cliui": "^9.0.0" }, "engines": { "node": "20 || >=22" @@ -6923,17 +6563,22 @@ "license": "MIT" }, "node_modules/joi": { - "version": "17.13.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", - "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-18.0.2.tgz", + "integrity": "sha512-RuCOQMIt78LWnktPoeBL0GErkNaJPTBGcYuyaBvUOQSpcpcLfWrHPPihYdOGbV5pam9VTWbeoF7TsGiHugcjGA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" + "@hapi/address": "^5.1.1", + "@hapi/formula": "^3.0.2", + "@hapi/hoek": "^11.0.7", + "@hapi/pinpoint": "^2.0.1", + "@hapi/tlds": "^1.1.1", + "@hapi/topo": "^6.0.2", + "@standard-schema/spec": "^1.0.0" + }, + "engines": { + "node": ">= 20" } }, "node_modules/js-tokens": { @@ -6944,9 +6589,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -6999,9 +6644,9 @@ "license": "ISC" }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", "dependencies": { @@ -7117,15 +6762,15 @@ } }, "node_modules/local-pkg": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.1.tgz", - "integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", "dev": true, "license": "MIT", "dependencies": { "mlly": "^1.7.4", - "pkg-types": "^2.0.1", - "quansync": "^0.2.8" + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" }, "engines": { "node": ">=14" @@ -7151,16 +6796,16 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "dev": true, "license": "MIT" }, "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", "dev": true, "license": "MIT" }, @@ -7207,18 +6852,18 @@ "license": "MIT" }, "node_modules/loupe": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", - "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", "dev": true, "license": "MIT" }, "node_modules/lru-cache": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", - "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } @@ -7241,13 +6886,13 @@ } }, "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, "node_modules/magicast": { @@ -7262,34 +6907,57 @@ "source-map-js": "^1.2.0" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/make-asynchronous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/make-asynchronous/-/make-asynchronous-1.1.0.tgz", + "integrity": "sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==", + "dev": true, "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "p-event": "^6.0.0", + "type-fest": "^4.6.0", + "web-worker": "^1.5.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/make-asynchronous/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", + "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", "dev": true, "license": "MIT", "dependencies": { @@ -7339,26 +7007,10 @@ "marked": ">=1 <16" } }, - "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "environment": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/marked-terminal/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { @@ -7369,9 +7021,9 @@ } }, "node_modules/marked-terminal/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", "engines": { @@ -7443,9 +7095,9 @@ } }, "node_modules/mime": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.6.tgz", - "integrity": "sha512-4rGt7rvQHBbaSOF9POGkk1ocRP16Md1x36Xma8sz8h8/vfCUI2OtEIeCqe4Ofes853x4xDoPiFLIT47J5fI/7A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz", + "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==", "dev": true, "funding": [ "https://github.com/sponsors/broofa" @@ -7491,26 +7143,14 @@ "node": ">=6" } }, - "node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.8.tgz", + "integrity": "sha512-reYkDYtj/b19TeqbNZCV4q9t+Yxylf/rYBsLb42SXJatTv4/ylq5lEiAmhA/IToxO7NI2UzNMghHoHuaqDkAjw==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -7530,63 +7170,26 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/mlly": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", - "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", "dev": true, "license": "MIT", "dependencies": { - "acorn": "^8.14.0", - "pathe": "^2.0.1", - "pkg-types": "^1.3.0", - "ufo": "^1.5.4" + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" } }, "node_modules/mlly/node_modules/confbox": { @@ -7624,64 +7227,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, - "node_modules/msw": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.7.3.tgz", - "integrity": "sha512-+mycXv8l2fEAjFZ5sjrtjJDmm2ceKGjrNbBr1durRg6VkU9fNUE/gsmQ51hWbHqs+l35W1iM+ZsmOD9Fd6lspw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@bundled-es-modules/cookie": "^2.0.1", - "@bundled-es-modules/statuses": "^1.0.1", - "@bundled-es-modules/tough-cookie": "^0.1.6", - "@inquirer/confirm": "^5.0.0", - "@mswjs/interceptors": "^0.37.0", - "@open-draft/deferred-promise": "^2.2.0", - "@open-draft/until": "^2.1.0", - "@types/cookie": "^0.6.0", - "@types/statuses": "^2.0.4", - "graphql": "^16.8.1", - "headers-polyfill": "^4.0.2", - "is-node-process": "^1.2.0", - "outvariant": "^1.4.3", - "path-to-regexp": "^6.3.0", - "picocolors": "^1.1.1", - "strict-event-emitter": "^0.5.1", - "type-fest": "^4.26.1", - "yargs": "^17.7.2" - }, - "bin": { - "msw": "cli/index.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/mswjs" - }, - "peerDependencies": { - "typescript": ">= 4.8.x" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/msw/node_modules/type-fest": { - "version": "4.37.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.37.0.tgz", - "integrity": "sha512-S/5/0kFftkq27FPNye0XM1e2NsnoD/3FS+pBmbjmmtLT6I+i344KoOf7pvXreaFsDamWeaJX55nczA1m5PsBDg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/muggle-string": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", @@ -7689,16 +7234,6 @@ "dev": true, "license": "MIT" }, - "node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -7711,12 +7246,6 @@ "thenify-all": "^1.0.0" } }, - "node_modules/nan": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", - "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", - "license": "MIT" - }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", @@ -7773,37 +7302,17 @@ "node": ">=18" } }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/nodemon": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.9.tgz", - "integrity": "sha512-hdr1oIb2p6ZSxu3PB2JWWYS7ZQ0qvaZsc3hK8DR8f02kRzc8rjYmxAIvdz+aYC+8F2IjNaB7HMcSDg8nQpJxyg==", + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.14.tgz", + "integrity": "sha512-jakjZi93UtB3jHMWsXL68FXSAosbLfY0In5gtKq3niLSkrWznrVBzXFNOEMJUfc9+Ke7SHWoAZsiMkNP3vq6Jw==", "dev": true, "license": "MIT", "dependencies": { "chokidar": "^3.5.2", "debug": "^4", "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", + "minimatch": "^10.2.1", "pstree.remy": "^1.1.8", "semver": "^7.5.3", "simple-update-notifier": "^2.0.0", @@ -7822,17 +7331,6 @@ "url": "https://opencollective.com/nodemon" } }, - "node_modules/nodemon/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/nodemon/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -7844,16 +7342,19 @@ } }, "node_modules/nodemon/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/nodemon/node_modules/supports-color": { @@ -7866,22 +7367,7 @@ "has-flag": "^3.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "license": "ISC", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" + "node": ">=4" } }, "node_modules/normalize-package-data": { @@ -7910,9 +7396,9 @@ } }, "node_modules/normalize-url": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", - "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz", + "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", "dev": true, "license": "MIT", "engines": { @@ -7923,9 +7409,9 @@ } }, "node_modules/npm": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.9.2.tgz", - "integrity": "sha512-iriPEPIkoMYUy3F6f3wwSZAU93E0Eg6cHwIR6jzzOXWSy+SD/rOODEs74cVONHKSx2obXtuUoyidVEhISrisgQ==", + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.9.4.tgz", + "integrity": "sha512-OnUG836FwboQIbqtefDNlyR0gTHzIfwRfE3DuiNewBvnMnWEpB0VEXwBlFVgqpNzIgYo/MHh3d2Hel/pszapAA==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -8007,37 +7493,37 @@ ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^8.0.0", + "@npmcli/arborist": "^8.0.1", "@npmcli/config": "^9.0.0", "@npmcli/fs": "^4.0.0", "@npmcli/map-workspaces": "^4.0.2", - "@npmcli/package-json": "^6.1.0", + "@npmcli/package-json": "^6.2.0", "@npmcli/promise-spawn": "^8.0.2", - "@npmcli/redact": "^3.0.0", - "@npmcli/run-script": "^9.0.1", - "@sigstore/tuf": "^3.0.0", - "abbrev": "^3.0.0", + "@npmcli/redact": "^3.2.2", + "@npmcli/run-script": "^9.1.0", + "@sigstore/tuf": "^3.1.1", + "abbrev": "^3.0.1", "archy": "~1.0.0", "cacache": "^19.0.1", - "chalk": "^5.3.0", - "ci-info": "^4.1.0", + "chalk": "^5.4.1", + "ci-info": "^4.2.0", "cli-columns": "^4.0.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", "glob": "^10.4.5", "graceful-fs": "^4.2.11", - "hosted-git-info": "^8.0.2", + "hosted-git-info": "^8.1.0", "ini": "^5.0.0", "init-package-json": "^7.0.2", - "is-cidr": "^5.1.0", + "is-cidr": "^5.1.1", "json-parse-even-better-errors": "^4.0.0", "libnpmaccess": "^9.0.0", - "libnpmdiff": "^7.0.0", - "libnpmexec": "^9.0.0", - "libnpmfund": "^6.0.0", + "libnpmdiff": "^7.0.1", + "libnpmexec": "^9.0.1", + "libnpmfund": "^6.0.1", "libnpmhook": "^11.0.0", "libnpmorg": "^7.0.0", - "libnpmpack": "^8.0.0", + "libnpmpack": "^8.0.1", "libnpmpublish": "^10.0.1", "libnpmsearch": "^8.0.0", "libnpmteam": "^7.0.0", @@ -8047,23 +7533,23 @@ "minipass": "^7.1.1", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^11.0.0", - "nopt": "^8.0.0", + "node-gyp": "^11.2.0", + "nopt": "^8.1.0", "normalize-package-data": "^7.0.0", "npm-audit-report": "^6.0.0", "npm-install-checks": "^7.1.1", - "npm-package-arg": "^12.0.0", + "npm-package-arg": "^12.0.2", "npm-pick-manifest": "^10.0.0", "npm-profile": "^11.0.1", "npm-registry-fetch": "^18.0.2", "npm-user-validate": "^3.0.0", - "p-map": "^4.0.0", + "p-map": "^7.0.3", "pacote": "^19.0.1", "parse-conflict-json": "^4.0.0", "proc-log": "^5.0.0", "qrcode-terminal": "^0.12.0", - "read": "^4.0.0", - "semver": "^7.6.3", + "read": "^4.1.0", + "semver": "^7.7.2", "spdx-expression-parse": "^4.0.0", "ssri": "^12.0.0", "supports-color": "^9.4.0", @@ -8071,7 +7557,7 @@ "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", "treeverse": "^3.0.0", - "validate-npm-package-name": "^6.0.0", + "validate-npm-package-name": "^6.0.1", "which": "^5.0.0", "write-file-atomic": "^6.0.0" }, @@ -8198,7 +7684,7 @@ } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "8.0.0", + "version": "8.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -8278,7 +7764,7 @@ } }, "node_modules/npm/node_modules/@npmcli/git": { - "version": "6.0.1", + "version": "6.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -8288,7 +7774,6 @@ "lru-cache": "^10.0.1", "npm-pick-manifest": "^10.0.0", "proc-log": "^5.0.0", - "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", "which": "^5.0.0" @@ -8394,7 +7879,7 @@ } }, "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "6.1.0", + "version": "6.2.0", "dev": true, "inBundle": true, "license": "ISC", @@ -8403,9 +7888,9 @@ "glob": "^10.2.2", "hosted-git-info": "^8.0.0", "json-parse-even-better-errors": "^4.0.0", - "normalize-package-data": "^7.0.0", "proc-log": "^5.0.0", - "semver": "^7.5.3" + "semver": "^7.5.3", + "validate-npm-package-license": "^3.0.4" }, "engines": { "node": "^18.17.0 || >=20.5.0" @@ -8424,19 +7909,19 @@ } }, "node_modules/npm/node_modules/@npmcli/query": { - "version": "4.0.0", + "version": "4.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "postcss-selector-parser": "^6.1.2" + "postcss-selector-parser": "^7.0.0" }, "engines": { "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/redact": { - "version": "3.0.0", + "version": "3.2.2", "dev": true, "inBundle": true, "license": "ISC", @@ -8445,7 +7930,7 @@ } }, "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "9.0.2", + "version": "9.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -8472,21 +7957,21 @@ } }, "node_modules/npm/node_modules/@sigstore/protobuf-specs": { - "version": "0.3.2", + "version": "0.4.3", "dev": true, "inBundle": true, "license": "Apache-2.0", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "3.0.0", + "version": "3.1.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/protobuf-specs": "^0.4.1", "tuf-js": "^3.0.1" }, "engines": { @@ -8503,7 +7988,7 @@ } }, "node_modules/npm/node_modules/abbrev": { - "version": "3.0.0", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -8512,30 +7997,14 @@ } }, "node_modules/npm/node_modules/agent-base": { - "version": "7.1.1", + "version": "7.1.3", "dev": true, "inBundle": true, "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, "engines": { "node": ">= 14" } }, - "node_modules/npm/node_modules/aggregate-error": { - "version": "3.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/ansi-regex": { "version": "5.0.1", "dev": true, @@ -8604,7 +8073,7 @@ } }, "node_modules/npm/node_modules/brace-expansion": { - "version": "2.0.1", + "version": "2.0.2", "dev": true, "inBundle": true, "license": "MIT", @@ -8644,19 +8113,6 @@ "node": ">=18" } }, - "node_modules/npm/node_modules/cacache/node_modules/minizlib": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/npm/node_modules/cacache/node_modules/mkdirp": { "version": "3.0.1", "dev": true, @@ -8672,18 +8128,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm/node_modules/cacache/node_modules/p-map": { - "version": "7.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/npm/node_modules/cacache/node_modules/tar": { "version": "7.4.3", "dev": true, @@ -8711,7 +8155,7 @@ } }, "node_modules/npm/node_modules/chalk": { - "version": "5.3.0", + "version": "5.4.1", "dev": true, "inBundle": true, "license": "MIT", @@ -8732,7 +8176,7 @@ } }, "node_modules/npm/node_modules/ci-info": { - "version": "4.1.0", + "version": "4.2.0", "dev": true, "funding": [ { @@ -8747,7 +8191,7 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "4.1.1", + "version": "4.1.3", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -8758,15 +8202,6 @@ "node": ">=14" } }, - "node_modules/npm/node_modules/clean-stack": { - "version": "2.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/npm/node_modules/cli-columns": { "version": "4.0.0", "dev": true, @@ -8855,7 +8290,7 @@ } }, "node_modules/npm/node_modules/debug": { - "version": "4.3.7", + "version": "4.4.1", "dev": true, "inBundle": true, "license": "MIT", @@ -8918,7 +8353,7 @@ "license": "MIT" }, "node_modules/npm/node_modules/exponential-backoff": { - "version": "3.1.1", + "version": "3.1.2", "dev": true, "inBundle": true, "license": "Apache-2.0" @@ -8933,12 +8368,12 @@ } }, "node_modules/npm/node_modules/foreground-child": { - "version": "3.3.0", + "version": "3.3.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -8987,7 +8422,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/hosted-git-info": { - "version": "8.0.2", + "version": "8.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -8999,7 +8434,7 @@ } }, "node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.1", + "version": "4.2.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause" @@ -9018,12 +8453,12 @@ } }, "node_modules/npm/node_modules/https-proxy-agent": { - "version": "7.0.5", + "version": "7.0.6", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -9064,15 +8499,6 @@ "node": ">=0.8.19" } }, - "node_modules/npm/node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/npm/node_modules/ini": { "version": "5.0.0", "dev": true, @@ -9126,7 +8552,7 @@ } }, "node_modules/npm/node_modules/is-cidr": { - "version": "5.1.0", + "version": "5.1.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -9226,12 +8652,12 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "7.0.0", + "version": "7.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^8.0.0", + "@npmcli/arborist": "^8.0.1", "@npmcli/installed-package-contents": "^3.0.0", "binary-extensions": "^2.3.0", "diff": "^5.1.0", @@ -9245,12 +8671,12 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "9.0.0", + "version": "9.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^8.0.0", + "@npmcli/arborist": "^8.0.1", "@npmcli/run-script": "^9.0.1", "ci-info": "^4.0.0", "npm-package-arg": "^12.0.0", @@ -9266,12 +8692,12 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "6.0.0", + "version": "6.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^8.0.0" + "@npmcli/arborist": "^8.0.1" }, "engines": { "node": "^18.17.0 || >=20.5.0" @@ -9304,12 +8730,12 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "8.0.0", + "version": "8.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^8.0.0", + "@npmcli/arborist": "^8.0.1", "@npmcli/run-script": "^9.0.1", "npm-package-arg": "^12.0.0", "pacote": "^19.0.0" @@ -9452,7 +8878,7 @@ } }, "node_modules/npm/node_modules/minipass-fetch": { - "version": "4.0.0", + "version": "4.0.1", "dev": true, "inBundle": true, "license": "MIT", @@ -9468,19 +8894,6 @@ "encoding": "^0.1.13" } }, - "node_modules/npm/node_modules/minipass-fetch/node_modules/minizlib": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/npm/node_modules/minipass-flush": { "version": "1.0.5", "dev": true, @@ -9554,28 +8967,15 @@ } }, "node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", + "version": "3.0.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.1.2" }, "engines": { - "node": ">=8" + "node": ">= 18" } }, "node_modules/npm/node_modules/mkdirp": { @@ -9606,20 +9006,20 @@ } }, "node_modules/npm/node_modules/node-gyp": { - "version": "11.0.0", + "version": "11.2.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", "graceful-fs": "^4.2.6", "make-fetch-happen": "^14.0.3", "nopt": "^8.0.0", "proc-log": "^5.0.0", "semver": "^7.3.5", "tar": "^7.4.3", + "tinyglobby": "^0.2.12", "which": "^5.0.0" }, "bin": { @@ -9638,19 +9038,6 @@ "node": ">=18" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/minizlib": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/npm/node_modules/node-gyp/node_modules/mkdirp": { "version": "3.0.1", "dev": true, @@ -9693,12 +9080,12 @@ } }, "node_modules/npm/node_modules/nopt": { - "version": "8.0.0", + "version": "8.1.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "abbrev": "^2.0.0" + "abbrev": "^3.0.0" }, "bin": { "nopt": "bin/nopt.js" @@ -9707,15 +9094,6 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/npm/node_modules/nopt/node_modules/abbrev": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/normalize-package-data": { "version": "7.0.0", "dev": true, @@ -9773,7 +9151,7 @@ } }, "node_modules/npm/node_modules/npm-package-arg": { - "version": "12.0.0", + "version": "12.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -9846,19 +9224,6 @@ "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/npm/node_modules/npm-registry-fetch/node_modules/minizlib": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/npm/node_modules/npm-user-validate": { "version": "3.0.0", "dev": true, @@ -9869,15 +9234,12 @@ } }, "node_modules/npm/node_modules/p-map": { - "version": "4.0.0", + "version": "7.0.3", "dev": true, "inBundle": true, "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9960,7 +9322,7 @@ } }, "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.1.2", + "version": "7.1.0", "dev": true, "inBundle": true, "license": "MIT", @@ -10008,12 +9370,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/promise-retry": { "version": "2.0.1", "dev": true, @@ -10048,7 +9404,7 @@ } }, "node_modules/npm/node_modules/read": { - "version": "4.0.0", + "version": "4.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -10090,21 +9446,6 @@ "node": ">= 4" } }, - "node_modules/npm/node_modules/rimraf": { - "version": "5.0.10", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", "dev": true, @@ -10113,7 +9454,7 @@ "optional": true }, "node_modules/npm/node_modules/semver": { - "version": "7.6.3", + "version": "7.7.2", "dev": true, "inBundle": true, "license": "ISC", @@ -10158,29 +9499,29 @@ } }, "node_modules/npm/node_modules/sigstore": { - "version": "3.0.0", + "version": "3.1.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^3.0.0", + "@sigstore/bundle": "^3.1.0", "@sigstore/core": "^2.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "@sigstore/sign": "^3.0.0", - "@sigstore/tuf": "^3.0.0", - "@sigstore/verify": "^2.0.0" + "@sigstore/protobuf-specs": "^0.4.0", + "@sigstore/sign": "^3.1.0", + "@sigstore/tuf": "^3.1.0", + "@sigstore/verify": "^2.1.0" }, "engines": { "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/bundle": { - "version": "3.0.0", + "version": "3.1.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2" + "@sigstore/protobuf-specs": "^0.4.0" }, "engines": { "node": "^18.17.0 || >=20.5.0" @@ -10196,15 +9537,15 @@ } }, "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/sign": { - "version": "3.0.0", + "version": "3.1.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^3.0.0", + "@sigstore/bundle": "^3.1.0", "@sigstore/core": "^2.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "make-fetch-happen": "^14.0.1", + "@sigstore/protobuf-specs": "^0.4.0", + "make-fetch-happen": "^14.0.2", "proc-log": "^5.0.0", "promise-retry": "^2.0.1" }, @@ -10213,14 +9554,14 @@ } }, "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/verify": { - "version": "2.0.0", + "version": "2.1.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^3.0.0", + "@sigstore/bundle": "^3.1.0", "@sigstore/core": "^2.0.0", - "@sigstore/protobuf-specs": "^0.3.2" + "@sigstore/protobuf-specs": "^0.4.1" }, "engines": { "node": "^18.17.0 || >=20.5.0" @@ -10237,7 +9578,7 @@ } }, "node_modules/npm/node_modules/socks": { - "version": "2.8.3", + "version": "2.8.5", "dev": true, "inBundle": true, "license": "MIT", @@ -10251,12 +9592,12 @@ } }, "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "8.0.4", + "version": "8.0.5", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "agent-base": "^7.1.1", + "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" }, @@ -10301,7 +9642,7 @@ } }, "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.20", + "version": "3.0.21", "dev": true, "inBundle": true, "license": "CC0-1.0" @@ -10437,20 +9778,87 @@ "inBundle": true, "license": "ISC", "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tinyglobby": { + "version": "0.2.14", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/npm/node_modules/text-table": { - "version": "0.2.0", + "node_modules/npm/node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.6", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } }, - "node_modules/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", + "node_modules/npm/node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, "node_modules/npm/node_modules/treeverse": { "version": "3.0.0", @@ -10539,7 +9947,7 @@ } }, "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "6.0.0", + "version": "6.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -10696,23 +10104,11 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10735,6 +10131,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -10784,13 +10181,6 @@ "node": ">= 0.8.0" } }, - "node_modules/outvariant": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", - "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", - "dev": true, - "license": "MIT" - }, "node_modules/p-each-series": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", @@ -10804,6 +10194,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-event": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-6.0.1.tgz", + "integrity": "sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-filter": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", @@ -10863,9 +10269,9 @@ } }, "node_modules/p-map": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", - "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", + "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", "dev": true, "license": "MIT", "engines": { @@ -10885,6 +10291,19 @@ "node": ">=8" } }, + "node_modules/p-timeout": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -10916,15 +10335,15 @@ } }, "node_modules/parse-json": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.2.0.tgz", - "integrity": "sha512-eONBZy4hm2AgxjNFd8a4nyDJnzUAH0g34xSQAwWEVGCjdZ4ZL7dKZBfq267GWP/JaS9zW62Xs2FeAdDvpHHJGQ==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", + "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "index-to-position": "^1.0.0", - "type-fest": "^4.37.0" + "index-to-position": "^1.1.0", + "type-fest": "^4.39.1" }, "engines": { "node": ">=18" @@ -10934,9 +10353,9 @@ } }, "node_modules/parse-json/node_modules/type-fest": { - "version": "4.37.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.37.0.tgz", - "integrity": "sha512-S/5/0kFftkq27FPNye0XM1e2NsnoD/3FS+pBmbjmmtLT6I+i344KoOf7pvXreaFsDamWeaJX55nczA1m5PsBDg==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -10994,7 +10413,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -11004,6 +10422,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11027,9 +10446,9 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -11037,19 +10456,12 @@ "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-to-regexp": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", - "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", - "dev": true, - "license": "MIT" - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -11068,9 +10480,9 @@ "license": "MIT" }, "node_modules/pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", "dev": true, "license": "MIT", "engines": { @@ -11185,25 +10597,25 @@ } }, "node_modules/pkg-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz", - "integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", "dev": true, "license": "MIT", "dependencies": { - "confbox": "^0.2.1", - "exsolve": "^1.0.1", + "confbox": "^0.2.2", + "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "node_modules/playwright": { - "version": "1.51.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.51.1.tgz", - "integrity": "sha512-kkx+MB2KQRkyxjYPc3a0wLZZoDczmppyGJIvQ43l+aZihkaVvmu/21kiyaHeHjiFxjxNNFnUncKmcGIyOojsaw==", + "version": "1.58.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz", + "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.51.1" + "playwright-core": "1.58.2" }, "bin": { "playwright": "cli.js" @@ -11216,9 +10628,9 @@ } }, "node_modules/playwright-core": { - "version": "1.51.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.51.1.tgz", - "integrity": "sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw==", + "version": "1.58.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz", + "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -11243,10 +10655,19 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/portfinder": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.35.tgz", - "integrity": "sha512-73JaFg4NwYNAufDtS5FsFu/PdM49ahJrO1i44aCRsDWju1z5wuGDaqyFUQWR6aJoK2JPDWlaYYAGFNIGTSUHSw==", + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.38.tgz", + "integrity": "sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==", "dev": true, "license": "MIT", "dependencies": { @@ -11258,9 +10679,9 @@ } }, "node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -11278,7 +10699,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.8", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -11297,9 +10718,9 @@ } }, "node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "dev": true, "license": "MIT", "peer": true, @@ -11314,9 +10735,9 @@ } }, "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", "dev": true, "license": "MIT", "dependencies": { @@ -11355,9 +10776,9 @@ } }, "node_modules/pretty-ms": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", - "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11391,19 +10812,6 @@ "dev": true, "license": "MIT" }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -11431,28 +10839,154 @@ "node": ">=6" } }, - "node_modules/qr-code-styling": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/qr-code-styling/-/qr-code-styling-1.9.1.tgz", - "integrity": "sha512-T/VxQchuZkQwYhIcyyMUmtXHPeDT6lJBYHfqGD5CBDyIjswxS7JZKf443q+SXO1K/9SUswi6JpXEUQ5AoMCpyg==", + "node_modules/qrcode": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", "license": "MIT", "dependencies": { - "qrcode-generator": "^1.4.4" + "dijkstrajs": "^1.0.1", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" }, "engines": { - "node": ">=18.18.0" + "node": ">=10.13.0" } }, - "node_modules/qrcode-generator": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-1.4.4.tgz", - "integrity": "sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==", - "license": "MIT" + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qrcode/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } }, "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -11466,9 +11000,9 @@ } }, "node_modules/quansync": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz", - "integrity": "sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==", + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", "dev": true, "funding": [ { @@ -11482,13 +11016,6 @@ ], "license": "MIT" }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "license": "MIT" - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -11562,9 +11089,9 @@ } }, "node_modules/read-package-up/node_modules/type-fest": { - "version": "4.37.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.37.0.tgz", - "integrity": "sha512-S/5/0kFftkq27FPNye0XM1e2NsnoD/3FS+pBmbjmmtLT6I+i344KoOf7pvXreaFsDamWeaJX55nczA1m5PsBDg==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -11614,9 +11141,9 @@ } }, "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "4.37.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.37.0.tgz", - "integrity": "sha512-S/5/0kFftkq27FPNye0XM1e2NsnoD/3FS+pBmbjmmtLT6I+i344KoOf7pvXreaFsDamWeaJX55nczA1m5PsBDg==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -11627,9 +11154,9 @@ } }, "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.37.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.37.0.tgz", - "integrity": "sha512-S/5/0kFftkq27FPNye0XM1e2NsnoD/3FS+pBmbjmmtLT6I+i344KoOf7pvXreaFsDamWeaJX55nczA1m5PsBDg==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -11681,21 +11208,14 @@ "node": ">=8.10.0" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true, - "license": "MIT" - }, "node_modules/registry-auth-token": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", - "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.1.tgz", + "integrity": "sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==", "dev": true, "license": "MIT", "dependencies": { - "@pnpm/npm-conf": "^2.1.0" + "@pnpm/npm-conf": "^3.0.2" }, "engines": { "node": ">=14" @@ -11705,7 +11225,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11721,6 +11240,12 @@ "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "license": "ISC" + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -11768,6 +11293,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -11779,10 +11305,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -11793,7 +11327,8 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -11811,9 +11346,10 @@ } }, "node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -11823,13 +11359,13 @@ } }, "node_modules/rollup": { - "version": "4.36.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.36.0.tgz", - "integrity": "sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.8" }, "bin": { "rollup": "dist/bin/rollup" @@ -11839,25 +11375,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.36.0", - "@rollup/rollup-android-arm64": "4.36.0", - "@rollup/rollup-darwin-arm64": "4.36.0", - "@rollup/rollup-darwin-x64": "4.36.0", - "@rollup/rollup-freebsd-arm64": "4.36.0", - "@rollup/rollup-freebsd-x64": "4.36.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.36.0", - "@rollup/rollup-linux-arm-musleabihf": "4.36.0", - "@rollup/rollup-linux-arm64-gnu": "4.36.0", - "@rollup/rollup-linux-arm64-musl": "4.36.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.36.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.36.0", - "@rollup/rollup-linux-riscv64-gnu": "4.36.0", - "@rollup/rollup-linux-s390x-gnu": "4.36.0", - "@rollup/rollup-linux-x64-gnu": "4.36.0", - "@rollup/rollup-linux-x64-musl": "4.36.0", - "@rollup/rollup-win32-arm64-msvc": "4.36.0", - "@rollup/rollup-win32-ia32-msvc": "4.36.0", - "@rollup/rollup-win32-x64-msvc": "4.36.0", + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" } }, @@ -11899,6 +11441,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, "license": "MIT" }, "node_modules/safer-buffer": { @@ -12000,9 +11543,9 @@ } }, "node_modules/semantic-release/node_modules/clean-stack": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", - "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.3.0.tgz", + "integrity": "sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==", "dev": true, "license": "MIT", "dependencies": { @@ -12029,24 +11572,24 @@ } }, "node_modules/semantic-release/node_modules/execa": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", - "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", "dev": true, "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.3", + "cross-spawn": "^7.0.6", "figures": "^6.1.0", "get-stream": "^9.0.0", - "human-signals": "^8.0.0", + "human-signals": "^8.0.1", "is-plain-obj": "^4.1.0", "is-stream": "^4.0.1", "npm-run-path": "^6.0.0", - "pretty-ms": "^9.0.0", + "pretty-ms": "^9.2.0", "signal-exit": "^4.1.0", "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.0.0" + "yoctocolors": "^2.1.1" }, "engines": { "node": "^18.19.0 || >=20.5.0" @@ -12086,9 +11629,9 @@ } }, "node_modules/semantic-release/node_modules/human-signals": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", - "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -12201,9 +11744,10 @@ } }, "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -12271,9 +11815,9 @@ } }, "node_modules/shell-quote": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", - "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "dev": true, "license": "MIT", "engines": { @@ -12370,6 +11914,7 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, "license": "ISC" }, "node_modules/signale": { @@ -12455,58 +12000,27 @@ "node": ">=4" } }, - "node_modules/signale/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/signale/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/simple-get": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", - "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "node_modules/signale/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "license": "MIT", "dependencies": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/simple-update-notifier": { @@ -12523,9 +12037,9 @@ } }, "node_modules/sirv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", - "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", "dev": true, "license": "MIT", "dependencies": { @@ -12564,13 +12078,13 @@ } }, "node_modules/socket.io-client": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", - "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.3.tgz", + "integrity": "sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", + "debug": "~4.4.1", "engine.io-client": "~6.6.1", "socket.io-parser": "~4.2.4" }, @@ -12578,23 +12092,6 @@ "node": ">=10.0.0" } }, - "node_modules/socket.io-client/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/socket.io-mock-ts": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/socket.io-mock-ts/-/socket.io-mock-ts-1.0.2.tgz", @@ -12607,35 +12104,18 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.5.tgz", + "integrity": "sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "debug": "~4.4.1" }, "engines": { "node": ">=10.0.0" } }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -12693,9 +12173,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.21", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", - "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", "dev": true, "license": "CC0-1.0" }, @@ -12723,20 +12203,10 @@ "dev": true, "license": "MIT" }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/std-env": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.1.tgz", - "integrity": "sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", "dev": true, "license": "MIT" }, @@ -12751,17 +12221,11 @@ "readable-stream": "^2.0.2" } }, - "node_modules/strict-event-emitter": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", - "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", - "dev": true, - "license": "MIT" - }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" @@ -12778,21 +12242,17 @@ } }, "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/string-width-cjs": { @@ -12811,42 +12271,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -12906,14 +12330,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-literal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, "node_modules/super-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", - "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.1.0.tgz", + "integrity": "sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==", "dev": true, "license": "MIT", "dependencies": { "function-timeout": "^1.0.1", + "make-asynchronous": "^1.0.1", "time-span": "^5.1.0" }, "engines": { @@ -12967,46 +12412,19 @@ } }, "node_modules/synckit": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", - "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, "license": "MIT", "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" + "@pkgr/core": "^0.2.9" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "license": "ISC", - "engines": { - "node": ">=8" + "url": "https://opencollective.com/synckit" } }, "node_modules/temp-dir": { @@ -13020,9 +12438,9 @@ } }, "node_modules/tempy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.2.0.tgz", + "integrity": "sha512-d79HhZya5Djd7am0q+W4RTsSU+D/aJzM+4Y4AGJGuGlgM2L6sx5ZvOYTmZjqPhrDrV6xJTtRSm1JCLj6V6LHLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -13065,24 +12483,76 @@ } }, "node_modules/test-exclude": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", - "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.2.tgz", + "integrity": "sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw==", "dev": true, "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^10.4.1", - "minimatch": "^9.0.4" + "minimatch": "^10.2.2" }, "engines": { "node": ">=18" } }, + "node_modules/test-exclude/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/test-exclude/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/test-exclude/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/test-exclude/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, "node_modules/test-exclude/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -13100,6 +12570,22 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/test-exclude/node_modules/glob/node_modules/minimatch": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.8.tgz", + "integrity": "sha512-reYkDYtj/b19TeqbNZCV4q9t+Yxylf/rYBsLb42SXJatTv4/ylq5lEiAmhA/IToxO7NI2UzNMghHoHuaqDkAjw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/test-exclude/node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -13123,21 +12609,89 @@ "dev": true, "license": "ISC" }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/test-exclude/node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/test-exclude/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/test-exclude/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/text-extensions": { @@ -13231,10 +12785,58 @@ "dev": true, "license": "MIT" }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tinypool": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", - "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", "dev": true, "license": "MIT", "engines": { @@ -13252,9 +12854,9 @@ } }, "node_modules/tinyspy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", - "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", + "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", "dev": true, "license": "MIT", "engines": { @@ -13294,38 +12896,6 @@ "nodetouch": "bin/nodetouch.js" } }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, "node_modules/traverse": { "version": "0.6.8", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", @@ -13448,9 +13018,9 @@ } }, "node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -13469,9 +13039,9 @@ "license": "MIT" }, "node_modules/ufo": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", "dev": true, "license": "MIT" }, @@ -13509,13 +13079,6 @@ "node": ">=14.0" } }, - "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true, - "license": "MIT" - }, "node_modules/unicode-emoji-modifier-base": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", @@ -13568,9 +13131,9 @@ } }, "node_modules/universal-user-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", - "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", "dev": true, "license": "ISC" }, @@ -13618,21 +13181,11 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, "license": "MIT" }, "node_modules/uuid": { @@ -13660,15 +13213,18 @@ } }, "node_modules/vite": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.2.tgz", - "integrity": "sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", "postcss": "^8.5.3", - "rollup": "^4.30.1" + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" }, "bin": { "vite": "bin/vite.js" @@ -13742,17 +13298,17 @@ } }, "node_modules/vite-node": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.9.tgz", - "integrity": "sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.4.0", - "es-module-lexer": "^1.6.0", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0" + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" @@ -13765,9 +13321,9 @@ } }, "node_modules/vite-plugin-dts": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-4.5.3.tgz", - "integrity": "sha512-P64VnD00dR+e8S26ESoFELqc17+w7pKkwlBpgXteOljFyT0zDwD8hH4zXp49M/kciy//7ZbVXIwQCekBJjfWzA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-4.5.4.tgz", + "integrity": "sha512-d4sOM8M/8z7vRXHHq/ebbblfaxENjogAAekcfcDCCwAyvGqnPrc7f4NZbvItS+g4WTgerW0xDwSz5qz11JT3vg==", "dev": true, "license": "MIT", "dependencies": { @@ -13791,32 +13347,66 @@ } } }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/vitest": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.9.tgz", - "integrity": "sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "3.0.9", - "@vitest/mocker": "3.0.9", - "@vitest/pretty-format": "^3.0.9", - "@vitest/runner": "3.0.9", - "@vitest/snapshot": "3.0.9", - "@vitest/spy": "3.0.9", - "@vitest/utils": "3.0.9", + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", "chai": "^5.2.0", - "debug": "^4.4.0", - "expect-type": "^1.1.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", - "std-env": "^3.8.0", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", - "tinypool": "^1.0.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.0.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "bin": { @@ -13832,8 +13422,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.0.9", - "@vitest/ui": "3.0.9", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, @@ -13861,6 +13451,19 @@ } } }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/vscode-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", @@ -13869,14 +13472,14 @@ "license": "MIT" }, "node_modules/wait-on": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.3.tgz", - "integrity": "sha512-nQFqAFzZDeRxsu7S3C7LbuxslHhk+gnJZHyethuGKAn2IVleIbTB9I3vJSQiSR+DifUqmdzfPMoMPJfLqMF2vw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.5.tgz", + "integrity": "sha512-J3WlS0txVHkhLRb2FsmRg3dkMTCV1+M6Xra3Ho7HzZDHpE7DCOnoSoCJsZotrmW3uRMhvIJGSKUKrh/MeF4iag==", "dev": true, "license": "MIT", "dependencies": { - "axios": "^1.8.2", - "joi": "^17.13.3", + "axios": "^1.12.1", + "joi": "^18.0.1", "lodash": "^4.17.21", "minimist": "^1.2.8", "rxjs": "^7.8.2" @@ -13888,11 +13491,12 @@ "node": ">=12.0.0" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" + "node_modules/web-worker": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.5.0.tgz", + "integrity": "sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/webpack-virtual-modules": { "version": "0.6.2", @@ -13905,6 +13509,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", "dev": true, "license": "MIT", "dependencies": { @@ -13914,16 +13519,6 @@ "node": ">=12" } }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -13940,6 +13535,12 @@ "node": ">= 8" } }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "license": "ISC" + }, "node_modules/why-is-node-running": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", @@ -13957,35 +13558,6 @@ "node": ">=8" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/wide-align/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/wide-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -14004,18 +13576,18 @@ "license": "MIT" }, "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -14040,80 +13612,17 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, "license": "ISC" }, "node_modules/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "dev": true, "license": "MIT", "engines": { @@ -14164,19 +13673,23 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, "license": "ISC" }, "node_modules/yaml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", - "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", "dev": true, "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yargs": { @@ -14208,28 +13721,6 @@ "node": ">=12" } }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -14244,22 +13735,9 @@ } }, "node_modules/yoctocolors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", - "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yoctocolors-cjs": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", - "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", "dev": true, "license": "MIT", "engines": { @@ -14270,9 +13748,9 @@ } }, "node_modules/zod": { - "version": "3.24.2", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", - "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "dev": true, "license": "MIT", "funding": { diff --git a/package.json b/package.json index eeb5e8e..dc2c419 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "@algorandfoundation/liquid-client", - "version": "1.0.0-canary.3", + "name": "@algorandecosystem/liquid-client", + "version": "1.0.0-beta.1", "description": "Connect to a Liquid Auth service", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -55,7 +55,7 @@ "typedoc-dev": "concurrently \"npm:typedoc:*\"", "release": "semantic-release" }, - "author": "Algorand Foundation", + "author": "Algorand Ecosystem", "license": "Apache-2.0", "devDependencies": { "@codecov/vite-plugin": "^1.9.0", @@ -65,7 +65,6 @@ "@semantic-release/github": "^10.0.3", "@semantic-release/npm": "^12.0.0", "@semantic-release/release-notes-generator": "^13.0.0", - "@types/qrcode": "^1.5.5", "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "^7.8.0", "@typescript-eslint/parser": "^7.8.0", @@ -92,18 +91,132 @@ "wait-on": "^8.0.3" }, "dependencies": { - "canvas": "^2.11.2", "eventemitter3": "^5.0.1", - "qr-code-styling": "^1.9.1", + "qrcode": "^1.5.4", "socket.io-client": "^4.7.5", "tweetnacl": "^1.0.3", "uuid": "^10.0.0" }, "release": { "plugins": [ - "@semantic-release/commit-analyzer", - "@semantic-release/release-notes-generator", - "@semantic-release/changelog", + [ + "@semantic-release/commit-analyzer", + { + "preset": "angular", + "releaseRules": [ + { + "type": "breaking", + "release": "major" + }, + { + "type": "feat", + "release": "minor" + }, + { + "type": "chore", + "release": "minor" + }, + { + "type": "ci", + "release": "patch" + }, + { + "type": "fix", + "release": "patch" + }, + { + "type": "docs", + "release": "patch" + }, + { + "type": "test", + "release": "patch" + }, + { + "type": "refactor", + "release": "patch" + }, + { + "type": "style", + "release": "patch" + }, + { + "type": "build", + "release": "patch" + }, + { + "type": "revert", + "release": "patch" + } + ] + } + ], + [ + "@semantic-release/release-notes-generator", + { + "preset": "conventionalcommits", + "presetConfig": { + "types": [ + { + "type": "breaking", + "section": "Breaking", + "hidden": false + }, + { + "type": "feat", + "section": "Features", + "hidden": false + }, + { + "type": "fix", + "section": "Bug Fixes", + "hidden": false + }, + { + "type": "docs", + "section": "Documentation", + "hidden": false + }, + { + "type": "style", + "section": "Updates & Maintenance", + "hidden": false + }, + { + "type": "refactor", + "section": "Updates & Maintenance", + "hidden": false + }, + { + "type": "perf", + "section": "Updates & Maintenance", + "hidden": false + }, + { + "type": "test", + "section": "Updates & Maintenance", + "hidden": false + }, + { + "type": "ci", + "section": "Updates & Maintenance", + "hidden": false + }, + { + "type": "chore", + "section": "Updates & Maintenance", + "hidden": false + } + ] + } + } + ], + [ + "@semantic-release/changelog", + { + "changelogFile": "CHANGELOG.md" + } + ], "@semantic-release/npm", [ "@semantic-release/git", @@ -112,7 +225,7 @@ "CHANGELOG.md", "package.json" ], - "message": "chore(release): [skip ci] Liquid Client \n\n${nextRelease.notes}" + "message": "release: v${nextRelease.version}" } ], [ @@ -123,11 +236,7 @@ ] ], "branches": [ - "release/*", - { - "name": "main", - "prerelease": "canary" - } + "main" ] } } diff --git a/src/assertion.encoder.ts b/src/assertion.encoder.ts index 2bd473e..a83a50d 100644 --- a/src/assertion.encoder.ts +++ b/src/assertion.encoder.ts @@ -101,13 +101,13 @@ export function decodeOptions( if (typeof options !== 'object' || typeof options.challenge !== 'string') throw new TypeError(INVALID_INPUT_MESSAGE); const decodedOptions: PublicKeyCredentialRequestOptions = { ...options }; - decodedOptions.challenge = fromBase64Url(options.challenge as string); + decodedOptions.challenge = fromBase64Url(options.challenge as string).buffer as ArrayBuffer; decodedOptions.allowCredentials = options.allowCredentials?.map( (cred: EncodedPublicKeyCredentialDescriptor) => { return { ...cred, - id: fromBase64Url(cred.id as string), + id: fromBase64Url(cred.id as string).buffer as ArrayBuffer, } as PublicKeyCredentialDescriptor; }, ) || []; diff --git a/src/assertion.fetch.spec.ts b/src/assertion.fetch.spec.ts index f7ffac7..0c8bc28 100644 --- a/src/assertion.fetch.spec.ts +++ b/src/assertion.fetch.spec.ts @@ -1,8 +1,8 @@ import { describe, it, beforeAll, expect } from 'vitest'; import { createMockFetch, createMocks } from '../test/test.config'; // #region assertionImport -import { assertion } from '@algorandfoundation/liquid-client'; -import type { EncodedCredential } from '@algorandfoundation/liquid-client/assertion/encoder'; +import { assertion } from '@algorandecosystem/liquid-client'; +import type { EncodedCredential } from '@algorandecosystem/liquid-client/assertion/encoder'; // #endregion assertionImport import requestParamFixtures from '../__fixtures__/assertion.request.param.fixtures.json'; diff --git a/src/assertion.spec.ts b/src/assertion.spec.ts index 0eb88f2..336da30 100644 --- a/src/assertion.spec.ts +++ b/src/assertion.spec.ts @@ -1,7 +1,7 @@ import { describe, it, beforeAll, expect } from 'vitest'; import { createMocks } from '../test/test.config'; // #region assertionImport -import { assertion } from '@algorandfoundation/liquid-client/assertion'; +import { assertion } from '@algorandecosystem/liquid-client/assertion'; // #endregion assertionImport import requestParamFixtures from '../__fixtures__/assertion.request.param.fixtures.json'; diff --git a/src/attestation.guide.md b/src/attestation.guide.md index 51c8e17..2422253 100644 --- a/src/attestation.guide.md +++ b/src/attestation.guide.md @@ -18,7 +18,7 @@ The caller must provide a callback that will be called when a challenge is recei ```typescript // browser.client.ts import * as nacl from 'tweetnacl' -import {toBase64URL} from '@algorandfoundation/liquid-client/encoding' +import {toBase64URL} from '@algorandecosystem/liquid-client/encoding' // Sign in to the service with a new credential and wallet await client.attestation( @@ -45,8 +45,8 @@ Using the `attestation` method to create a passkey without using the `SignalClie ```typescript import * as nacl from 'tweetnacl' -import {attestation} from '@algorandfoundation/liquid-client/attestation' -import {toBase64URL} from '@algorandfoundation/liquid-client/encoding' +import {attestation} from '@algorandecosystem/liquid-client/attestation' +import {toBase64URL} from '@algorandecosystem/liquid-client/encoding' await attestation( "https://my-liquid-service.com", @@ -76,7 +76,7 @@ the three steps of the process. Manually fetching the PublicKeyCredentialCreationOptions from the service. ```typescript -import {fetch} from '@algorandfoundation/liquid-client/attestation' +import {fetch} from '@algorandecosystem/liquid-client/attestation' const encodedOptions = await fetch.postOptions("https://my-liquid-service.com") ``` @@ -86,7 +86,7 @@ const encodedOptions = await fetch.postOptions("https://my-liquid-service.com") Decode the options and create a new passkey. ```typescript -import {decodeAddress, fromBase64Url} from "@algorandfoundation/liquid-client/encoding"; +import {decodeAddress, fromBase64Url} from "@algorandecosystem/liquid-client/encoding"; const options = { ...encodedOptions }; // Uint8Array of the user's id, is set as the encoded address for this type of key @@ -118,7 +118,7 @@ Sign the challenge with an additional KeyPair. ```typescript import * as nacl from 'tweetnacl' -import {toBase64URL} from '@algorandfoundation/liquid-client/encoding' +import {toBase64URL} from '@algorandecosystem/liquid-client/encoding' credential.clientExtensionResults = { // The type of signature and public key, this is also used @@ -140,8 +140,8 @@ credential.clientExtensionResults = { Encode and submit the passkey to the service. ```typescript -import {fetch} from '@algorandfoundation/liquid-client/attestation' -import {toBase64URL} from '@algorandfoundation/liquid-client/encoding' +import {fetch} from '@algorandecosystem/liquid-client/attestation' +import {toBase64URL} from '@algorandecosystem/liquid-client/encoding' const result = await fetch.postResponse("https://my-liquid-service.com", { id: credential.id, diff --git a/src/attestation.spec.ts b/src/attestation.spec.ts index 127dc4f..9218e11 100644 --- a/src/attestation.spec.ts +++ b/src/attestation.spec.ts @@ -1,7 +1,7 @@ import { describe, it, beforeAll, expect } from 'vitest'; import { createMocks } from '../test/test.config'; // #region import -import { attestation } from '@algorandfoundation/liquid-client/attestation'; +import { attestation } from '@algorandecosystem/liquid-client/attestation'; // #endregion import import requestBodyFixtures from '../__fixtures__/attestation.request.body.fixtures.json'; diff --git a/src/constants.ts b/src/constants.ts index 1c46952..9765243 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -6,7 +6,7 @@ * @protected */ -import { Options as QRCodeOptions } from 'qr-code-styling'; +import type { QRCodeToDataURLOptions } from 'qrcode'; /** * DEFAULT_FETCH_OPTIONS is a constant object used as a default configuration @@ -31,49 +31,11 @@ export const DEFAULT_FETCH_OPTIONS = { }, }; -export const DEFAULT_QR_CODE_OPTIONS: QRCodeOptions = { +export const DEFAULT_QR_CODE_OPTIONS: QRCodeToDataURLOptions = { width: 500, - height: 500, - type: 'svg', - data: 'liquid://', - margin: 25, - imageOptions: { hideBackgroundDots: true, imageSize: 0.4, margin: 15 }, - dotsOptions: { - type: 'extra-rounded', - gradient: { - type: 'radial', - rotation: 0, - colorStops: [ - { offset: 0, color: '#9966ff' }, - { offset: 1, color: '#332257' }, - ], - }, - }, - backgroundOptions: { color: '#ffffff' }, - // TODO: Host logo publicly - image: - 'https://algorandtechnologies.com/assets/media-kit/logos/logo-marks/png/algorand_logo_mark_black.png', - cornersSquareOptions: { - color: '#000000', - gradient: { - type: 'linear', - rotation: 0, - colorStops: [ - { offset: 0, color: '#332257' }, - { offset: 1, color: '#040908' }, - ], - }, - }, - cornersDotOptions: { - type: 'dot', - color: '#000000', - gradient: { - type: 'linear', - rotation: 0, - colorStops: [ - { offset: 0, color: '#000000' }, - { offset: 1, color: '#000000' }, - ], - }, + margin: 4, + color: { + dark: '#332257', + light: '#ffffff', }, }; diff --git a/src/signal.answer.guide.md b/src/signal.answer.guide.md index c398f3d..da08e5e 100644 --- a/src/signal.answer.guide.md +++ b/src/signal.answer.guide.md @@ -18,7 +18,7 @@ Request IDs are given to the remote peer, usually as a deep-link encoded into a This ID is used by the remote peer to authenticate the current client. ```typescript -import { SignalClient } from '@algorandfoundation/liquid-client'; +import { SignalClient } from '@algorandecosystem/liquid-client'; const requestId = SignalClient.generateRequestId(); ``` diff --git a/src/signal.offer.guide.md b/src/signal.offer.guide.md index c38a535..fd0eb8d 100644 --- a/src/signal.offer.guide.md +++ b/src/signal.offer.guide.md @@ -20,7 +20,7 @@ Wallets are responsible for creating offers to connect. ## Signaling ```typescript -import { SignalClient } from "@algorandfoundation/liquid-client"; +import { SignalClient } from "@algorandecosystem/liquid-client"; const client = new SignalClient("") // Receive the RequestID from the Peer willing to Answer this offer diff --git a/src/signal.spec.ts b/src/signal.spec.ts index eec87c9..3717b82 100644 --- a/src/signal.spec.ts +++ b/src/signal.spec.ts @@ -89,19 +89,14 @@ describe('SignalClient', function () { expect(id.length).toBe(36); }); - // TODO: Decide what to do with QR Code generation, possibly fork and maintain the library since Pera also uses it test('qrCode', async function () { await expect(() => client.qrCode()).rejects.toThrow( new Error(REQUEST_IS_MISSING_MESSAGE), ); client.requestId = SignalClient.generateRequestId(); - if (typeof window !== 'undefined') { - const qrCode = await client.qrCode(); - expect(qrCode).toBeDefined(); - } else { - await expect(() => client.qrCode()).rejects.toThrow(); - } + const qrCode = await client.qrCode(); + expect(qrCode).toBeDefined(); }); test('deepLink', function () { @@ -440,15 +435,11 @@ test('generateQRCode', async () => { url: 'https://liquid-auth.onrender.com', requestId: '34337d4a-0a42-4a51-a418-13a5b7c8e86d', }; - if (typeof window !== 'undefined') { - await expect(async () => - generateQRCode({ url: qrFixture.url }), - ).rejects.toThrow(new Error(REQUEST_IS_MISSING_MESSAGE)); - const result = await generateQRCode(qrFixture); - expect(result).toBeDefined(); - } else { - await expect(() => generateQRCode(qrFixture)).rejects.toThrow(); - } + await expect(async () => + generateQRCode({ url: qrFixture.url }), + ).rejects.toThrow(new Error(REQUEST_IS_MISSING_MESSAGE)); + const result = await generateQRCode(qrFixture); + expect(result).toBeDefined(); }); test('generateDeepLink', async () => { diff --git a/src/signal.ts b/src/signal.ts index ca91792..24032c4 100644 --- a/src/signal.ts +++ b/src/signal.ts @@ -6,7 +6,8 @@ * @document ./signal.answer.guide.md */ import { io, ManagerOptions, Socket, SocketOptions } from 'socket.io-client'; -import QRCodeStyling, { Options as QRCodeOptions } from 'qr-code-styling'; +import QRCode from 'qrcode'; +import type { QRCodeToDataURLOptions } from 'qrcode'; import { EventEmitter } from 'eventemitter3'; import { v7 as uuidv7 } from 'uuid'; @@ -30,17 +31,12 @@ export type LinkMessage = { export async function generateQRCode( { requestId, url }: { requestId?: string; url: string }, - qrCodeOptions: QRCodeOptions = DEFAULT_QR_CODE_OPTIONS, + qrCodeOptions: QRCodeToDataURLOptions = DEFAULT_QR_CODE_OPTIONS, ) { if (typeof requestId === 'undefined') throw new Error(REQUEST_IS_MISSING_MESSAGE); - qrCodeOptions.data = generateDeepLink(url, requestId); - - const qrCode = new QRCodeStyling(qrCodeOptions); - return await qrCode.getRawData('png').then((blob) => { - if (!blob) throw new TypeError('Could not get qrcode blob'); - return URL.createObjectURL(blob); - }); + const data = generateDeepLink(url, requestId); + return await QRCode.toDataURL(data, qrCodeOptions); } /** @@ -66,7 +62,7 @@ export class SignalClient extends EventEmitter { private authenticated: boolean = false; private requestId: string | undefined; peerClient: RTCPeerConnection | undefined; - private qrCodeOptions: QRCodeOptions = DEFAULT_QR_CODE_OPTIONS; + private qrCodeOptions: QRCodeToDataURLOptions = DEFAULT_QR_CODE_OPTIONS; socket: Socket; /** diff --git a/tsconfig.test.json b/tsconfig.test.json index 5c03abf..5daa484 100644 --- a/tsconfig.test.json +++ b/tsconfig.test.json @@ -10,14 +10,14 @@ "target": "esnext", "strict": true, "paths": { - "@algorandfoundation/liquid-client": ["./src/index.ts"], - "@algorandfoundation/liquid-client/encoding": ["./src/encoder.ts"], - "@algorandfoundation/liquid-client/attestation": ["./src/attestation.ts"], - "@algorandfoundation/liquid-client/attestation/fetch": ["./src/attestation.fetch.ts"], - "@algorandfoundation/liquid-client/attestation/encoder": ["./src/attestation.encoder.ts"], - "@algorandfoundation/liquid-client/assertion": ["./src/assertion.ts"], - "@algorandfoundation/liquid-client/assertion/fetch": ["./src/assertion.fetch.ts"], - "@algorandfoundation/liquid-client/assertion/encoder": ["./src/assertion.encoder.ts"] + "@algorandecosystem/liquid-client": ["./src/index.ts"], + "@algorandecosystem/liquid-client/encoding": ["./src/encoder.ts"], + "@algorandecosystem/liquid-client/attestation": ["./src/attestation.ts"], + "@algorandecosystem/liquid-client/attestation/fetch": ["./src/attestation.fetch.ts"], + "@algorandecosystem/liquid-client/attestation/encoder": ["./src/attestation.encoder.ts"], + "@algorandecosystem/liquid-client/assertion": ["./src/assertion.ts"], + "@algorandecosystem/liquid-client/assertion/fetch": ["./src/assertion.fetch.ts"], + "@algorandecosystem/liquid-client/assertion/encoder": ["./src/assertion.encoder.ts"] } }, "exclude": [ diff --git a/typedoc.json b/typedoc.json index 34e0a2d..efece19 100644 --- a/typedoc.json +++ b/typedoc.json @@ -1,6 +1,6 @@ { "$schema": "https://typedoc.org/schema.json", - "name": "@algorandfoundation/liquid-client", + "name": "@algorandecosystem/liquid-client", "customFooterHtml": "Copyright Algorand Foundation 2025", "hideGenerator": true, "excludeInternal": true, diff --git a/vite.config.ts b/vite.config.ts index 9282424..cec244d 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -16,18 +16,18 @@ export default defineConfig({ dts({ tsconfigPath: './tsconfig.app.json' }), codecovVitePlugin({ enableBundleAnalysis: process.env.CODECOV_TOKEN !== undefined, - bundleName: '@algorandfoundation/liquid-client', + bundleName: '@algorandecosystem/liquid-client', uploadToken: process.env.CODECOV_TOKEN, }), ], resolve: { alias: { - '@algorandfoundation/liquid-client': resolve(__dirname, './src'), - '@algorandfoundation/liquid-client/assertion': resolve( + '@algorandecosystem/liquid-client': resolve(__dirname, './src'), + '@algorandecosystem/liquid-client/assertion': resolve( __dirname, './src/assertion', ), - '@algorandfoundation/liquid-client/encoding': resolve( + '@algorandecosystem/liquid-client/encoding': resolve( __dirname, './src/encoder', ),