diff --git a/.github/dependabot.yml b/.github/dependabot.yml index ff5b4d83..94efc652 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -9,14 +9,6 @@ updates: commit-message: prefix: "chore" - # Maintain dependencies for npm - - package-ecosystem: "npm" - directory: "/js" - schedule: - interval: "weekly" - commit-message: - prefix: "chore" - # Maintain dependencies for Composer - package-ecosystem: "gomod" directory: "/go" diff --git a/.github/workflows/typescript.yml b/.github/workflows/typescript.yml deleted file mode 100644 index 4c557711..00000000 --- a/.github/workflows/typescript.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: TypeScript -on: - pull_request: - paths: - - js/** - - .github/workflows/typescript.yml - push: - branches: - - master - -permissions: - contents: read - -concurrency: - group: ts-ci-${{ github.ref }} - cancel-in-progress: true - -jobs: - test: - name: Test - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Run test suite - working-directory: ./js - run: yarn && yarn test - - analysis: - name: Typescript analysis - needs: [test] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - # Disabling shallow clone is recommended for improving relevancy of reporting - fetch-depth: 0 - - name: sonarcloud - if: ${{ env.GIT_DIFF && !github.event.pull_request.draft && env.SONAR_TOKEN != null }} - uses: SonarSource/sonarcloud-github-action@v2.3.0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - with: - projectBaseDir: js diff --git a/README.md b/README.md index 5c8c3c29..9c72530a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,6 @@ | ------------------ | ------------------------------------------------- | ---------------------------------------------- | | [Go](./go) | [![Go Test][go-test-badge]][go-test-link] | [![Go Cov][go-cov-badge]][go-cov-link] | | [Rust](./rust) | [![Rust Test][rust-test-badge]][rust-test-link] | [![Rust Cov][rust-cov-badge]][rust-cov-link] | -| [TypeScript](./js) | [![TypeScript Test][ts-test-badge]][ts-test-link] | [![TypeScript Cov][ts-cov-badge]][ts-cov-link] | [cosmos-link]: https://cosmos.network [go-test-link]: https://github.com/cosmos/ics23/actions/workflows/go.yml @@ -17,10 +16,6 @@ [rust-test-badge]: https://github.com/cosmos/ics23/actions/workflows/rust.yml/badge.svg?branch=master [rust-cov-link]: https://codecov.io/gh/cosmos/ics23/tree/master/rust [rust-cov-badge]: https://codecov.io/github/cosmos/ics23/branch/master/graph/badge.svg?token=xlGriS907o&flag=rust -[ts-test-link]: https://github.com/cosmos/ics23/actions/workflows/typescript.yml -[ts-test-badge]: https://github.com/cosmos/ics23/actions/workflows/typescript.yml/badge.svg?branch=master -[ts-cov-link]: https://sonarcloud.io/project/configuration?id=ics23-js -[ts-cov-badge]: https://sonarcloud.io/api/project_badges/measure?project=ics23-js&metric=coverage [license-link]: https://github.com/cosmos/ics23/blob/master/LICENSE [license-badge]: https://img.shields.io/badge/license-Apache2.0-blue.svg @@ -56,9 +51,10 @@ live alongside the various merkle tree representations (eg. not in this reposito ### Supported client languages * [Go](./go) -* [TypeScript](./js) * [Rust](./rust) +The repository used to have a TypeScript implementation, but due to lack of maintenance and usage, it was removed in [#353](https://github.com/cosmos/ics23/pull/353). + Anyone interested in adding support for Solidity could pick up where [#58](https://github.com/cosmos/ics23/pull/58) left off. ### Compatibility table diff --git a/js/.eslintignore b/js/.eslintignore deleted file mode 100644 index 73013c0d..00000000 --- a/js/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -# Generated protobuf code -generated/ - -build/ -node_modules/ diff --git a/js/.eslintrc.js b/js/.eslintrc.js deleted file mode 100644 index 33e968f2..00000000 --- a/js/.eslintrc.js +++ /dev/null @@ -1,90 +0,0 @@ -module.exports = { - env: { - es6: true, - jasmine: true, - node: true, - worker: true, - }, - parser: "@typescript-eslint/parser", - parserOptions: { - // ecmaVersion: 2018, - project: "./tsconfig.json", - tsconfigRootDir: __dirname, - }, - plugins: ["@typescript-eslint", "prettier", "simple-import-sort", "import"], - extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "prettier", - "plugin:prettier/recommended", - "plugin:import/typescript", - ], - rules: { - curly: ["warn", "multi-line", "consistent"], - "no-bitwise": "warn", - "no-console": ["warn", { allow: ["error", "info", "table", "warn"] }], - "no-param-reassign": "warn", - "no-shadow": "off", // disabled in favour of @typescript-eslint/no-shadow, see https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-shadow.md - "no-unused-vars": "off", // disabled in favour of @typescript-eslint/no-unused-vars, see https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-unused-vars.md - "prefer-const": "warn", - radix: ["warn", "always"], - "spaced-comment": ["warn", "always", { line: { markers: ["/ (); - - for (const entry of proof.entries!) { - if (entry.exist) { - const centry = { exist: compressExist(entry.exist, lookup, registry) }; - centries.push(centry); - } else if (entry.nonexist) { - const non = entry.nonexist; - const centry = { - nonexist: { - key: non.key, - left: compressExist(non.left, lookup, registry), - right: compressExist(non.right, lookup, registry), - }, - }; - centries.push(centry); - } else { - throw new Error("Unexpected batch entry during compress"); - } - } - - return { - entries: centries, - lookupInners: lookup, - }; -} - -function compressExist( - exist: ics23.IExistenceProof | null | undefined, - lookup: ics23.IInnerOp[], - registry: Map, -): ics23.ICompressedExistenceProof | undefined { - if (!exist) { - return undefined; - } - - const path = exist.path!.map((inner) => { - const sig = ics23.InnerOp.encode(inner).finish(); - let idx = registry.get(sig); - if (idx === undefined) { - idx = lookup.length; - lookup.push(inner); - registry.set(sig, idx); - } - return idx; - }); - - return { - key: exist.key, - value: exist.value, - leaf: exist.leaf, - path, - }; -} - -function decompressBatch( - proof: ics23.ICompressedBatchProof, -): ics23.IBatchProof { - const lookup = proof.lookupInners!; - const entries = proof.entries!.map((comp) => { - if (comp.exist) { - return { exist: decompressExist(comp.exist, lookup) }; - } else if (comp.nonexist) { - const non = comp.nonexist; - return { - nonexist: { - key: non.key, - left: decompressExist(non.left, lookup), - right: decompressExist(non.right, lookup), - }, - }; - } else { - throw new Error("Unexpected batch entry during compress"); - } - }); - return { - entries, - }; -} - -function decompressExist( - exist: ics23.ICompressedExistenceProof | null | undefined, - lookup: readonly ics23.IInnerOp[], -): ics23.IExistenceProof | undefined { - if (!exist) { - return undefined; - } - const { key, value, leaf, path } = exist; - const newPath = (path || []).map((idx) => lookup[idx]); - return { key, value, leaf, path: newPath }; -} diff --git a/js/src/generated/codecimpl.d.ts b/js/src/generated/codecimpl.d.ts deleted file mode 100644 index 1186f691..00000000 --- a/js/src/generated/codecimpl.d.ts +++ /dev/null @@ -1,1646 +0,0 @@ -import * as $protobuf from "protobufjs"; -/** Namespace ics23. */ -export namespace ics23 { - /** HashOp enum. */ - enum HashOp { - NO_HASH = 0, - SHA256 = 1, - SHA512 = 2, - KECCAK256 = 3, - RIPEMD160 = 4, - BITCOIN = 5, - SHA512_256 = 6, - BLAKE2B_512 = 7, - BLAKE2S_256 = 8, - BLAKE3 = 9, - } - - /** - * LengthOp defines how to process the key and value of the LeafOp - * to include length information. After encoding the length with the given - * algorithm, the length will be prepended to the key and value bytes. - * (Each one with it's own encoded length) - */ - enum LengthOp { - NO_PREFIX = 0, - VAR_PROTO = 1, - VAR_RLP = 2, - FIXED32_BIG = 3, - FIXED32_LITTLE = 4, - FIXED64_BIG = 5, - FIXED64_LITTLE = 6, - REQUIRE_32_BYTES = 7, - REQUIRE_64_BYTES = 8, - } - - /** Properties of an ExistenceProof. */ - interface IExistenceProof { - /** ExistenceProof key */ - key?: Uint8Array | null; - - /** ExistenceProof value */ - value?: Uint8Array | null; - - /** ExistenceProof leaf */ - leaf?: ics23.ILeafOp | null; - - /** ExistenceProof path */ - path?: ics23.IInnerOp[] | null; - } - - /** - * ExistenceProof takes a key and a value and a set of steps to perform on it. - * The result of peforming all these steps will provide a "root hash", which can - * be compared to the value in a header. - * - * Since it is computationally infeasible to produce a hash collission for any of the used - * cryptographic hash functions, if someone can provide a series of operations to transform - * a given key and value into a root hash that matches some trusted root, these key and values - * must be in the referenced merkle tree. - * - * The only possible issue is maliablity in LeafOp, such as providing extra prefix data, - * which should be controlled by a spec. Eg. with lengthOp as NONE, - * prefix = FOO, key = BAR, value = CHOICE - * and - * prefix = F, key = OOBAR, value = CHOICE - * would produce the same value. - * - * With LengthOp this is tricker but not impossible. Which is why the "leafPrefixEqual" field - * in the ProofSpec is valuable to prevent this mutability. And why all trees should - * length-prefix the data before hashing it. - */ - class ExistenceProof implements IExistenceProof { - /** - * Constructs a new ExistenceProof. - * @param [properties] Properties to set - */ - constructor(properties?: ics23.IExistenceProof); - - /** ExistenceProof key. */ - public key: Uint8Array; - - /** ExistenceProof value. */ - public value: Uint8Array; - - /** ExistenceProof leaf. */ - public leaf?: ics23.ILeafOp | null; - - /** ExistenceProof path. */ - public path: ics23.IInnerOp[]; - - /** - * Creates a new ExistenceProof instance using the specified properties. - * @param [properties] Properties to set - * @returns ExistenceProof instance - */ - public static create( - properties?: ics23.IExistenceProof, - ): ics23.ExistenceProof; - - /** - * Encodes the specified ExistenceProof message. Does not implicitly {@link ics23.ExistenceProof.verify|verify} messages. - * @param message ExistenceProof message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: ics23.IExistenceProof, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Encodes the specified ExistenceProof message, length delimited. Does not implicitly {@link ics23.ExistenceProof.verify|verify} messages. - * @param message ExistenceProof message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: ics23.IExistenceProof, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Decodes an ExistenceProof message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number, - ): ics23.ExistenceProof; - - /** - * Decodes an ExistenceProof message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array, - ): ics23.ExistenceProof; - - /** - * Verifies an ExistenceProof message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates an ExistenceProof message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ExistenceProof - */ - public static fromObject(object: { - [k: string]: any; - }): ics23.ExistenceProof; - - /** - * Creates a plain object from an ExistenceProof message. Also converts values to other types if specified. - * @param message ExistenceProof - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: ics23.ExistenceProof, - options?: $protobuf.IConversionOptions, - ): { [k: string]: any }; - - /** - * Converts this ExistenceProof to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a NonExistenceProof. */ - interface INonExistenceProof { - /** NonExistenceProof key */ - key?: Uint8Array | null; - - /** NonExistenceProof left */ - left?: ics23.IExistenceProof | null; - - /** NonExistenceProof right */ - right?: ics23.IExistenceProof | null; - } - - /** Represents a NonExistenceProof. */ - class NonExistenceProof implements INonExistenceProof { - /** - * Constructs a new NonExistenceProof. - * @param [properties] Properties to set - */ - constructor(properties?: ics23.INonExistenceProof); - - /** NonExistenceProof key. */ - public key: Uint8Array; - - /** NonExistenceProof left. */ - public left?: ics23.IExistenceProof | null; - - /** NonExistenceProof right. */ - public right?: ics23.IExistenceProof | null; - - /** - * Creates a new NonExistenceProof instance using the specified properties. - * @param [properties] Properties to set - * @returns NonExistenceProof instance - */ - public static create( - properties?: ics23.INonExistenceProof, - ): ics23.NonExistenceProof; - - /** - * Encodes the specified NonExistenceProof message. Does not implicitly {@link ics23.NonExistenceProof.verify|verify} messages. - * @param message NonExistenceProof message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: ics23.INonExistenceProof, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Encodes the specified NonExistenceProof message, length delimited. Does not implicitly {@link ics23.NonExistenceProof.verify|verify} messages. - * @param message NonExistenceProof message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: ics23.INonExistenceProof, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Decodes a NonExistenceProof message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns NonExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number, - ): ics23.NonExistenceProof; - - /** - * Decodes a NonExistenceProof message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns NonExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array, - ): ics23.NonExistenceProof; - - /** - * Verifies a NonExistenceProof message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates a NonExistenceProof message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns NonExistenceProof - */ - public static fromObject(object: { - [k: string]: any; - }): ics23.NonExistenceProof; - - /** - * Creates a plain object from a NonExistenceProof message. Also converts values to other types if specified. - * @param message NonExistenceProof - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: ics23.NonExistenceProof, - options?: $protobuf.IConversionOptions, - ): { [k: string]: any }; - - /** - * Converts this NonExistenceProof to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a CommitmentProof. */ - interface ICommitmentProof { - /** CommitmentProof exist */ - exist?: ics23.IExistenceProof | null; - - /** CommitmentProof nonexist */ - nonexist?: ics23.INonExistenceProof | null; - - /** CommitmentProof batch */ - batch?: ics23.IBatchProof | null; - - /** CommitmentProof compressed */ - compressed?: ics23.ICompressedBatchProof | null; - } - - /** Represents a CommitmentProof. */ - class CommitmentProof implements ICommitmentProof { - /** - * Constructs a new CommitmentProof. - * @param [properties] Properties to set - */ - constructor(properties?: ics23.ICommitmentProof); - - /** CommitmentProof exist. */ - public exist?: ics23.IExistenceProof | null; - - /** CommitmentProof nonexist. */ - public nonexist?: ics23.INonExistenceProof | null; - - /** CommitmentProof batch. */ - public batch?: ics23.IBatchProof | null; - - /** CommitmentProof compressed. */ - public compressed?: ics23.ICompressedBatchProof | null; - - /** CommitmentProof proof. */ - public proof?: "exist" | "nonexist" | "batch" | "compressed"; - - /** - * Creates a new CommitmentProof instance using the specified properties. - * @param [properties] Properties to set - * @returns CommitmentProof instance - */ - public static create( - properties?: ics23.ICommitmentProof, - ): ics23.CommitmentProof; - - /** - * Encodes the specified CommitmentProof message. Does not implicitly {@link ics23.CommitmentProof.verify|verify} messages. - * @param message CommitmentProof message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: ics23.ICommitmentProof, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Encodes the specified CommitmentProof message, length delimited. Does not implicitly {@link ics23.CommitmentProof.verify|verify} messages. - * @param message CommitmentProof message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: ics23.ICommitmentProof, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Decodes a CommitmentProof message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CommitmentProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number, - ): ics23.CommitmentProof; - - /** - * Decodes a CommitmentProof message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CommitmentProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array, - ): ics23.CommitmentProof; - - /** - * Verifies a CommitmentProof message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates a CommitmentProof message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CommitmentProof - */ - public static fromObject(object: { - [k: string]: any; - }): ics23.CommitmentProof; - - /** - * Creates a plain object from a CommitmentProof message. Also converts values to other types if specified. - * @param message CommitmentProof - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: ics23.CommitmentProof, - options?: $protobuf.IConversionOptions, - ): { [k: string]: any }; - - /** - * Converts this CommitmentProof to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a LeafOp. */ - interface ILeafOp { - /** LeafOp hash */ - hash?: ics23.HashOp | null; - - /** LeafOp prehashKey */ - prehashKey?: ics23.HashOp | null; - - /** LeafOp prehashValue */ - prehashValue?: ics23.HashOp | null; - - /** LeafOp length */ - length?: ics23.LengthOp | null; - - /** LeafOp prefix */ - prefix?: Uint8Array | null; - } - - /** - * LeafOp represents the raw key-value data we wish to prove, and - * must be flexible to represent the internal transformation from - * the original key-value pairs into the basis hash, for many existing - * merkle trees. - * - * key and value are passed in. So that the signature of this operation is: - * leafOp(key, value) -> output - * - * To process this, first prehash the keys and values if needed (ANY means no hash in this case): - * hkey = prehashKey(key) - * hvalue = prehashValue(value) - * - * Then combine the bytes, and hash it - * output = hash(prefix || length(hkey) || hkey || length(hvalue) || hvalue) - */ - class LeafOp implements ILeafOp { - /** - * Constructs a new LeafOp. - * @param [properties] Properties to set - */ - constructor(properties?: ics23.ILeafOp); - - /** LeafOp hash. */ - public hash: ics23.HashOp; - - /** LeafOp prehashKey. */ - public prehashKey: ics23.HashOp; - - /** LeafOp prehashValue. */ - public prehashValue: ics23.HashOp; - - /** LeafOp length. */ - public length: ics23.LengthOp; - - /** LeafOp prefix. */ - public prefix: Uint8Array; - - /** - * Creates a new LeafOp instance using the specified properties. - * @param [properties] Properties to set - * @returns LeafOp instance - */ - public static create(properties?: ics23.ILeafOp): ics23.LeafOp; - - /** - * Encodes the specified LeafOp message. Does not implicitly {@link ics23.LeafOp.verify|verify} messages. - * @param message LeafOp message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: ics23.ILeafOp, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Encodes the specified LeafOp message, length delimited. Does not implicitly {@link ics23.LeafOp.verify|verify} messages. - * @param message LeafOp message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: ics23.ILeafOp, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Decodes a LeafOp message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns LeafOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number, - ): ics23.LeafOp; - - /** - * Decodes a LeafOp message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns LeafOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array, - ): ics23.LeafOp; - - /** - * Verifies a LeafOp message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates a LeafOp message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns LeafOp - */ - public static fromObject(object: { [k: string]: any }): ics23.LeafOp; - - /** - * Creates a plain object from a LeafOp message. Also converts values to other types if specified. - * @param message LeafOp - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: ics23.LeafOp, - options?: $protobuf.IConversionOptions, - ): { [k: string]: any }; - - /** - * Converts this LeafOp to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of an InnerOp. */ - interface IInnerOp { - /** InnerOp hash */ - hash?: ics23.HashOp | null; - - /** InnerOp prefix */ - prefix?: Uint8Array | null; - - /** InnerOp suffix */ - suffix?: Uint8Array | null; - } - - /** - * InnerOp represents a merkle-proof step that is not a leaf. - * It represents concatenating two children and hashing them to provide the next result. - * - * The result of the previous step is passed in, so the signature of this op is: - * innerOp(child) -> output - * - * The result of applying InnerOp should be: - * output = op.hash(op.prefix || child || op.suffix) - * - * where the || operator is concatenation of binary data, - * and child is the result of hashing all the tree below this step. - * - * Any special data, like prepending child with the length, or prepending the entire operation with - * some value to differentiate from leaf nodes, should be included in prefix and suffix. - * If either of prefix or suffix is empty, we just treat it as an empty string - */ - class InnerOp implements IInnerOp { - /** - * Constructs a new InnerOp. - * @param [properties] Properties to set - */ - constructor(properties?: ics23.IInnerOp); - - /** InnerOp hash. */ - public hash: ics23.HashOp; - - /** InnerOp prefix. */ - public prefix: Uint8Array; - - /** InnerOp suffix. */ - public suffix: Uint8Array; - - /** - * Creates a new InnerOp instance using the specified properties. - * @param [properties] Properties to set - * @returns InnerOp instance - */ - public static create(properties?: ics23.IInnerOp): ics23.InnerOp; - - /** - * Encodes the specified InnerOp message. Does not implicitly {@link ics23.InnerOp.verify|verify} messages. - * @param message InnerOp message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: ics23.IInnerOp, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Encodes the specified InnerOp message, length delimited. Does not implicitly {@link ics23.InnerOp.verify|verify} messages. - * @param message InnerOp message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: ics23.IInnerOp, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Decodes an InnerOp message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns InnerOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number, - ): ics23.InnerOp; - - /** - * Decodes an InnerOp message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns InnerOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array, - ): ics23.InnerOp; - - /** - * Verifies an InnerOp message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates an InnerOp message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns InnerOp - */ - public static fromObject(object: { [k: string]: any }): ics23.InnerOp; - - /** - * Creates a plain object from an InnerOp message. Also converts values to other types if specified. - * @param message InnerOp - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: ics23.InnerOp, - options?: $protobuf.IConversionOptions, - ): { [k: string]: any }; - - /** - * Converts this InnerOp to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a ProofSpec. */ - interface IProofSpec { - /** ProofSpec leafSpec */ - leafSpec?: ics23.ILeafOp | null; - - /** ProofSpec innerSpec */ - innerSpec?: ics23.IInnerSpec | null; - - /** ProofSpec maxDepth */ - maxDepth?: number | null; - - /** ProofSpec minDepth */ - minDepth?: number | null; - - /** ProofSpec prehashKeyBeforeComparison */ - prehashKeyBeforeComparison?: boolean | null; - } - - /** - * ProofSpec defines what the expected parameters are for a given proof type. - * This can be stored in the client and used to validate any incoming proofs. - * - * verify(ProofSpec, Proof) -> Proof | Error - * - * As demonstrated in tests, if we don't fix the algorithm used to calculate the - * LeafHash for a given tree, there are many possible key-value pairs that can - * generate a given hash (by interpretting the preimage differently). - * We need this for proper security, requires client knows a priori what - * tree format server uses. But not in code, rather a configuration object. - */ - class ProofSpec implements IProofSpec { - /** - * Constructs a new ProofSpec. - * @param [properties] Properties to set - */ - constructor(properties?: ics23.IProofSpec); - - /** ProofSpec leafSpec. */ - public leafSpec?: ics23.ILeafOp | null; - - /** ProofSpec innerSpec. */ - public innerSpec?: ics23.IInnerSpec | null; - - /** ProofSpec maxDepth. */ - public maxDepth: number; - - /** ProofSpec minDepth. */ - public minDepth: number; - - /** ProofSpec prehashKeyBeforeComparison. */ - public prehashKeyBeforeComparison: boolean; - - /** - * Creates a new ProofSpec instance using the specified properties. - * @param [properties] Properties to set - * @returns ProofSpec instance - */ - public static create(properties?: ics23.IProofSpec): ics23.ProofSpec; - - /** - * Encodes the specified ProofSpec message. Does not implicitly {@link ics23.ProofSpec.verify|verify} messages. - * @param message ProofSpec message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: ics23.IProofSpec, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Encodes the specified ProofSpec message, length delimited. Does not implicitly {@link ics23.ProofSpec.verify|verify} messages. - * @param message ProofSpec message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: ics23.IProofSpec, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Decodes a ProofSpec message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ProofSpec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number, - ): ics23.ProofSpec; - - /** - * Decodes a ProofSpec message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ProofSpec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array, - ): ics23.ProofSpec; - - /** - * Verifies a ProofSpec message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates a ProofSpec message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ProofSpec - */ - public static fromObject(object: { [k: string]: any }): ics23.ProofSpec; - - /** - * Creates a plain object from a ProofSpec message. Also converts values to other types if specified. - * @param message ProofSpec - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: ics23.ProofSpec, - options?: $protobuf.IConversionOptions, - ): { [k: string]: any }; - - /** - * Converts this ProofSpec to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of an InnerSpec. */ - interface IInnerSpec { - /** InnerSpec childOrder */ - childOrder?: number[] | null; - - /** InnerSpec childSize */ - childSize?: number | null; - - /** InnerSpec minPrefixLength */ - minPrefixLength?: number | null; - - /** InnerSpec maxPrefixLength */ - maxPrefixLength?: number | null; - - /** InnerSpec emptyChild */ - emptyChild?: Uint8Array | null; - - /** InnerSpec hash */ - hash?: ics23.HashOp | null; - } - - /** Represents an InnerSpec. */ - class InnerSpec implements IInnerSpec { - /** - * Constructs a new InnerSpec. - * @param [properties] Properties to set - */ - constructor(properties?: ics23.IInnerSpec); - - /** InnerSpec childOrder. */ - public childOrder: number[]; - - /** InnerSpec childSize. */ - public childSize: number; - - /** InnerSpec minPrefixLength. */ - public minPrefixLength: number; - - /** InnerSpec maxPrefixLength. */ - public maxPrefixLength: number; - - /** InnerSpec emptyChild. */ - public emptyChild: Uint8Array; - - /** InnerSpec hash. */ - public hash: ics23.HashOp; - - /** - * Creates a new InnerSpec instance using the specified properties. - * @param [properties] Properties to set - * @returns InnerSpec instance - */ - public static create(properties?: ics23.IInnerSpec): ics23.InnerSpec; - - /** - * Encodes the specified InnerSpec message. Does not implicitly {@link ics23.InnerSpec.verify|verify} messages. - * @param message InnerSpec message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: ics23.IInnerSpec, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Encodes the specified InnerSpec message, length delimited. Does not implicitly {@link ics23.InnerSpec.verify|verify} messages. - * @param message InnerSpec message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: ics23.IInnerSpec, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Decodes an InnerSpec message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns InnerSpec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number, - ): ics23.InnerSpec; - - /** - * Decodes an InnerSpec message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns InnerSpec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array, - ): ics23.InnerSpec; - - /** - * Verifies an InnerSpec message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates an InnerSpec message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns InnerSpec - */ - public static fromObject(object: { [k: string]: any }): ics23.InnerSpec; - - /** - * Creates a plain object from an InnerSpec message. Also converts values to other types if specified. - * @param message InnerSpec - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: ics23.InnerSpec, - options?: $protobuf.IConversionOptions, - ): { [k: string]: any }; - - /** - * Converts this InnerSpec to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a BatchProof. */ - interface IBatchProof { - /** BatchProof entries */ - entries?: ics23.IBatchEntry[] | null; - } - - /** Represents a BatchProof. */ - class BatchProof implements IBatchProof { - /** - * Constructs a new BatchProof. - * @param [properties] Properties to set - */ - constructor(properties?: ics23.IBatchProof); - - /** BatchProof entries. */ - public entries: ics23.IBatchEntry[]; - - /** - * Creates a new BatchProof instance using the specified properties. - * @param [properties] Properties to set - * @returns BatchProof instance - */ - public static create(properties?: ics23.IBatchProof): ics23.BatchProof; - - /** - * Encodes the specified BatchProof message. Does not implicitly {@link ics23.BatchProof.verify|verify} messages. - * @param message BatchProof message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: ics23.IBatchProof, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Encodes the specified BatchProof message, length delimited. Does not implicitly {@link ics23.BatchProof.verify|verify} messages. - * @param message BatchProof message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: ics23.IBatchProof, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Decodes a BatchProof message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns BatchProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number, - ): ics23.BatchProof; - - /** - * Decodes a BatchProof message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns BatchProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array, - ): ics23.BatchProof; - - /** - * Verifies a BatchProof message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates a BatchProof message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns BatchProof - */ - public static fromObject(object: { [k: string]: any }): ics23.BatchProof; - - /** - * Creates a plain object from a BatchProof message. Also converts values to other types if specified. - * @param message BatchProof - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: ics23.BatchProof, - options?: $protobuf.IConversionOptions, - ): { [k: string]: any }; - - /** - * Converts this BatchProof to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a BatchEntry. */ - interface IBatchEntry { - /** BatchEntry exist */ - exist?: ics23.IExistenceProof | null; - - /** BatchEntry nonexist */ - nonexist?: ics23.INonExistenceProof | null; - } - - /** Represents a BatchEntry. */ - class BatchEntry implements IBatchEntry { - /** - * Constructs a new BatchEntry. - * @param [properties] Properties to set - */ - constructor(properties?: ics23.IBatchEntry); - - /** BatchEntry exist. */ - public exist?: ics23.IExistenceProof | null; - - /** BatchEntry nonexist. */ - public nonexist?: ics23.INonExistenceProof | null; - - /** BatchEntry proof. */ - public proof?: "exist" | "nonexist"; - - /** - * Creates a new BatchEntry instance using the specified properties. - * @param [properties] Properties to set - * @returns BatchEntry instance - */ - public static create(properties?: ics23.IBatchEntry): ics23.BatchEntry; - - /** - * Encodes the specified BatchEntry message. Does not implicitly {@link ics23.BatchEntry.verify|verify} messages. - * @param message BatchEntry message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: ics23.IBatchEntry, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Encodes the specified BatchEntry message, length delimited. Does not implicitly {@link ics23.BatchEntry.verify|verify} messages. - * @param message BatchEntry message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: ics23.IBatchEntry, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Decodes a BatchEntry message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns BatchEntry - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number, - ): ics23.BatchEntry; - - /** - * Decodes a BatchEntry message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns BatchEntry - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array, - ): ics23.BatchEntry; - - /** - * Verifies a BatchEntry message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates a BatchEntry message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns BatchEntry - */ - public static fromObject(object: { [k: string]: any }): ics23.BatchEntry; - - /** - * Creates a plain object from a BatchEntry message. Also converts values to other types if specified. - * @param message BatchEntry - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: ics23.BatchEntry, - options?: $protobuf.IConversionOptions, - ): { [k: string]: any }; - - /** - * Converts this BatchEntry to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a CompressedBatchProof. */ - interface ICompressedBatchProof { - /** CompressedBatchProof entries */ - entries?: ics23.ICompressedBatchEntry[] | null; - - /** CompressedBatchProof lookupInners */ - lookupInners?: ics23.IInnerOp[] | null; - } - - /** Represents a CompressedBatchProof. */ - class CompressedBatchProof implements ICompressedBatchProof { - /** - * Constructs a new CompressedBatchProof. - * @param [properties] Properties to set - */ - constructor(properties?: ics23.ICompressedBatchProof); - - /** CompressedBatchProof entries. */ - public entries: ics23.ICompressedBatchEntry[]; - - /** CompressedBatchProof lookupInners. */ - public lookupInners: ics23.IInnerOp[]; - - /** - * Creates a new CompressedBatchProof instance using the specified properties. - * @param [properties] Properties to set - * @returns CompressedBatchProof instance - */ - public static create( - properties?: ics23.ICompressedBatchProof, - ): ics23.CompressedBatchProof; - - /** - * Encodes the specified CompressedBatchProof message. Does not implicitly {@link ics23.CompressedBatchProof.verify|verify} messages. - * @param message CompressedBatchProof message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: ics23.ICompressedBatchProof, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Encodes the specified CompressedBatchProof message, length delimited. Does not implicitly {@link ics23.CompressedBatchProof.verify|verify} messages. - * @param message CompressedBatchProof message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: ics23.ICompressedBatchProof, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Decodes a CompressedBatchProof message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CompressedBatchProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number, - ): ics23.CompressedBatchProof; - - /** - * Decodes a CompressedBatchProof message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CompressedBatchProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array, - ): ics23.CompressedBatchProof; - - /** - * Verifies a CompressedBatchProof message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates a CompressedBatchProof message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CompressedBatchProof - */ - public static fromObject(object: { - [k: string]: any; - }): ics23.CompressedBatchProof; - - /** - * Creates a plain object from a CompressedBatchProof message. Also converts values to other types if specified. - * @param message CompressedBatchProof - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: ics23.CompressedBatchProof, - options?: $protobuf.IConversionOptions, - ): { [k: string]: any }; - - /** - * Converts this CompressedBatchProof to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a CompressedBatchEntry. */ - interface ICompressedBatchEntry { - /** CompressedBatchEntry exist */ - exist?: ics23.ICompressedExistenceProof | null; - - /** CompressedBatchEntry nonexist */ - nonexist?: ics23.ICompressedNonExistenceProof | null; - } - - /** Represents a CompressedBatchEntry. */ - class CompressedBatchEntry implements ICompressedBatchEntry { - /** - * Constructs a new CompressedBatchEntry. - * @param [properties] Properties to set - */ - constructor(properties?: ics23.ICompressedBatchEntry); - - /** CompressedBatchEntry exist. */ - public exist?: ics23.ICompressedExistenceProof | null; - - /** CompressedBatchEntry nonexist. */ - public nonexist?: ics23.ICompressedNonExistenceProof | null; - - /** CompressedBatchEntry proof. */ - public proof?: "exist" | "nonexist"; - - /** - * Creates a new CompressedBatchEntry instance using the specified properties. - * @param [properties] Properties to set - * @returns CompressedBatchEntry instance - */ - public static create( - properties?: ics23.ICompressedBatchEntry, - ): ics23.CompressedBatchEntry; - - /** - * Encodes the specified CompressedBatchEntry message. Does not implicitly {@link ics23.CompressedBatchEntry.verify|verify} messages. - * @param message CompressedBatchEntry message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: ics23.ICompressedBatchEntry, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Encodes the specified CompressedBatchEntry message, length delimited. Does not implicitly {@link ics23.CompressedBatchEntry.verify|verify} messages. - * @param message CompressedBatchEntry message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: ics23.ICompressedBatchEntry, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Decodes a CompressedBatchEntry message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CompressedBatchEntry - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number, - ): ics23.CompressedBatchEntry; - - /** - * Decodes a CompressedBatchEntry message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CompressedBatchEntry - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array, - ): ics23.CompressedBatchEntry; - - /** - * Verifies a CompressedBatchEntry message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates a CompressedBatchEntry message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CompressedBatchEntry - */ - public static fromObject(object: { - [k: string]: any; - }): ics23.CompressedBatchEntry; - - /** - * Creates a plain object from a CompressedBatchEntry message. Also converts values to other types if specified. - * @param message CompressedBatchEntry - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: ics23.CompressedBatchEntry, - options?: $protobuf.IConversionOptions, - ): { [k: string]: any }; - - /** - * Converts this CompressedBatchEntry to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a CompressedExistenceProof. */ - interface ICompressedExistenceProof { - /** CompressedExistenceProof key */ - key?: Uint8Array | null; - - /** CompressedExistenceProof value */ - value?: Uint8Array | null; - - /** CompressedExistenceProof leaf */ - leaf?: ics23.ILeafOp | null; - - /** CompressedExistenceProof path */ - path?: number[] | null; - } - - /** Represents a CompressedExistenceProof. */ - class CompressedExistenceProof implements ICompressedExistenceProof { - /** - * Constructs a new CompressedExistenceProof. - * @param [properties] Properties to set - */ - constructor(properties?: ics23.ICompressedExistenceProof); - - /** CompressedExistenceProof key. */ - public key: Uint8Array; - - /** CompressedExistenceProof value. */ - public value: Uint8Array; - - /** CompressedExistenceProof leaf. */ - public leaf?: ics23.ILeafOp | null; - - /** CompressedExistenceProof path. */ - public path: number[]; - - /** - * Creates a new CompressedExistenceProof instance using the specified properties. - * @param [properties] Properties to set - * @returns CompressedExistenceProof instance - */ - public static create( - properties?: ics23.ICompressedExistenceProof, - ): ics23.CompressedExistenceProof; - - /** - * Encodes the specified CompressedExistenceProof message. Does not implicitly {@link ics23.CompressedExistenceProof.verify|verify} messages. - * @param message CompressedExistenceProof message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: ics23.ICompressedExistenceProof, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Encodes the specified CompressedExistenceProof message, length delimited. Does not implicitly {@link ics23.CompressedExistenceProof.verify|verify} messages. - * @param message CompressedExistenceProof message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: ics23.ICompressedExistenceProof, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Decodes a CompressedExistenceProof message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CompressedExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number, - ): ics23.CompressedExistenceProof; - - /** - * Decodes a CompressedExistenceProof message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CompressedExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array, - ): ics23.CompressedExistenceProof; - - /** - * Verifies a CompressedExistenceProof message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates a CompressedExistenceProof message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CompressedExistenceProof - */ - public static fromObject(object: { - [k: string]: any; - }): ics23.CompressedExistenceProof; - - /** - * Creates a plain object from a CompressedExistenceProof message. Also converts values to other types if specified. - * @param message CompressedExistenceProof - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: ics23.CompressedExistenceProof, - options?: $protobuf.IConversionOptions, - ): { [k: string]: any }; - - /** - * Converts this CompressedExistenceProof to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a CompressedNonExistenceProof. */ - interface ICompressedNonExistenceProof { - /** CompressedNonExistenceProof key */ - key?: Uint8Array | null; - - /** CompressedNonExistenceProof left */ - left?: ics23.ICompressedExistenceProof | null; - - /** CompressedNonExistenceProof right */ - right?: ics23.ICompressedExistenceProof | null; - } - - /** Represents a CompressedNonExistenceProof. */ - class CompressedNonExistenceProof implements ICompressedNonExistenceProof { - /** - * Constructs a new CompressedNonExistenceProof. - * @param [properties] Properties to set - */ - constructor(properties?: ics23.ICompressedNonExistenceProof); - - /** CompressedNonExistenceProof key. */ - public key: Uint8Array; - - /** CompressedNonExistenceProof left. */ - public left?: ics23.ICompressedExistenceProof | null; - - /** CompressedNonExistenceProof right. */ - public right?: ics23.ICompressedExistenceProof | null; - - /** - * Creates a new CompressedNonExistenceProof instance using the specified properties. - * @param [properties] Properties to set - * @returns CompressedNonExistenceProof instance - */ - public static create( - properties?: ics23.ICompressedNonExistenceProof, - ): ics23.CompressedNonExistenceProof; - - /** - * Encodes the specified CompressedNonExistenceProof message. Does not implicitly {@link ics23.CompressedNonExistenceProof.verify|verify} messages. - * @param message CompressedNonExistenceProof message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: ics23.ICompressedNonExistenceProof, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Encodes the specified CompressedNonExistenceProof message, length delimited. Does not implicitly {@link ics23.CompressedNonExistenceProof.verify|verify} messages. - * @param message CompressedNonExistenceProof message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: ics23.ICompressedNonExistenceProof, - writer?: $protobuf.Writer, - ): $protobuf.Writer; - - /** - * Decodes a CompressedNonExistenceProof message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns CompressedNonExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number, - ): ics23.CompressedNonExistenceProof; - - /** - * Decodes a CompressedNonExistenceProof message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns CompressedNonExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array, - ): ics23.CompressedNonExistenceProof; - - /** - * Verifies a CompressedNonExistenceProof message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates a CompressedNonExistenceProof message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns CompressedNonExistenceProof - */ - public static fromObject(object: { - [k: string]: any; - }): ics23.CompressedNonExistenceProof; - - /** - * Creates a plain object from a CompressedNonExistenceProof message. Also converts values to other types if specified. - * @param message CompressedNonExistenceProof - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: ics23.CompressedNonExistenceProof, - options?: $protobuf.IConversionOptions, - ): { [k: string]: any }; - - /** - * Converts this CompressedNonExistenceProof to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } -} diff --git a/js/src/generated/codecimpl.js b/js/src/generated/codecimpl.js deleted file mode 100644 index 65677752..00000000 --- a/js/src/generated/codecimpl.js +++ /dev/null @@ -1,3896 +0,0 @@ -/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/ -"use strict"; - -var $protobuf = require("protobufjs/minimal"); - -// Common aliases -var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util; - -// Exported root namespace -var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {}); - -$root.ics23 = (function() { - - /** - * Namespace ics23. - * @exports ics23 - * @namespace - */ - var ics23 = {}; - - /** - * HashOp enum. - * @name ics23.HashOp - * @enum {number} - * @property {number} NO_HASH=0 NO_HASH value - * @property {number} SHA256=1 SHA256 value - * @property {number} SHA512=2 SHA512 value - * @property {number} KECCAK256=3 KECCAK256 value - * @property {number} RIPEMD160=4 RIPEMD160 value - * @property {number} BITCOIN=5 BITCOIN value - * @property {number} SHA512_256=6 SHA512_256 value - * @property {number} BLAKE2B_512=7 BLAKE2B value - * @property {number} BLAKE2S_256=8 BLAKE2S value - * @property {number} BLAKE3=9 BLAKE3 value - */ - ics23.HashOp = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "NO_HASH"] = 0; - values[valuesById[1] = "SHA256"] = 1; - values[valuesById[2] = "SHA512"] = 2; - values[valuesById[3] = "KECCAK256"] = 3; - values[valuesById[4] = "RIPEMD160"] = 4; - values[valuesById[5] = "BITCOIN"] = 5; - values[valuesById[6] = "SHA512_256"] = 6; - values[valuesById[7] = "BLAKE2B_512"] = 7; - values[valuesById[8] = "BLAKE2S_256"] = 8; - values[valuesById[9] = "BLAKE3"] = 9; - return values; - })(); - - /** - * LengthOp defines how to process the key and value of the LeafOp - * to include length information. After encoding the length with the given - * algorithm, the length will be prepended to the key and value bytes. - * (Each one with it's own encoded length) - * @name ics23.LengthOp - * @enum {number} - * @property {number} NO_PREFIX=0 NO_PREFIX value - * @property {number} VAR_PROTO=1 VAR_PROTO value - * @property {number} VAR_RLP=2 VAR_RLP value - * @property {number} FIXED32_BIG=3 FIXED32_BIG value - * @property {number} FIXED32_LITTLE=4 FIXED32_LITTLE value - * @property {number} FIXED64_BIG=5 FIXED64_BIG value - * @property {number} FIXED64_LITTLE=6 FIXED64_LITTLE value - * @property {number} REQUIRE_32_BYTES=7 REQUIRE_32_BYTES value - * @property {number} REQUIRE_64_BYTES=8 REQUIRE_64_BYTES value - */ - ics23.LengthOp = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "NO_PREFIX"] = 0; - values[valuesById[1] = "VAR_PROTO"] = 1; - values[valuesById[2] = "VAR_RLP"] = 2; - values[valuesById[3] = "FIXED32_BIG"] = 3; - values[valuesById[4] = "FIXED32_LITTLE"] = 4; - values[valuesById[5] = "FIXED64_BIG"] = 5; - values[valuesById[6] = "FIXED64_LITTLE"] = 6; - values[valuesById[7] = "REQUIRE_32_BYTES"] = 7; - values[valuesById[8] = "REQUIRE_64_BYTES"] = 8; - return values; - })(); - - ics23.ExistenceProof = (function() { - - /** - * Properties of an ExistenceProof. - * @memberof ics23 - * @interface IExistenceProof - * @property {Uint8Array|null} [key] ExistenceProof key - * @property {Uint8Array|null} [value] ExistenceProof value - * @property {ics23.ILeafOp|null} [leaf] ExistenceProof leaf - * @property {Array.|null} [path] ExistenceProof path - */ - - /** - * Constructs a new ExistenceProof. - * @memberof ics23 - * @classdesc ExistenceProof takes a key and a value and a set of steps to perform on it. - * The result of peforming all these steps will provide a "root hash", which can - * be compared to the value in a header. - * - * Since it is computationally infeasible to produce a hash collission for any of the used - * cryptographic hash functions, if someone can provide a series of operations to transform - * a given key and value into a root hash that matches some trusted root, these key and values - * must be in the referenced merkle tree. - * - * The only possible issue is maliablity in LeafOp, such as providing extra prefix data, - * which should be controlled by a spec. Eg. with lengthOp as NONE, - * prefix = FOO, key = BAR, value = CHOICE - * and - * prefix = F, key = OOBAR, value = CHOICE - * would produce the same value. - * - * With LengthOp this is tricker but not impossible. Which is why the "leafPrefixEqual" field - * in the ProofSpec is valuable to prevent this mutability. And why all trees should - * length-prefix the data before hashing it. - * @implements IExistenceProof - * @constructor - * @param {ics23.IExistenceProof=} [properties] Properties to set - */ - function ExistenceProof(properties) { - this.path = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * ExistenceProof key. - * @member {Uint8Array} key - * @memberof ics23.ExistenceProof - * @instance - */ - ExistenceProof.prototype.key = $util.newBuffer([]); - - /** - * ExistenceProof value. - * @member {Uint8Array} value - * @memberof ics23.ExistenceProof - * @instance - */ - ExistenceProof.prototype.value = $util.newBuffer([]); - - /** - * ExistenceProof leaf. - * @member {ics23.ILeafOp|null|undefined} leaf - * @memberof ics23.ExistenceProof - * @instance - */ - ExistenceProof.prototype.leaf = null; - - /** - * ExistenceProof path. - * @member {Array.} path - * @memberof ics23.ExistenceProof - * @instance - */ - ExistenceProof.prototype.path = $util.emptyArray; - - /** - * Creates a new ExistenceProof instance using the specified properties. - * @function create - * @memberof ics23.ExistenceProof - * @static - * @param {ics23.IExistenceProof=} [properties] Properties to set - * @returns {ics23.ExistenceProof} ExistenceProof instance - */ - ExistenceProof.create = function create(properties) { - return new ExistenceProof(properties); - }; - - /** - * Encodes the specified ExistenceProof message. Does not implicitly {@link ics23.ExistenceProof.verify|verify} messages. - * @function encode - * @memberof ics23.ExistenceProof - * @static - * @param {ics23.IExistenceProof} message ExistenceProof message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ExistenceProof.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.key != null && Object.hasOwnProperty.call(message, "key")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.key); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.value); - if (message.leaf != null && Object.hasOwnProperty.call(message, "leaf")) - $root.ics23.LeafOp.encode(message.leaf, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.path != null && message.path.length) - for (var i = 0; i < message.path.length; ++i) - $root.ics23.InnerOp.encode(message.path[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified ExistenceProof message, length delimited. Does not implicitly {@link ics23.ExistenceProof.verify|verify} messages. - * @function encodeDelimited - * @memberof ics23.ExistenceProof - * @static - * @param {ics23.IExistenceProof} message ExistenceProof message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ExistenceProof.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes an ExistenceProof message from the specified reader or buffer. - * @function decode - * @memberof ics23.ExistenceProof - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {ics23.ExistenceProof} ExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ExistenceProof.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ics23.ExistenceProof(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.key = reader.bytes(); - break; - case 2: - message.value = reader.bytes(); - break; - case 3: - message.leaf = $root.ics23.LeafOp.decode(reader, reader.uint32()); - break; - case 4: - if (!(message.path && message.path.length)) - message.path = []; - message.path.push($root.ics23.InnerOp.decode(reader, reader.uint32())); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes an ExistenceProof message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof ics23.ExistenceProof - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {ics23.ExistenceProof} ExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ExistenceProof.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies an ExistenceProof message. - * @function verify - * @memberof ics23.ExistenceProof - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ExistenceProof.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.key != null && message.hasOwnProperty("key")) - if (!(message.key && typeof message.key.length === "number" || $util.isString(message.key))) - return "key: buffer expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value))) - return "value: buffer expected"; - if (message.leaf != null && message.hasOwnProperty("leaf")) { - var error = $root.ics23.LeafOp.verify(message.leaf); - if (error) - return "leaf." + error; - } - if (message.path != null && message.hasOwnProperty("path")) { - if (!Array.isArray(message.path)) - return "path: array expected"; - for (var i = 0; i < message.path.length; ++i) { - var error = $root.ics23.InnerOp.verify(message.path[i]); - if (error) - return "path." + error; - } - } - return null; - }; - - /** - * Creates an ExistenceProof message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof ics23.ExistenceProof - * @static - * @param {Object.} object Plain object - * @returns {ics23.ExistenceProof} ExistenceProof - */ - ExistenceProof.fromObject = function fromObject(object) { - if (object instanceof $root.ics23.ExistenceProof) - return object; - var message = new $root.ics23.ExistenceProof(); - if (object.key != null) - if (typeof object.key === "string") - $util.base64.decode(object.key, message.key = $util.newBuffer($util.base64.length(object.key)), 0); - else if (object.key.length) - message.key = object.key; - if (object.value != null) - if (typeof object.value === "string") - $util.base64.decode(object.value, message.value = $util.newBuffer($util.base64.length(object.value)), 0); - else if (object.value.length) - message.value = object.value; - if (object.leaf != null) { - if (typeof object.leaf !== "object") - throw TypeError(".ics23.ExistenceProof.leaf: object expected"); - message.leaf = $root.ics23.LeafOp.fromObject(object.leaf); - } - if (object.path) { - if (!Array.isArray(object.path)) - throw TypeError(".ics23.ExistenceProof.path: array expected"); - message.path = []; - for (var i = 0; i < object.path.length; ++i) { - if (typeof object.path[i] !== "object") - throw TypeError(".ics23.ExistenceProof.path: object expected"); - message.path[i] = $root.ics23.InnerOp.fromObject(object.path[i]); - } - } - return message; - }; - - /** - * Creates a plain object from an ExistenceProof message. Also converts values to other types if specified. - * @function toObject - * @memberof ics23.ExistenceProof - * @static - * @param {ics23.ExistenceProof} message ExistenceProof - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ExistenceProof.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.path = []; - if (options.defaults) { - if (options.bytes === String) - object.key = ""; - else { - object.key = []; - if (options.bytes !== Array) - object.key = $util.newBuffer(object.key); - } - if (options.bytes === String) - object.value = ""; - else { - object.value = []; - if (options.bytes !== Array) - object.value = $util.newBuffer(object.value); - } - object.leaf = null; - } - if (message.key != null && message.hasOwnProperty("key")) - object.key = options.bytes === String ? $util.base64.encode(message.key, 0, message.key.length) : options.bytes === Array ? Array.prototype.slice.call(message.key) : message.key; - if (message.value != null && message.hasOwnProperty("value")) - object.value = options.bytes === String ? $util.base64.encode(message.value, 0, message.value.length) : options.bytes === Array ? Array.prototype.slice.call(message.value) : message.value; - if (message.leaf != null && message.hasOwnProperty("leaf")) - object.leaf = $root.ics23.LeafOp.toObject(message.leaf, options); - if (message.path && message.path.length) { - object.path = []; - for (var j = 0; j < message.path.length; ++j) - object.path[j] = $root.ics23.InnerOp.toObject(message.path[j], options); - } - return object; - }; - - /** - * Converts this ExistenceProof to JSON. - * @function toJSON - * @memberof ics23.ExistenceProof - * @instance - * @returns {Object.} JSON object - */ - ExistenceProof.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return ExistenceProof; - })(); - - ics23.NonExistenceProof = (function() { - - /** - * Properties of a NonExistenceProof. - * @memberof ics23 - * @interface INonExistenceProof - * @property {Uint8Array|null} [key] NonExistenceProof key - * @property {ics23.IExistenceProof|null} [left] NonExistenceProof left - * @property {ics23.IExistenceProof|null} [right] NonExistenceProof right - */ - - /** - * Constructs a new NonExistenceProof. - * @memberof ics23 - * @classdesc Represents a NonExistenceProof. - * @implements INonExistenceProof - * @constructor - * @param {ics23.INonExistenceProof=} [properties] Properties to set - */ - function NonExistenceProof(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * NonExistenceProof key. - * @member {Uint8Array} key - * @memberof ics23.NonExistenceProof - * @instance - */ - NonExistenceProof.prototype.key = $util.newBuffer([]); - - /** - * NonExistenceProof left. - * @member {ics23.IExistenceProof|null|undefined} left - * @memberof ics23.NonExistenceProof - * @instance - */ - NonExistenceProof.prototype.left = null; - - /** - * NonExistenceProof right. - * @member {ics23.IExistenceProof|null|undefined} right - * @memberof ics23.NonExistenceProof - * @instance - */ - NonExistenceProof.prototype.right = null; - - /** - * Creates a new NonExistenceProof instance using the specified properties. - * @function create - * @memberof ics23.NonExistenceProof - * @static - * @param {ics23.INonExistenceProof=} [properties] Properties to set - * @returns {ics23.NonExistenceProof} NonExistenceProof instance - */ - NonExistenceProof.create = function create(properties) { - return new NonExistenceProof(properties); - }; - - /** - * Encodes the specified NonExistenceProof message. Does not implicitly {@link ics23.NonExistenceProof.verify|verify} messages. - * @function encode - * @memberof ics23.NonExistenceProof - * @static - * @param {ics23.INonExistenceProof} message NonExistenceProof message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - NonExistenceProof.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.key != null && Object.hasOwnProperty.call(message, "key")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.key); - if (message.left != null && Object.hasOwnProperty.call(message, "left")) - $root.ics23.ExistenceProof.encode(message.left, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.right != null && Object.hasOwnProperty.call(message, "right")) - $root.ics23.ExistenceProof.encode(message.right, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified NonExistenceProof message, length delimited. Does not implicitly {@link ics23.NonExistenceProof.verify|verify} messages. - * @function encodeDelimited - * @memberof ics23.NonExistenceProof - * @static - * @param {ics23.INonExistenceProof} message NonExistenceProof message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - NonExistenceProof.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a NonExistenceProof message from the specified reader or buffer. - * @function decode - * @memberof ics23.NonExistenceProof - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {ics23.NonExistenceProof} NonExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - NonExistenceProof.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ics23.NonExistenceProof(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.key = reader.bytes(); - break; - case 2: - message.left = $root.ics23.ExistenceProof.decode(reader, reader.uint32()); - break; - case 3: - message.right = $root.ics23.ExistenceProof.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a NonExistenceProof message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof ics23.NonExistenceProof - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {ics23.NonExistenceProof} NonExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - NonExistenceProof.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a NonExistenceProof message. - * @function verify - * @memberof ics23.NonExistenceProof - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - NonExistenceProof.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.key != null && message.hasOwnProperty("key")) - if (!(message.key && typeof message.key.length === "number" || $util.isString(message.key))) - return "key: buffer expected"; - if (message.left != null && message.hasOwnProperty("left")) { - var error = $root.ics23.ExistenceProof.verify(message.left); - if (error) - return "left." + error; - } - if (message.right != null && message.hasOwnProperty("right")) { - var error = $root.ics23.ExistenceProof.verify(message.right); - if (error) - return "right." + error; - } - return null; - }; - - /** - * Creates a NonExistenceProof message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof ics23.NonExistenceProof - * @static - * @param {Object.} object Plain object - * @returns {ics23.NonExistenceProof} NonExistenceProof - */ - NonExistenceProof.fromObject = function fromObject(object) { - if (object instanceof $root.ics23.NonExistenceProof) - return object; - var message = new $root.ics23.NonExistenceProof(); - if (object.key != null) - if (typeof object.key === "string") - $util.base64.decode(object.key, message.key = $util.newBuffer($util.base64.length(object.key)), 0); - else if (object.key.length) - message.key = object.key; - if (object.left != null) { - if (typeof object.left !== "object") - throw TypeError(".ics23.NonExistenceProof.left: object expected"); - message.left = $root.ics23.ExistenceProof.fromObject(object.left); - } - if (object.right != null) { - if (typeof object.right !== "object") - throw TypeError(".ics23.NonExistenceProof.right: object expected"); - message.right = $root.ics23.ExistenceProof.fromObject(object.right); - } - return message; - }; - - /** - * Creates a plain object from a NonExistenceProof message. Also converts values to other types if specified. - * @function toObject - * @memberof ics23.NonExistenceProof - * @static - * @param {ics23.NonExistenceProof} message NonExistenceProof - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - NonExistenceProof.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - if (options.bytes === String) - object.key = ""; - else { - object.key = []; - if (options.bytes !== Array) - object.key = $util.newBuffer(object.key); - } - object.left = null; - object.right = null; - } - if (message.key != null && message.hasOwnProperty("key")) - object.key = options.bytes === String ? $util.base64.encode(message.key, 0, message.key.length) : options.bytes === Array ? Array.prototype.slice.call(message.key) : message.key; - if (message.left != null && message.hasOwnProperty("left")) - object.left = $root.ics23.ExistenceProof.toObject(message.left, options); - if (message.right != null && message.hasOwnProperty("right")) - object.right = $root.ics23.ExistenceProof.toObject(message.right, options); - return object; - }; - - /** - * Converts this NonExistenceProof to JSON. - * @function toJSON - * @memberof ics23.NonExistenceProof - * @instance - * @returns {Object.} JSON object - */ - NonExistenceProof.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return NonExistenceProof; - })(); - - ics23.CommitmentProof = (function() { - - /** - * Properties of a CommitmentProof. - * @memberof ics23 - * @interface ICommitmentProof - * @property {ics23.IExistenceProof|null} [exist] CommitmentProof exist - * @property {ics23.INonExistenceProof|null} [nonexist] CommitmentProof nonexist - * @property {ics23.IBatchProof|null} [batch] CommitmentProof batch - * @property {ics23.ICompressedBatchProof|null} [compressed] CommitmentProof compressed - */ - - /** - * Constructs a new CommitmentProof. - * @memberof ics23 - * @classdesc Represents a CommitmentProof. - * @implements ICommitmentProof - * @constructor - * @param {ics23.ICommitmentProof=} [properties] Properties to set - */ - function CommitmentProof(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CommitmentProof exist. - * @member {ics23.IExistenceProof|null|undefined} exist - * @memberof ics23.CommitmentProof - * @instance - */ - CommitmentProof.prototype.exist = null; - - /** - * CommitmentProof nonexist. - * @member {ics23.INonExistenceProof|null|undefined} nonexist - * @memberof ics23.CommitmentProof - * @instance - */ - CommitmentProof.prototype.nonexist = null; - - /** - * CommitmentProof batch. - * @member {ics23.IBatchProof|null|undefined} batch - * @memberof ics23.CommitmentProof - * @instance - */ - CommitmentProof.prototype.batch = null; - - /** - * CommitmentProof compressed. - * @member {ics23.ICompressedBatchProof|null|undefined} compressed - * @memberof ics23.CommitmentProof - * @instance - */ - CommitmentProof.prototype.compressed = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; - - /** - * CommitmentProof proof. - * @member {"exist"|"nonexist"|"batch"|"compressed"|undefined} proof - * @memberof ics23.CommitmentProof - * @instance - */ - Object.defineProperty(CommitmentProof.prototype, "proof", { - get: $util.oneOfGetter($oneOfFields = ["exist", "nonexist", "batch", "compressed"]), - set: $util.oneOfSetter($oneOfFields) - }); - - /** - * Creates a new CommitmentProof instance using the specified properties. - * @function create - * @memberof ics23.CommitmentProof - * @static - * @param {ics23.ICommitmentProof=} [properties] Properties to set - * @returns {ics23.CommitmentProof} CommitmentProof instance - */ - CommitmentProof.create = function create(properties) { - return new CommitmentProof(properties); - }; - - /** - * Encodes the specified CommitmentProof message. Does not implicitly {@link ics23.CommitmentProof.verify|verify} messages. - * @function encode - * @memberof ics23.CommitmentProof - * @static - * @param {ics23.ICommitmentProof} message CommitmentProof message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CommitmentProof.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.exist != null && Object.hasOwnProperty.call(message, "exist")) - $root.ics23.ExistenceProof.encode(message.exist, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.nonexist != null && Object.hasOwnProperty.call(message, "nonexist")) - $root.ics23.NonExistenceProof.encode(message.nonexist, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.batch != null && Object.hasOwnProperty.call(message, "batch")) - $root.ics23.BatchProof.encode(message.batch, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.compressed != null && Object.hasOwnProperty.call(message, "compressed")) - $root.ics23.CompressedBatchProof.encode(message.compressed, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified CommitmentProof message, length delimited. Does not implicitly {@link ics23.CommitmentProof.verify|verify} messages. - * @function encodeDelimited - * @memberof ics23.CommitmentProof - * @static - * @param {ics23.ICommitmentProof} message CommitmentProof message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CommitmentProof.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CommitmentProof message from the specified reader or buffer. - * @function decode - * @memberof ics23.CommitmentProof - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {ics23.CommitmentProof} CommitmentProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CommitmentProof.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ics23.CommitmentProof(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.exist = $root.ics23.ExistenceProof.decode(reader, reader.uint32()); - break; - case 2: - message.nonexist = $root.ics23.NonExistenceProof.decode(reader, reader.uint32()); - break; - case 3: - message.batch = $root.ics23.BatchProof.decode(reader, reader.uint32()); - break; - case 4: - message.compressed = $root.ics23.CompressedBatchProof.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CommitmentProof message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof ics23.CommitmentProof - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {ics23.CommitmentProof} CommitmentProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CommitmentProof.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CommitmentProof message. - * @function verify - * @memberof ics23.CommitmentProof - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CommitmentProof.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - var properties = {}; - if (message.exist != null && message.hasOwnProperty("exist")) { - properties.proof = 1; - { - var error = $root.ics23.ExistenceProof.verify(message.exist); - if (error) - return "exist." + error; - } - } - if (message.nonexist != null && message.hasOwnProperty("nonexist")) { - if (properties.proof === 1) - return "proof: multiple values"; - properties.proof = 1; - { - var error = $root.ics23.NonExistenceProof.verify(message.nonexist); - if (error) - return "nonexist." + error; - } - } - if (message.batch != null && message.hasOwnProperty("batch")) { - if (properties.proof === 1) - return "proof: multiple values"; - properties.proof = 1; - { - var error = $root.ics23.BatchProof.verify(message.batch); - if (error) - return "batch." + error; - } - } - if (message.compressed != null && message.hasOwnProperty("compressed")) { - if (properties.proof === 1) - return "proof: multiple values"; - properties.proof = 1; - { - var error = $root.ics23.CompressedBatchProof.verify(message.compressed); - if (error) - return "compressed." + error; - } - } - return null; - }; - - /** - * Creates a CommitmentProof message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof ics23.CommitmentProof - * @static - * @param {Object.} object Plain object - * @returns {ics23.CommitmentProof} CommitmentProof - */ - CommitmentProof.fromObject = function fromObject(object) { - if (object instanceof $root.ics23.CommitmentProof) - return object; - var message = new $root.ics23.CommitmentProof(); - if (object.exist != null) { - if (typeof object.exist !== "object") - throw TypeError(".ics23.CommitmentProof.exist: object expected"); - message.exist = $root.ics23.ExistenceProof.fromObject(object.exist); - } - if (object.nonexist != null) { - if (typeof object.nonexist !== "object") - throw TypeError(".ics23.CommitmentProof.nonexist: object expected"); - message.nonexist = $root.ics23.NonExistenceProof.fromObject(object.nonexist); - } - if (object.batch != null) { - if (typeof object.batch !== "object") - throw TypeError(".ics23.CommitmentProof.batch: object expected"); - message.batch = $root.ics23.BatchProof.fromObject(object.batch); - } - if (object.compressed != null) { - if (typeof object.compressed !== "object") - throw TypeError(".ics23.CommitmentProof.compressed: object expected"); - message.compressed = $root.ics23.CompressedBatchProof.fromObject(object.compressed); - } - return message; - }; - - /** - * Creates a plain object from a CommitmentProof message. Also converts values to other types if specified. - * @function toObject - * @memberof ics23.CommitmentProof - * @static - * @param {ics23.CommitmentProof} message CommitmentProof - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CommitmentProof.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (message.exist != null && message.hasOwnProperty("exist")) { - object.exist = $root.ics23.ExistenceProof.toObject(message.exist, options); - if (options.oneofs) - object.proof = "exist"; - } - if (message.nonexist != null && message.hasOwnProperty("nonexist")) { - object.nonexist = $root.ics23.NonExistenceProof.toObject(message.nonexist, options); - if (options.oneofs) - object.proof = "nonexist"; - } - if (message.batch != null && message.hasOwnProperty("batch")) { - object.batch = $root.ics23.BatchProof.toObject(message.batch, options); - if (options.oneofs) - object.proof = "batch"; - } - if (message.compressed != null && message.hasOwnProperty("compressed")) { - object.compressed = $root.ics23.CompressedBatchProof.toObject(message.compressed, options); - if (options.oneofs) - object.proof = "compressed"; - } - return object; - }; - - /** - * Converts this CommitmentProof to JSON. - * @function toJSON - * @memberof ics23.CommitmentProof - * @instance - * @returns {Object.} JSON object - */ - CommitmentProof.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return CommitmentProof; - })(); - - ics23.LeafOp = (function() { - - /** - * Properties of a LeafOp. - * @memberof ics23 - * @interface ILeafOp - * @property {ics23.HashOp|null} [hash] LeafOp hash - * @property {ics23.HashOp|null} [prehashKey] LeafOp prehashKey - * @property {ics23.HashOp|null} [prehashValue] LeafOp prehashValue - * @property {ics23.LengthOp|null} [length] LeafOp length - * @property {Uint8Array|null} [prefix] LeafOp prefix - */ - - /** - * Constructs a new LeafOp. - * @memberof ics23 - * @classdesc LeafOp represents the raw key-value data we wish to prove, and - * must be flexible to represent the internal transformation from - * the original key-value pairs into the basis hash, for many existing - * merkle trees. - * - * key and value are passed in. So that the signature of this operation is: - * leafOp(key, value) -> output - * - * To process this, first prehash the keys and values if needed (ANY means no hash in this case): - * hkey = prehashKey(key) - * hvalue = prehashValue(value) - * - * Then combine the bytes, and hash it - * output = hash(prefix || length(hkey) || hkey || length(hvalue) || hvalue) - * @implements ILeafOp - * @constructor - * @param {ics23.ILeafOp=} [properties] Properties to set - */ - function LeafOp(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * LeafOp hash. - * @member {ics23.HashOp} hash - * @memberof ics23.LeafOp - * @instance - */ - LeafOp.prototype.hash = 0; - - /** - * LeafOp prehashKey. - * @member {ics23.HashOp} prehashKey - * @memberof ics23.LeafOp - * @instance - */ - LeafOp.prototype.prehashKey = 0; - - /** - * LeafOp prehashValue. - * @member {ics23.HashOp} prehashValue - * @memberof ics23.LeafOp - * @instance - */ - LeafOp.prototype.prehashValue = 0; - - /** - * LeafOp length. - * @member {ics23.LengthOp} length - * @memberof ics23.LeafOp - * @instance - */ - LeafOp.prototype.length = 0; - - /** - * LeafOp prefix. - * @member {Uint8Array} prefix - * @memberof ics23.LeafOp - * @instance - */ - LeafOp.prototype.prefix = $util.newBuffer([]); - - /** - * Creates a new LeafOp instance using the specified properties. - * @function create - * @memberof ics23.LeafOp - * @static - * @param {ics23.ILeafOp=} [properties] Properties to set - * @returns {ics23.LeafOp} LeafOp instance - */ - LeafOp.create = function create(properties) { - return new LeafOp(properties); - }; - - /** - * Encodes the specified LeafOp message. Does not implicitly {@link ics23.LeafOp.verify|verify} messages. - * @function encode - * @memberof ics23.LeafOp - * @static - * @param {ics23.ILeafOp} message LeafOp message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - LeafOp.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.hash != null && Object.hasOwnProperty.call(message, "hash")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.hash); - if (message.prehashKey != null && Object.hasOwnProperty.call(message, "prehashKey")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.prehashKey); - if (message.prehashValue != null && Object.hasOwnProperty.call(message, "prehashValue")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.prehashValue); - if (message.length != null && Object.hasOwnProperty.call(message, "length")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.length); - if (message.prefix != null && Object.hasOwnProperty.call(message, "prefix")) - writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.prefix); - return writer; - }; - - /** - * Encodes the specified LeafOp message, length delimited. Does not implicitly {@link ics23.LeafOp.verify|verify} messages. - * @function encodeDelimited - * @memberof ics23.LeafOp - * @static - * @param {ics23.ILeafOp} message LeafOp message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - LeafOp.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a LeafOp message from the specified reader or buffer. - * @function decode - * @memberof ics23.LeafOp - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {ics23.LeafOp} LeafOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - LeafOp.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ics23.LeafOp(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.hash = reader.int32(); - break; - case 2: - message.prehashKey = reader.int32(); - break; - case 3: - message.prehashValue = reader.int32(); - break; - case 4: - message.length = reader.int32(); - break; - case 5: - message.prefix = reader.bytes(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a LeafOp message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof ics23.LeafOp - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {ics23.LeafOp} LeafOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - LeafOp.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a LeafOp message. - * @function verify - * @memberof ics23.LeafOp - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - LeafOp.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.hash != null && message.hasOwnProperty("hash")) - switch (message.hash) { - default: - return "hash: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - break; - } - if (message.prehashKey != null && message.hasOwnProperty("prehashKey")) - switch (message.prehashKey) { - default: - return "prehashKey: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - break; - } - if (message.prehashValue != null && message.hasOwnProperty("prehashValue")) - switch (message.prehashValue) { - default: - return "prehashValue: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - break; - } - if (message.length != null && message.hasOwnProperty("length")) - switch (message.length) { - default: - return "length: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - break; - } - if (message.prefix != null && message.hasOwnProperty("prefix")) - if (!(message.prefix && typeof message.prefix.length === "number" || $util.isString(message.prefix))) - return "prefix: buffer expected"; - return null; - }; - - /** - * Creates a LeafOp message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof ics23.LeafOp - * @static - * @param {Object.} object Plain object - * @returns {ics23.LeafOp} LeafOp - */ - LeafOp.fromObject = function fromObject(object) { - if (object instanceof $root.ics23.LeafOp) - return object; - var message = new $root.ics23.LeafOp(); - switch (object.hash) { - case "NO_HASH": - case 0: - message.hash = 0; - break; - case "SHA256": - case 1: - message.hash = 1; - break; - case "SHA512": - case 2: - message.hash = 2; - break; - case "KECCAK256": - case 3: - message.hash = 3; - break; - case "RIPEMD160": - case 4: - message.hash = 4; - break; - case "BITCOIN": - case 5: - message.hash = 5; - break; - case "SHA512_256": - case 6: - message.hash = 6; - break; - } - switch (object.prehashKey) { - case "NO_HASH": - case 0: - message.prehashKey = 0; - break; - case "SHA256": - case 1: - message.prehashKey = 1; - break; - case "SHA512": - case 2: - message.prehashKey = 2; - break; - case "KECCAK256": - case 3: - message.prehashKey = 3; - break; - case "RIPEMD160": - case 4: - message.prehashKey = 4; - break; - case "BITCOIN": - case 5: - message.prehashKey = 5; - break; - case "SHA512_256": - case 6: - message.prehashKey = 6; - break; - } - switch (object.prehashValue) { - case "NO_HASH": - case 0: - message.prehashValue = 0; - break; - case "SHA256": - case 1: - message.prehashValue = 1; - break; - case "SHA512": - case 2: - message.prehashValue = 2; - break; - case "KECCAK256": - case 3: - message.prehashValue = 3; - break; - case "RIPEMD160": - case 4: - message.prehashValue = 4; - break; - case "BITCOIN": - case 5: - message.prehashValue = 5; - break; - case "SHA512_256": - case 6: - message.prehashValue = 6; - break; - } - switch (object.length) { - case "NO_PREFIX": - case 0: - message.length = 0; - break; - case "VAR_PROTO": - case 1: - message.length = 1; - break; - case "VAR_RLP": - case 2: - message.length = 2; - break; - case "FIXED32_BIG": - case 3: - message.length = 3; - break; - case "FIXED32_LITTLE": - case 4: - message.length = 4; - break; - case "FIXED64_BIG": - case 5: - message.length = 5; - break; - case "FIXED64_LITTLE": - case 6: - message.length = 6; - break; - case "REQUIRE_32_BYTES": - case 7: - message.length = 7; - break; - case "REQUIRE_64_BYTES": - case 8: - message.length = 8; - break; - } - if (object.prefix != null) - if (typeof object.prefix === "string") - $util.base64.decode(object.prefix, message.prefix = $util.newBuffer($util.base64.length(object.prefix)), 0); - else if (object.prefix.length) - message.prefix = object.prefix; - return message; - }; - - /** - * Creates a plain object from a LeafOp message. Also converts values to other types if specified. - * @function toObject - * @memberof ics23.LeafOp - * @static - * @param {ics23.LeafOp} message LeafOp - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - LeafOp.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.hash = options.enums === String ? "NO_HASH" : 0; - object.prehashKey = options.enums === String ? "NO_HASH" : 0; - object.prehashValue = options.enums === String ? "NO_HASH" : 0; - object.length = options.enums === String ? "NO_PREFIX" : 0; - if (options.bytes === String) - object.prefix = ""; - else { - object.prefix = []; - if (options.bytes !== Array) - object.prefix = $util.newBuffer(object.prefix); - } - } - if (message.hash != null && message.hasOwnProperty("hash")) - object.hash = options.enums === String ? $root.ics23.HashOp[message.hash] : message.hash; - if (message.prehashKey != null && message.hasOwnProperty("prehashKey")) - object.prehashKey = options.enums === String ? $root.ics23.HashOp[message.prehashKey] : message.prehashKey; - if (message.prehashValue != null && message.hasOwnProperty("prehashValue")) - object.prehashValue = options.enums === String ? $root.ics23.HashOp[message.prehashValue] : message.prehashValue; - if (message.length != null && message.hasOwnProperty("length")) - object.length = options.enums === String ? $root.ics23.LengthOp[message.length] : message.length; - if (message.prefix != null && message.hasOwnProperty("prefix")) - object.prefix = options.bytes === String ? $util.base64.encode(message.prefix, 0, message.prefix.length) : options.bytes === Array ? Array.prototype.slice.call(message.prefix) : message.prefix; - return object; - }; - - /** - * Converts this LeafOp to JSON. - * @function toJSON - * @memberof ics23.LeafOp - * @instance - * @returns {Object.} JSON object - */ - LeafOp.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return LeafOp; - })(); - - ics23.InnerOp = (function() { - - /** - * Properties of an InnerOp. - * @memberof ics23 - * @interface IInnerOp - * @property {ics23.HashOp|null} [hash] InnerOp hash - * @property {Uint8Array|null} [prefix] InnerOp prefix - * @property {Uint8Array|null} [suffix] InnerOp suffix - */ - - /** - * Constructs a new InnerOp. - * @memberof ics23 - * @classdesc InnerOp represents a merkle-proof step that is not a leaf. - * It represents concatenating two children and hashing them to provide the next result. - * - * The result of the previous step is passed in, so the signature of this op is: - * innerOp(child) -> output - * - * The result of applying InnerOp should be: - * output = op.hash(op.prefix || child || op.suffix) - * - * where the || operator is concatenation of binary data, - * and child is the result of hashing all the tree below this step. - * - * Any special data, like prepending child with the length, or prepending the entire operation with - * some value to differentiate from leaf nodes, should be included in prefix and suffix. - * If either of prefix or suffix is empty, we just treat it as an empty string - * @implements IInnerOp - * @constructor - * @param {ics23.IInnerOp=} [properties] Properties to set - */ - function InnerOp(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * InnerOp hash. - * @member {ics23.HashOp} hash - * @memberof ics23.InnerOp - * @instance - */ - InnerOp.prototype.hash = 0; - - /** - * InnerOp prefix. - * @member {Uint8Array} prefix - * @memberof ics23.InnerOp - * @instance - */ - InnerOp.prototype.prefix = $util.newBuffer([]); - - /** - * InnerOp suffix. - * @member {Uint8Array} suffix - * @memberof ics23.InnerOp - * @instance - */ - InnerOp.prototype.suffix = $util.newBuffer([]); - - /** - * Creates a new InnerOp instance using the specified properties. - * @function create - * @memberof ics23.InnerOp - * @static - * @param {ics23.IInnerOp=} [properties] Properties to set - * @returns {ics23.InnerOp} InnerOp instance - */ - InnerOp.create = function create(properties) { - return new InnerOp(properties); - }; - - /** - * Encodes the specified InnerOp message. Does not implicitly {@link ics23.InnerOp.verify|verify} messages. - * @function encode - * @memberof ics23.InnerOp - * @static - * @param {ics23.IInnerOp} message InnerOp message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - InnerOp.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.hash != null && Object.hasOwnProperty.call(message, "hash")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.hash); - if (message.prefix != null && Object.hasOwnProperty.call(message, "prefix")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.prefix); - if (message.suffix != null && Object.hasOwnProperty.call(message, "suffix")) - writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.suffix); - return writer; - }; - - /** - * Encodes the specified InnerOp message, length delimited. Does not implicitly {@link ics23.InnerOp.verify|verify} messages. - * @function encodeDelimited - * @memberof ics23.InnerOp - * @static - * @param {ics23.IInnerOp} message InnerOp message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - InnerOp.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes an InnerOp message from the specified reader or buffer. - * @function decode - * @memberof ics23.InnerOp - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {ics23.InnerOp} InnerOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - InnerOp.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ics23.InnerOp(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.hash = reader.int32(); - break; - case 2: - message.prefix = reader.bytes(); - break; - case 3: - message.suffix = reader.bytes(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes an InnerOp message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof ics23.InnerOp - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {ics23.InnerOp} InnerOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - InnerOp.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies an InnerOp message. - * @function verify - * @memberof ics23.InnerOp - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - InnerOp.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.hash != null && message.hasOwnProperty("hash")) - switch (message.hash) { - default: - return "hash: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - break; - } - if (message.prefix != null && message.hasOwnProperty("prefix")) - if (!(message.prefix && typeof message.prefix.length === "number" || $util.isString(message.prefix))) - return "prefix: buffer expected"; - if (message.suffix != null && message.hasOwnProperty("suffix")) - if (!(message.suffix && typeof message.suffix.length === "number" || $util.isString(message.suffix))) - return "suffix: buffer expected"; - return null; - }; - - /** - * Creates an InnerOp message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof ics23.InnerOp - * @static - * @param {Object.} object Plain object - * @returns {ics23.InnerOp} InnerOp - */ - InnerOp.fromObject = function fromObject(object) { - if (object instanceof $root.ics23.InnerOp) - return object; - var message = new $root.ics23.InnerOp(); - switch (object.hash) { - case "NO_HASH": - case 0: - message.hash = 0; - break; - case "SHA256": - case 1: - message.hash = 1; - break; - case "SHA512": - case 2: - message.hash = 2; - break; - case "KECCAK256": - case 3: - message.hash = 3; - break; - case "RIPEMD160": - case 4: - message.hash = 4; - break; - case "BITCOIN": - case 5: - message.hash = 5; - break; - case "SHA512_256": - case 6: - message.hash = 6; - break; - } - if (object.prefix != null) - if (typeof object.prefix === "string") - $util.base64.decode(object.prefix, message.prefix = $util.newBuffer($util.base64.length(object.prefix)), 0); - else if (object.prefix.length) - message.prefix = object.prefix; - if (object.suffix != null) - if (typeof object.suffix === "string") - $util.base64.decode(object.suffix, message.suffix = $util.newBuffer($util.base64.length(object.suffix)), 0); - else if (object.suffix.length) - message.suffix = object.suffix; - return message; - }; - - /** - * Creates a plain object from an InnerOp message. Also converts values to other types if specified. - * @function toObject - * @memberof ics23.InnerOp - * @static - * @param {ics23.InnerOp} message InnerOp - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - InnerOp.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.hash = options.enums === String ? "NO_HASH" : 0; - if (options.bytes === String) - object.prefix = ""; - else { - object.prefix = []; - if (options.bytes !== Array) - object.prefix = $util.newBuffer(object.prefix); - } - if (options.bytes === String) - object.suffix = ""; - else { - object.suffix = []; - if (options.bytes !== Array) - object.suffix = $util.newBuffer(object.suffix); - } - } - if (message.hash != null && message.hasOwnProperty("hash")) - object.hash = options.enums === String ? $root.ics23.HashOp[message.hash] : message.hash; - if (message.prefix != null && message.hasOwnProperty("prefix")) - object.prefix = options.bytes === String ? $util.base64.encode(message.prefix, 0, message.prefix.length) : options.bytes === Array ? Array.prototype.slice.call(message.prefix) : message.prefix; - if (message.suffix != null && message.hasOwnProperty("suffix")) - object.suffix = options.bytes === String ? $util.base64.encode(message.suffix, 0, message.suffix.length) : options.bytes === Array ? Array.prototype.slice.call(message.suffix) : message.suffix; - return object; - }; - - /** - * Converts this InnerOp to JSON. - * @function toJSON - * @memberof ics23.InnerOp - * @instance - * @returns {Object.} JSON object - */ - InnerOp.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return InnerOp; - })(); - - ics23.ProofSpec = (function() { - - /** - * Properties of a ProofSpec. - * @memberof ics23 - * @interface IProofSpec - * @property {ics23.ILeafOp|null} [leafSpec] ProofSpec leafSpec - * @property {ics23.IInnerSpec|null} [innerSpec] ProofSpec innerSpec - * @property {number|null} [maxDepth] ProofSpec maxDepth - * @property {number|null} [minDepth] ProofSpec minDepth - * @property {boolean|null} [prehashKeyBeforeComparison] ProofSpec prehashKeyBeforeComparison - */ - - /** - * Constructs a new ProofSpec. - * @memberof ics23 - * @classdesc ProofSpec defines what the expected parameters are for a given proof type. - * This can be stored in the client and used to validate any incoming proofs. - * - * verify(ProofSpec, Proof) -> Proof | Error - * - * As demonstrated in tests, if we don't fix the algorithm used to calculate the - * LeafHash for a given tree, there are many possible key-value pairs that can - * generate a given hash (by interpretting the preimage differently). - * We need this for proper security, requires client knows a priori what - * tree format server uses. But not in code, rather a configuration object. - * @implements IProofSpec - * @constructor - * @param {ics23.IProofSpec=} [properties] Properties to set - */ - function ProofSpec(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * ProofSpec leafSpec. - * @member {ics23.ILeafOp|null|undefined} leafSpec - * @memberof ics23.ProofSpec - * @instance - */ - ProofSpec.prototype.leafSpec = null; - - /** - * ProofSpec innerSpec. - * @member {ics23.IInnerSpec|null|undefined} innerSpec - * @memberof ics23.ProofSpec - * @instance - */ - ProofSpec.prototype.innerSpec = null; - - /** - * ProofSpec maxDepth. - * @member {number} maxDepth - * @memberof ics23.ProofSpec - * @instance - */ - ProofSpec.prototype.maxDepth = 0; - - /** - * ProofSpec minDepth. - * @member {number} minDepth - * @memberof ics23.ProofSpec - * @instance - */ - ProofSpec.prototype.minDepth = 0; - - /** - * ProofSpec prehashKeyBeforeComparison. - * @member {boolean} prehashKeyBeforeComparison - * @memberof ics23.ProofSpec - * @instance - */ - ProofSpec.prototype.prehashKeyBeforeComparison = false; - - /** - * Creates a new ProofSpec instance using the specified properties. - * @function create - * @memberof ics23.ProofSpec - * @static - * @param {ics23.IProofSpec=} [properties] Properties to set - * @returns {ics23.ProofSpec} ProofSpec instance - */ - ProofSpec.create = function create(properties) { - return new ProofSpec(properties); - }; - - /** - * Encodes the specified ProofSpec message. Does not implicitly {@link ics23.ProofSpec.verify|verify} messages. - * @function encode - * @memberof ics23.ProofSpec - * @static - * @param {ics23.IProofSpec} message ProofSpec message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ProofSpec.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.leafSpec != null && Object.hasOwnProperty.call(message, "leafSpec")) - $root.ics23.LeafOp.encode(message.leafSpec, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.innerSpec != null && Object.hasOwnProperty.call(message, "innerSpec")) - $root.ics23.InnerSpec.encode(message.innerSpec, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.maxDepth != null && Object.hasOwnProperty.call(message, "maxDepth")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.maxDepth); - if (message.minDepth != null && Object.hasOwnProperty.call(message, "minDepth")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.minDepth); - if (message.prehashKeyBeforeComparison != null && Object.hasOwnProperty.call(message, "prehashKeyBeforeComparison")) - writer.uint32(/* id 5, wireType 0 =*/40).bool(message.prehashKeyBeforeComparison); - return writer; - }; - - /** - * Encodes the specified ProofSpec message, length delimited. Does not implicitly {@link ics23.ProofSpec.verify|verify} messages. - * @function encodeDelimited - * @memberof ics23.ProofSpec - * @static - * @param {ics23.IProofSpec} message ProofSpec message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ProofSpec.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a ProofSpec message from the specified reader or buffer. - * @function decode - * @memberof ics23.ProofSpec - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {ics23.ProofSpec} ProofSpec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ProofSpec.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ics23.ProofSpec(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.leafSpec = $root.ics23.LeafOp.decode(reader, reader.uint32()); - break; - case 2: - message.innerSpec = $root.ics23.InnerSpec.decode(reader, reader.uint32()); - break; - case 3: - message.maxDepth = reader.int32(); - break; - case 4: - message.minDepth = reader.int32(); - break; - case 5: - message.prehashKeyBeforeComparison = reader.bool(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a ProofSpec message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof ics23.ProofSpec - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {ics23.ProofSpec} ProofSpec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ProofSpec.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a ProofSpec message. - * @function verify - * @memberof ics23.ProofSpec - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ProofSpec.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.leafSpec != null && message.hasOwnProperty("leafSpec")) { - var error = $root.ics23.LeafOp.verify(message.leafSpec); - if (error) - return "leafSpec." + error; - } - if (message.innerSpec != null && message.hasOwnProperty("innerSpec")) { - var error = $root.ics23.InnerSpec.verify(message.innerSpec); - if (error) - return "innerSpec." + error; - } - if (message.maxDepth != null && message.hasOwnProperty("maxDepth")) - if (!$util.isInteger(message.maxDepth)) - return "maxDepth: integer expected"; - if (message.minDepth != null && message.hasOwnProperty("minDepth")) - if (!$util.isInteger(message.minDepth)) - return "minDepth: integer expected"; - if (message.prehashKeyBeforeComparison != null && message.hasOwnProperty("prehashKeyBeforeComparison")) - if (typeof message.prehashKeyBeforeComparison !== "boolean") - return "prehashKeyBeforeComparison: boolean expected"; - return null; - }; - - /** - * Creates a ProofSpec message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof ics23.ProofSpec - * @static - * @param {Object.} object Plain object - * @returns {ics23.ProofSpec} ProofSpec - */ - ProofSpec.fromObject = function fromObject(object) { - if (object instanceof $root.ics23.ProofSpec) - return object; - var message = new $root.ics23.ProofSpec(); - if (object.leafSpec != null) { - if (typeof object.leafSpec !== "object") - throw TypeError(".ics23.ProofSpec.leafSpec: object expected"); - message.leafSpec = $root.ics23.LeafOp.fromObject(object.leafSpec); - } - if (object.innerSpec != null) { - if (typeof object.innerSpec !== "object") - throw TypeError(".ics23.ProofSpec.innerSpec: object expected"); - message.innerSpec = $root.ics23.InnerSpec.fromObject(object.innerSpec); - } - if (object.maxDepth != null) - message.maxDepth = object.maxDepth | 0; - if (object.minDepth != null) - message.minDepth = object.minDepth | 0; - if (object.prehashKeyBeforeComparison != null) - message.prehashKeyBeforeComparison = Boolean(object.prehashKeyBeforeComparison); - return message; - }; - - /** - * Creates a plain object from a ProofSpec message. Also converts values to other types if specified. - * @function toObject - * @memberof ics23.ProofSpec - * @static - * @param {ics23.ProofSpec} message ProofSpec - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ProofSpec.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.leafSpec = null; - object.innerSpec = null; - object.maxDepth = 0; - object.minDepth = 0; - object.prehashKeyBeforeComparison = false; - } - if (message.leafSpec != null && message.hasOwnProperty("leafSpec")) - object.leafSpec = $root.ics23.LeafOp.toObject(message.leafSpec, options); - if (message.innerSpec != null && message.hasOwnProperty("innerSpec")) - object.innerSpec = $root.ics23.InnerSpec.toObject(message.innerSpec, options); - if (message.maxDepth != null && message.hasOwnProperty("maxDepth")) - object.maxDepth = message.maxDepth; - if (message.minDepth != null && message.hasOwnProperty("minDepth")) - object.minDepth = message.minDepth; - if (message.prehashKeyBeforeComparison != null && message.hasOwnProperty("prehashKeyBeforeComparison")) - object.prehashKeyBeforeComparison = message.prehashKeyBeforeComparison; - return object; - }; - - /** - * Converts this ProofSpec to JSON. - * @function toJSON - * @memberof ics23.ProofSpec - * @instance - * @returns {Object.} JSON object - */ - ProofSpec.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return ProofSpec; - })(); - - ics23.InnerSpec = (function() { - - /** - * Properties of an InnerSpec. - * @memberof ics23 - * @interface IInnerSpec - * @property {Array.|null} [childOrder] InnerSpec childOrder - * @property {number|null} [childSize] InnerSpec childSize - * @property {number|null} [minPrefixLength] InnerSpec minPrefixLength - * @property {number|null} [maxPrefixLength] InnerSpec maxPrefixLength - * @property {Uint8Array|null} [emptyChild] InnerSpec emptyChild - * @property {ics23.HashOp|null} [hash] InnerSpec hash - */ - - /** - * Constructs a new InnerSpec. - * @memberof ics23 - * @classdesc Represents an InnerSpec. - * @implements IInnerSpec - * @constructor - * @param {ics23.IInnerSpec=} [properties] Properties to set - */ - function InnerSpec(properties) { - this.childOrder = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * InnerSpec childOrder. - * @member {Array.} childOrder - * @memberof ics23.InnerSpec - * @instance - */ - InnerSpec.prototype.childOrder = $util.emptyArray; - - /** - * InnerSpec childSize. - * @member {number} childSize - * @memberof ics23.InnerSpec - * @instance - */ - InnerSpec.prototype.childSize = 0; - - /** - * InnerSpec minPrefixLength. - * @member {number} minPrefixLength - * @memberof ics23.InnerSpec - * @instance - */ - InnerSpec.prototype.minPrefixLength = 0; - - /** - * InnerSpec maxPrefixLength. - * @member {number} maxPrefixLength - * @memberof ics23.InnerSpec - * @instance - */ - InnerSpec.prototype.maxPrefixLength = 0; - - /** - * InnerSpec emptyChild. - * @member {Uint8Array} emptyChild - * @memberof ics23.InnerSpec - * @instance - */ - InnerSpec.prototype.emptyChild = $util.newBuffer([]); - - /** - * InnerSpec hash. - * @member {ics23.HashOp} hash - * @memberof ics23.InnerSpec - * @instance - */ - InnerSpec.prototype.hash = 0; - - /** - * Creates a new InnerSpec instance using the specified properties. - * @function create - * @memberof ics23.InnerSpec - * @static - * @param {ics23.IInnerSpec=} [properties] Properties to set - * @returns {ics23.InnerSpec} InnerSpec instance - */ - InnerSpec.create = function create(properties) { - return new InnerSpec(properties); - }; - - /** - * Encodes the specified InnerSpec message. Does not implicitly {@link ics23.InnerSpec.verify|verify} messages. - * @function encode - * @memberof ics23.InnerSpec - * @static - * @param {ics23.IInnerSpec} message InnerSpec message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - InnerSpec.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.childOrder != null && message.childOrder.length) { - writer.uint32(/* id 1, wireType 2 =*/10).fork(); - for (var i = 0; i < message.childOrder.length; ++i) - writer.int32(message.childOrder[i]); - writer.ldelim(); - } - if (message.childSize != null && Object.hasOwnProperty.call(message, "childSize")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.childSize); - if (message.minPrefixLength != null && Object.hasOwnProperty.call(message, "minPrefixLength")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.minPrefixLength); - if (message.maxPrefixLength != null && Object.hasOwnProperty.call(message, "maxPrefixLength")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.maxPrefixLength); - if (message.emptyChild != null && Object.hasOwnProperty.call(message, "emptyChild")) - writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.emptyChild); - if (message.hash != null && Object.hasOwnProperty.call(message, "hash")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.hash); - return writer; - }; - - /** - * Encodes the specified InnerSpec message, length delimited. Does not implicitly {@link ics23.InnerSpec.verify|verify} messages. - * @function encodeDelimited - * @memberof ics23.InnerSpec - * @static - * @param {ics23.IInnerSpec} message InnerSpec message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - InnerSpec.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes an InnerSpec message from the specified reader or buffer. - * @function decode - * @memberof ics23.InnerSpec - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {ics23.InnerSpec} InnerSpec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - InnerSpec.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ics23.InnerSpec(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (!(message.childOrder && message.childOrder.length)) - message.childOrder = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.childOrder.push(reader.int32()); - } else - message.childOrder.push(reader.int32()); - break; - case 2: - message.childSize = reader.int32(); - break; - case 3: - message.minPrefixLength = reader.int32(); - break; - case 4: - message.maxPrefixLength = reader.int32(); - break; - case 5: - message.emptyChild = reader.bytes(); - break; - case 6: - message.hash = reader.int32(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes an InnerSpec message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof ics23.InnerSpec - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {ics23.InnerSpec} InnerSpec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - InnerSpec.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies an InnerSpec message. - * @function verify - * @memberof ics23.InnerSpec - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - InnerSpec.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.childOrder != null && message.hasOwnProperty("childOrder")) { - if (!Array.isArray(message.childOrder)) - return "childOrder: array expected"; - for (var i = 0; i < message.childOrder.length; ++i) - if (!$util.isInteger(message.childOrder[i])) - return "childOrder: integer[] expected"; - } - if (message.childSize != null && message.hasOwnProperty("childSize")) - if (!$util.isInteger(message.childSize)) - return "childSize: integer expected"; - if (message.minPrefixLength != null && message.hasOwnProperty("minPrefixLength")) - if (!$util.isInteger(message.minPrefixLength)) - return "minPrefixLength: integer expected"; - if (message.maxPrefixLength != null && message.hasOwnProperty("maxPrefixLength")) - if (!$util.isInteger(message.maxPrefixLength)) - return "maxPrefixLength: integer expected"; - if (message.emptyChild != null && message.hasOwnProperty("emptyChild")) - if (!(message.emptyChild && typeof message.emptyChild.length === "number" || $util.isString(message.emptyChild))) - return "emptyChild: buffer expected"; - if (message.hash != null && message.hasOwnProperty("hash")) - switch (message.hash) { - default: - return "hash: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - break; - } - return null; - }; - - /** - * Creates an InnerSpec message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof ics23.InnerSpec - * @static - * @param {Object.} object Plain object - * @returns {ics23.InnerSpec} InnerSpec - */ - InnerSpec.fromObject = function fromObject(object) { - if (object instanceof $root.ics23.InnerSpec) - return object; - var message = new $root.ics23.InnerSpec(); - if (object.childOrder) { - if (!Array.isArray(object.childOrder)) - throw TypeError(".ics23.InnerSpec.childOrder: array expected"); - message.childOrder = []; - for (var i = 0; i < object.childOrder.length; ++i) - message.childOrder[i] = object.childOrder[i] | 0; - } - if (object.childSize != null) - message.childSize = object.childSize | 0; - if (object.minPrefixLength != null) - message.minPrefixLength = object.minPrefixLength | 0; - if (object.maxPrefixLength != null) - message.maxPrefixLength = object.maxPrefixLength | 0; - if (object.emptyChild != null) - if (typeof object.emptyChild === "string") - $util.base64.decode(object.emptyChild, message.emptyChild = $util.newBuffer($util.base64.length(object.emptyChild)), 0); - else if (object.emptyChild.length) - message.emptyChild = object.emptyChild; - switch (object.hash) { - case "NO_HASH": - case 0: - message.hash = 0; - break; - case "SHA256": - case 1: - message.hash = 1; - break; - case "SHA512": - case 2: - message.hash = 2; - break; - case "KECCAK256": - case 3: - message.hash = 3; - break; - case "RIPEMD160": - case 4: - message.hash = 4; - break; - case "BITCOIN": - case 5: - message.hash = 5; - break; - case "SHA512_256": - case 6: - message.hash = 6; - break; - } - return message; - }; - - /** - * Creates a plain object from an InnerSpec message. Also converts values to other types if specified. - * @function toObject - * @memberof ics23.InnerSpec - * @static - * @param {ics23.InnerSpec} message InnerSpec - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - InnerSpec.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.childOrder = []; - if (options.defaults) { - object.childSize = 0; - object.minPrefixLength = 0; - object.maxPrefixLength = 0; - if (options.bytes === String) - object.emptyChild = ""; - else { - object.emptyChild = []; - if (options.bytes !== Array) - object.emptyChild = $util.newBuffer(object.emptyChild); - } - object.hash = options.enums === String ? "NO_HASH" : 0; - } - if (message.childOrder && message.childOrder.length) { - object.childOrder = []; - for (var j = 0; j < message.childOrder.length; ++j) - object.childOrder[j] = message.childOrder[j]; - } - if (message.childSize != null && message.hasOwnProperty("childSize")) - object.childSize = message.childSize; - if (message.minPrefixLength != null && message.hasOwnProperty("minPrefixLength")) - object.minPrefixLength = message.minPrefixLength; - if (message.maxPrefixLength != null && message.hasOwnProperty("maxPrefixLength")) - object.maxPrefixLength = message.maxPrefixLength; - if (message.emptyChild != null && message.hasOwnProperty("emptyChild")) - object.emptyChild = options.bytes === String ? $util.base64.encode(message.emptyChild, 0, message.emptyChild.length) : options.bytes === Array ? Array.prototype.slice.call(message.emptyChild) : message.emptyChild; - if (message.hash != null && message.hasOwnProperty("hash")) - object.hash = options.enums === String ? $root.ics23.HashOp[message.hash] : message.hash; - return object; - }; - - /** - * Converts this InnerSpec to JSON. - * @function toJSON - * @memberof ics23.InnerSpec - * @instance - * @returns {Object.} JSON object - */ - InnerSpec.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return InnerSpec; - })(); - - ics23.BatchProof = (function() { - - /** - * Properties of a BatchProof. - * @memberof ics23 - * @interface IBatchProof - * @property {Array.|null} [entries] BatchProof entries - */ - - /** - * Constructs a new BatchProof. - * @memberof ics23 - * @classdesc Represents a BatchProof. - * @implements IBatchProof - * @constructor - * @param {ics23.IBatchProof=} [properties] Properties to set - */ - function BatchProof(properties) { - this.entries = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * BatchProof entries. - * @member {Array.} entries - * @memberof ics23.BatchProof - * @instance - */ - BatchProof.prototype.entries = $util.emptyArray; - - /** - * Creates a new BatchProof instance using the specified properties. - * @function create - * @memberof ics23.BatchProof - * @static - * @param {ics23.IBatchProof=} [properties] Properties to set - * @returns {ics23.BatchProof} BatchProof instance - */ - BatchProof.create = function create(properties) { - return new BatchProof(properties); - }; - - /** - * Encodes the specified BatchProof message. Does not implicitly {@link ics23.BatchProof.verify|verify} messages. - * @function encode - * @memberof ics23.BatchProof - * @static - * @param {ics23.IBatchProof} message BatchProof message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BatchProof.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.entries != null && message.entries.length) - for (var i = 0; i < message.entries.length; ++i) - $root.ics23.BatchEntry.encode(message.entries[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified BatchProof message, length delimited. Does not implicitly {@link ics23.BatchProof.verify|verify} messages. - * @function encodeDelimited - * @memberof ics23.BatchProof - * @static - * @param {ics23.IBatchProof} message BatchProof message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BatchProof.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a BatchProof message from the specified reader or buffer. - * @function decode - * @memberof ics23.BatchProof - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {ics23.BatchProof} BatchProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BatchProof.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ics23.BatchProof(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (!(message.entries && message.entries.length)) - message.entries = []; - message.entries.push($root.ics23.BatchEntry.decode(reader, reader.uint32())); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a BatchProof message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof ics23.BatchProof - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {ics23.BatchProof} BatchProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BatchProof.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a BatchProof message. - * @function verify - * @memberof ics23.BatchProof - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - BatchProof.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.entries != null && message.hasOwnProperty("entries")) { - if (!Array.isArray(message.entries)) - return "entries: array expected"; - for (var i = 0; i < message.entries.length; ++i) { - var error = $root.ics23.BatchEntry.verify(message.entries[i]); - if (error) - return "entries." + error; - } - } - return null; - }; - - /** - * Creates a BatchProof message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof ics23.BatchProof - * @static - * @param {Object.} object Plain object - * @returns {ics23.BatchProof} BatchProof - */ - BatchProof.fromObject = function fromObject(object) { - if (object instanceof $root.ics23.BatchProof) - return object; - var message = new $root.ics23.BatchProof(); - if (object.entries) { - if (!Array.isArray(object.entries)) - throw TypeError(".ics23.BatchProof.entries: array expected"); - message.entries = []; - for (var i = 0; i < object.entries.length; ++i) { - if (typeof object.entries[i] !== "object") - throw TypeError(".ics23.BatchProof.entries: object expected"); - message.entries[i] = $root.ics23.BatchEntry.fromObject(object.entries[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a BatchProof message. Also converts values to other types if specified. - * @function toObject - * @memberof ics23.BatchProof - * @static - * @param {ics23.BatchProof} message BatchProof - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - BatchProof.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.entries = []; - if (message.entries && message.entries.length) { - object.entries = []; - for (var j = 0; j < message.entries.length; ++j) - object.entries[j] = $root.ics23.BatchEntry.toObject(message.entries[j], options); - } - return object; - }; - - /** - * Converts this BatchProof to JSON. - * @function toJSON - * @memberof ics23.BatchProof - * @instance - * @returns {Object.} JSON object - */ - BatchProof.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return BatchProof; - })(); - - ics23.BatchEntry = (function() { - - /** - * Properties of a BatchEntry. - * @memberof ics23 - * @interface IBatchEntry - * @property {ics23.IExistenceProof|null} [exist] BatchEntry exist - * @property {ics23.INonExistenceProof|null} [nonexist] BatchEntry nonexist - */ - - /** - * Constructs a new BatchEntry. - * @memberof ics23 - * @classdesc Represents a BatchEntry. - * @implements IBatchEntry - * @constructor - * @param {ics23.IBatchEntry=} [properties] Properties to set - */ - function BatchEntry(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * BatchEntry exist. - * @member {ics23.IExistenceProof|null|undefined} exist - * @memberof ics23.BatchEntry - * @instance - */ - BatchEntry.prototype.exist = null; - - /** - * BatchEntry nonexist. - * @member {ics23.INonExistenceProof|null|undefined} nonexist - * @memberof ics23.BatchEntry - * @instance - */ - BatchEntry.prototype.nonexist = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; - - /** - * BatchEntry proof. - * @member {"exist"|"nonexist"|undefined} proof - * @memberof ics23.BatchEntry - * @instance - */ - Object.defineProperty(BatchEntry.prototype, "proof", { - get: $util.oneOfGetter($oneOfFields = ["exist", "nonexist"]), - set: $util.oneOfSetter($oneOfFields) - }); - - /** - * Creates a new BatchEntry instance using the specified properties. - * @function create - * @memberof ics23.BatchEntry - * @static - * @param {ics23.IBatchEntry=} [properties] Properties to set - * @returns {ics23.BatchEntry} BatchEntry instance - */ - BatchEntry.create = function create(properties) { - return new BatchEntry(properties); - }; - - /** - * Encodes the specified BatchEntry message. Does not implicitly {@link ics23.BatchEntry.verify|verify} messages. - * @function encode - * @memberof ics23.BatchEntry - * @static - * @param {ics23.IBatchEntry} message BatchEntry message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BatchEntry.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.exist != null && Object.hasOwnProperty.call(message, "exist")) - $root.ics23.ExistenceProof.encode(message.exist, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.nonexist != null && Object.hasOwnProperty.call(message, "nonexist")) - $root.ics23.NonExistenceProof.encode(message.nonexist, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified BatchEntry message, length delimited. Does not implicitly {@link ics23.BatchEntry.verify|verify} messages. - * @function encodeDelimited - * @memberof ics23.BatchEntry - * @static - * @param {ics23.IBatchEntry} message BatchEntry message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BatchEntry.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a BatchEntry message from the specified reader or buffer. - * @function decode - * @memberof ics23.BatchEntry - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {ics23.BatchEntry} BatchEntry - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BatchEntry.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ics23.BatchEntry(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.exist = $root.ics23.ExistenceProof.decode(reader, reader.uint32()); - break; - case 2: - message.nonexist = $root.ics23.NonExistenceProof.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a BatchEntry message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof ics23.BatchEntry - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {ics23.BatchEntry} BatchEntry - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BatchEntry.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a BatchEntry message. - * @function verify - * @memberof ics23.BatchEntry - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - BatchEntry.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - var properties = {}; - if (message.exist != null && message.hasOwnProperty("exist")) { - properties.proof = 1; - { - var error = $root.ics23.ExistenceProof.verify(message.exist); - if (error) - return "exist." + error; - } - } - if (message.nonexist != null && message.hasOwnProperty("nonexist")) { - if (properties.proof === 1) - return "proof: multiple values"; - properties.proof = 1; - { - var error = $root.ics23.NonExistenceProof.verify(message.nonexist); - if (error) - return "nonexist." + error; - } - } - return null; - }; - - /** - * Creates a BatchEntry message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof ics23.BatchEntry - * @static - * @param {Object.} object Plain object - * @returns {ics23.BatchEntry} BatchEntry - */ - BatchEntry.fromObject = function fromObject(object) { - if (object instanceof $root.ics23.BatchEntry) - return object; - var message = new $root.ics23.BatchEntry(); - if (object.exist != null) { - if (typeof object.exist !== "object") - throw TypeError(".ics23.BatchEntry.exist: object expected"); - message.exist = $root.ics23.ExistenceProof.fromObject(object.exist); - } - if (object.nonexist != null) { - if (typeof object.nonexist !== "object") - throw TypeError(".ics23.BatchEntry.nonexist: object expected"); - message.nonexist = $root.ics23.NonExistenceProof.fromObject(object.nonexist); - } - return message; - }; - - /** - * Creates a plain object from a BatchEntry message. Also converts values to other types if specified. - * @function toObject - * @memberof ics23.BatchEntry - * @static - * @param {ics23.BatchEntry} message BatchEntry - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - BatchEntry.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (message.exist != null && message.hasOwnProperty("exist")) { - object.exist = $root.ics23.ExistenceProof.toObject(message.exist, options); - if (options.oneofs) - object.proof = "exist"; - } - if (message.nonexist != null && message.hasOwnProperty("nonexist")) { - object.nonexist = $root.ics23.NonExistenceProof.toObject(message.nonexist, options); - if (options.oneofs) - object.proof = "nonexist"; - } - return object; - }; - - /** - * Converts this BatchEntry to JSON. - * @function toJSON - * @memberof ics23.BatchEntry - * @instance - * @returns {Object.} JSON object - */ - BatchEntry.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return BatchEntry; - })(); - - ics23.CompressedBatchProof = (function() { - - /** - * Properties of a CompressedBatchProof. - * @memberof ics23 - * @interface ICompressedBatchProof - * @property {Array.|null} [entries] CompressedBatchProof entries - * @property {Array.|null} [lookupInners] CompressedBatchProof lookupInners - */ - - /** - * Constructs a new CompressedBatchProof. - * @memberof ics23 - * @classdesc Represents a CompressedBatchProof. - * @implements ICompressedBatchProof - * @constructor - * @param {ics23.ICompressedBatchProof=} [properties] Properties to set - */ - function CompressedBatchProof(properties) { - this.entries = []; - this.lookupInners = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CompressedBatchProof entries. - * @member {Array.} entries - * @memberof ics23.CompressedBatchProof - * @instance - */ - CompressedBatchProof.prototype.entries = $util.emptyArray; - - /** - * CompressedBatchProof lookupInners. - * @member {Array.} lookupInners - * @memberof ics23.CompressedBatchProof - * @instance - */ - CompressedBatchProof.prototype.lookupInners = $util.emptyArray; - - /** - * Creates a new CompressedBatchProof instance using the specified properties. - * @function create - * @memberof ics23.CompressedBatchProof - * @static - * @param {ics23.ICompressedBatchProof=} [properties] Properties to set - * @returns {ics23.CompressedBatchProof} CompressedBatchProof instance - */ - CompressedBatchProof.create = function create(properties) { - return new CompressedBatchProof(properties); - }; - - /** - * Encodes the specified CompressedBatchProof message. Does not implicitly {@link ics23.CompressedBatchProof.verify|verify} messages. - * @function encode - * @memberof ics23.CompressedBatchProof - * @static - * @param {ics23.ICompressedBatchProof} message CompressedBatchProof message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CompressedBatchProof.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.entries != null && message.entries.length) - for (var i = 0; i < message.entries.length; ++i) - $root.ics23.CompressedBatchEntry.encode(message.entries[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.lookupInners != null && message.lookupInners.length) - for (var i = 0; i < message.lookupInners.length; ++i) - $root.ics23.InnerOp.encode(message.lookupInners[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified CompressedBatchProof message, length delimited. Does not implicitly {@link ics23.CompressedBatchProof.verify|verify} messages. - * @function encodeDelimited - * @memberof ics23.CompressedBatchProof - * @static - * @param {ics23.ICompressedBatchProof} message CompressedBatchProof message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CompressedBatchProof.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CompressedBatchProof message from the specified reader or buffer. - * @function decode - * @memberof ics23.CompressedBatchProof - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {ics23.CompressedBatchProof} CompressedBatchProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CompressedBatchProof.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ics23.CompressedBatchProof(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (!(message.entries && message.entries.length)) - message.entries = []; - message.entries.push($root.ics23.CompressedBatchEntry.decode(reader, reader.uint32())); - break; - case 2: - if (!(message.lookupInners && message.lookupInners.length)) - message.lookupInners = []; - message.lookupInners.push($root.ics23.InnerOp.decode(reader, reader.uint32())); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CompressedBatchProof message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof ics23.CompressedBatchProof - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {ics23.CompressedBatchProof} CompressedBatchProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CompressedBatchProof.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CompressedBatchProof message. - * @function verify - * @memberof ics23.CompressedBatchProof - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CompressedBatchProof.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.entries != null && message.hasOwnProperty("entries")) { - if (!Array.isArray(message.entries)) - return "entries: array expected"; - for (var i = 0; i < message.entries.length; ++i) { - var error = $root.ics23.CompressedBatchEntry.verify(message.entries[i]); - if (error) - return "entries." + error; - } - } - if (message.lookupInners != null && message.hasOwnProperty("lookupInners")) { - if (!Array.isArray(message.lookupInners)) - return "lookupInners: array expected"; - for (var i = 0; i < message.lookupInners.length; ++i) { - var error = $root.ics23.InnerOp.verify(message.lookupInners[i]); - if (error) - return "lookupInners." + error; - } - } - return null; - }; - - /** - * Creates a CompressedBatchProof message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof ics23.CompressedBatchProof - * @static - * @param {Object.} object Plain object - * @returns {ics23.CompressedBatchProof} CompressedBatchProof - */ - CompressedBatchProof.fromObject = function fromObject(object) { - if (object instanceof $root.ics23.CompressedBatchProof) - return object; - var message = new $root.ics23.CompressedBatchProof(); - if (object.entries) { - if (!Array.isArray(object.entries)) - throw TypeError(".ics23.CompressedBatchProof.entries: array expected"); - message.entries = []; - for (var i = 0; i < object.entries.length; ++i) { - if (typeof object.entries[i] !== "object") - throw TypeError(".ics23.CompressedBatchProof.entries: object expected"); - message.entries[i] = $root.ics23.CompressedBatchEntry.fromObject(object.entries[i]); - } - } - if (object.lookupInners) { - if (!Array.isArray(object.lookupInners)) - throw TypeError(".ics23.CompressedBatchProof.lookupInners: array expected"); - message.lookupInners = []; - for (var i = 0; i < object.lookupInners.length; ++i) { - if (typeof object.lookupInners[i] !== "object") - throw TypeError(".ics23.CompressedBatchProof.lookupInners: object expected"); - message.lookupInners[i] = $root.ics23.InnerOp.fromObject(object.lookupInners[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a CompressedBatchProof message. Also converts values to other types if specified. - * @function toObject - * @memberof ics23.CompressedBatchProof - * @static - * @param {ics23.CompressedBatchProof} message CompressedBatchProof - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CompressedBatchProof.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.entries = []; - object.lookupInners = []; - } - if (message.entries && message.entries.length) { - object.entries = []; - for (var j = 0; j < message.entries.length; ++j) - object.entries[j] = $root.ics23.CompressedBatchEntry.toObject(message.entries[j], options); - } - if (message.lookupInners && message.lookupInners.length) { - object.lookupInners = []; - for (var j = 0; j < message.lookupInners.length; ++j) - object.lookupInners[j] = $root.ics23.InnerOp.toObject(message.lookupInners[j], options); - } - return object; - }; - - /** - * Converts this CompressedBatchProof to JSON. - * @function toJSON - * @memberof ics23.CompressedBatchProof - * @instance - * @returns {Object.} JSON object - */ - CompressedBatchProof.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return CompressedBatchProof; - })(); - - ics23.CompressedBatchEntry = (function() { - - /** - * Properties of a CompressedBatchEntry. - * @memberof ics23 - * @interface ICompressedBatchEntry - * @property {ics23.ICompressedExistenceProof|null} [exist] CompressedBatchEntry exist - * @property {ics23.ICompressedNonExistenceProof|null} [nonexist] CompressedBatchEntry nonexist - */ - - /** - * Constructs a new CompressedBatchEntry. - * @memberof ics23 - * @classdesc Represents a CompressedBatchEntry. - * @implements ICompressedBatchEntry - * @constructor - * @param {ics23.ICompressedBatchEntry=} [properties] Properties to set - */ - function CompressedBatchEntry(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CompressedBatchEntry exist. - * @member {ics23.ICompressedExistenceProof|null|undefined} exist - * @memberof ics23.CompressedBatchEntry - * @instance - */ - CompressedBatchEntry.prototype.exist = null; - - /** - * CompressedBatchEntry nonexist. - * @member {ics23.ICompressedNonExistenceProof|null|undefined} nonexist - * @memberof ics23.CompressedBatchEntry - * @instance - */ - CompressedBatchEntry.prototype.nonexist = null; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; - - /** - * CompressedBatchEntry proof. - * @member {"exist"|"nonexist"|undefined} proof - * @memberof ics23.CompressedBatchEntry - * @instance - */ - Object.defineProperty(CompressedBatchEntry.prototype, "proof", { - get: $util.oneOfGetter($oneOfFields = ["exist", "nonexist"]), - set: $util.oneOfSetter($oneOfFields) - }); - - /** - * Creates a new CompressedBatchEntry instance using the specified properties. - * @function create - * @memberof ics23.CompressedBatchEntry - * @static - * @param {ics23.ICompressedBatchEntry=} [properties] Properties to set - * @returns {ics23.CompressedBatchEntry} CompressedBatchEntry instance - */ - CompressedBatchEntry.create = function create(properties) { - return new CompressedBatchEntry(properties); - }; - - /** - * Encodes the specified CompressedBatchEntry message. Does not implicitly {@link ics23.CompressedBatchEntry.verify|verify} messages. - * @function encode - * @memberof ics23.CompressedBatchEntry - * @static - * @param {ics23.ICompressedBatchEntry} message CompressedBatchEntry message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CompressedBatchEntry.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.exist != null && Object.hasOwnProperty.call(message, "exist")) - $root.ics23.CompressedExistenceProof.encode(message.exist, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.nonexist != null && Object.hasOwnProperty.call(message, "nonexist")) - $root.ics23.CompressedNonExistenceProof.encode(message.nonexist, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified CompressedBatchEntry message, length delimited. Does not implicitly {@link ics23.CompressedBatchEntry.verify|verify} messages. - * @function encodeDelimited - * @memberof ics23.CompressedBatchEntry - * @static - * @param {ics23.ICompressedBatchEntry} message CompressedBatchEntry message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CompressedBatchEntry.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CompressedBatchEntry message from the specified reader or buffer. - * @function decode - * @memberof ics23.CompressedBatchEntry - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {ics23.CompressedBatchEntry} CompressedBatchEntry - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CompressedBatchEntry.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ics23.CompressedBatchEntry(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.exist = $root.ics23.CompressedExistenceProof.decode(reader, reader.uint32()); - break; - case 2: - message.nonexist = $root.ics23.CompressedNonExistenceProof.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CompressedBatchEntry message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof ics23.CompressedBatchEntry - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {ics23.CompressedBatchEntry} CompressedBatchEntry - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CompressedBatchEntry.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CompressedBatchEntry message. - * @function verify - * @memberof ics23.CompressedBatchEntry - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CompressedBatchEntry.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - var properties = {}; - if (message.exist != null && message.hasOwnProperty("exist")) { - properties.proof = 1; - { - var error = $root.ics23.CompressedExistenceProof.verify(message.exist); - if (error) - return "exist." + error; - } - } - if (message.nonexist != null && message.hasOwnProperty("nonexist")) { - if (properties.proof === 1) - return "proof: multiple values"; - properties.proof = 1; - { - var error = $root.ics23.CompressedNonExistenceProof.verify(message.nonexist); - if (error) - return "nonexist." + error; - } - } - return null; - }; - - /** - * Creates a CompressedBatchEntry message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof ics23.CompressedBatchEntry - * @static - * @param {Object.} object Plain object - * @returns {ics23.CompressedBatchEntry} CompressedBatchEntry - */ - CompressedBatchEntry.fromObject = function fromObject(object) { - if (object instanceof $root.ics23.CompressedBatchEntry) - return object; - var message = new $root.ics23.CompressedBatchEntry(); - if (object.exist != null) { - if (typeof object.exist !== "object") - throw TypeError(".ics23.CompressedBatchEntry.exist: object expected"); - message.exist = $root.ics23.CompressedExistenceProof.fromObject(object.exist); - } - if (object.nonexist != null) { - if (typeof object.nonexist !== "object") - throw TypeError(".ics23.CompressedBatchEntry.nonexist: object expected"); - message.nonexist = $root.ics23.CompressedNonExistenceProof.fromObject(object.nonexist); - } - return message; - }; - - /** - * Creates a plain object from a CompressedBatchEntry message. Also converts values to other types if specified. - * @function toObject - * @memberof ics23.CompressedBatchEntry - * @static - * @param {ics23.CompressedBatchEntry} message CompressedBatchEntry - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CompressedBatchEntry.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (message.exist != null && message.hasOwnProperty("exist")) { - object.exist = $root.ics23.CompressedExistenceProof.toObject(message.exist, options); - if (options.oneofs) - object.proof = "exist"; - } - if (message.nonexist != null && message.hasOwnProperty("nonexist")) { - object.nonexist = $root.ics23.CompressedNonExistenceProof.toObject(message.nonexist, options); - if (options.oneofs) - object.proof = "nonexist"; - } - return object; - }; - - /** - * Converts this CompressedBatchEntry to JSON. - * @function toJSON - * @memberof ics23.CompressedBatchEntry - * @instance - * @returns {Object.} JSON object - */ - CompressedBatchEntry.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return CompressedBatchEntry; - })(); - - ics23.CompressedExistenceProof = (function() { - - /** - * Properties of a CompressedExistenceProof. - * @memberof ics23 - * @interface ICompressedExistenceProof - * @property {Uint8Array|null} [key] CompressedExistenceProof key - * @property {Uint8Array|null} [value] CompressedExistenceProof value - * @property {ics23.ILeafOp|null} [leaf] CompressedExistenceProof leaf - * @property {Array.|null} [path] CompressedExistenceProof path - */ - - /** - * Constructs a new CompressedExistenceProof. - * @memberof ics23 - * @classdesc Represents a CompressedExistenceProof. - * @implements ICompressedExistenceProof - * @constructor - * @param {ics23.ICompressedExistenceProof=} [properties] Properties to set - */ - function CompressedExistenceProof(properties) { - this.path = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CompressedExistenceProof key. - * @member {Uint8Array} key - * @memberof ics23.CompressedExistenceProof - * @instance - */ - CompressedExistenceProof.prototype.key = $util.newBuffer([]); - - /** - * CompressedExistenceProof value. - * @member {Uint8Array} value - * @memberof ics23.CompressedExistenceProof - * @instance - */ - CompressedExistenceProof.prototype.value = $util.newBuffer([]); - - /** - * CompressedExistenceProof leaf. - * @member {ics23.ILeafOp|null|undefined} leaf - * @memberof ics23.CompressedExistenceProof - * @instance - */ - CompressedExistenceProof.prototype.leaf = null; - - /** - * CompressedExistenceProof path. - * @member {Array.} path - * @memberof ics23.CompressedExistenceProof - * @instance - */ - CompressedExistenceProof.prototype.path = $util.emptyArray; - - /** - * Creates a new CompressedExistenceProof instance using the specified properties. - * @function create - * @memberof ics23.CompressedExistenceProof - * @static - * @param {ics23.ICompressedExistenceProof=} [properties] Properties to set - * @returns {ics23.CompressedExistenceProof} CompressedExistenceProof instance - */ - CompressedExistenceProof.create = function create(properties) { - return new CompressedExistenceProof(properties); - }; - - /** - * Encodes the specified CompressedExistenceProof message. Does not implicitly {@link ics23.CompressedExistenceProof.verify|verify} messages. - * @function encode - * @memberof ics23.CompressedExistenceProof - * @static - * @param {ics23.ICompressedExistenceProof} message CompressedExistenceProof message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CompressedExistenceProof.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.key != null && Object.hasOwnProperty.call(message, "key")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.key); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.value); - if (message.leaf != null && Object.hasOwnProperty.call(message, "leaf")) - $root.ics23.LeafOp.encode(message.leaf, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.path != null && message.path.length) { - writer.uint32(/* id 4, wireType 2 =*/34).fork(); - for (var i = 0; i < message.path.length; ++i) - writer.int32(message.path[i]); - writer.ldelim(); - } - return writer; - }; - - /** - * Encodes the specified CompressedExistenceProof message, length delimited. Does not implicitly {@link ics23.CompressedExistenceProof.verify|verify} messages. - * @function encodeDelimited - * @memberof ics23.CompressedExistenceProof - * @static - * @param {ics23.ICompressedExistenceProof} message CompressedExistenceProof message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CompressedExistenceProof.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CompressedExistenceProof message from the specified reader or buffer. - * @function decode - * @memberof ics23.CompressedExistenceProof - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {ics23.CompressedExistenceProof} CompressedExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CompressedExistenceProof.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ics23.CompressedExistenceProof(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.key = reader.bytes(); - break; - case 2: - message.value = reader.bytes(); - break; - case 3: - message.leaf = $root.ics23.LeafOp.decode(reader, reader.uint32()); - break; - case 4: - if (!(message.path && message.path.length)) - message.path = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.path.push(reader.int32()); - } else - message.path.push(reader.int32()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CompressedExistenceProof message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof ics23.CompressedExistenceProof - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {ics23.CompressedExistenceProof} CompressedExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CompressedExistenceProof.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CompressedExistenceProof message. - * @function verify - * @memberof ics23.CompressedExistenceProof - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CompressedExistenceProof.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.key != null && message.hasOwnProperty("key")) - if (!(message.key && typeof message.key.length === "number" || $util.isString(message.key))) - return "key: buffer expected"; - if (message.value != null && message.hasOwnProperty("value")) - if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value))) - return "value: buffer expected"; - if (message.leaf != null && message.hasOwnProperty("leaf")) { - var error = $root.ics23.LeafOp.verify(message.leaf); - if (error) - return "leaf." + error; - } - if (message.path != null && message.hasOwnProperty("path")) { - if (!Array.isArray(message.path)) - return "path: array expected"; - for (var i = 0; i < message.path.length; ++i) - if (!$util.isInteger(message.path[i])) - return "path: integer[] expected"; - } - return null; - }; - - /** - * Creates a CompressedExistenceProof message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof ics23.CompressedExistenceProof - * @static - * @param {Object.} object Plain object - * @returns {ics23.CompressedExistenceProof} CompressedExistenceProof - */ - CompressedExistenceProof.fromObject = function fromObject(object) { - if (object instanceof $root.ics23.CompressedExistenceProof) - return object; - var message = new $root.ics23.CompressedExistenceProof(); - if (object.key != null) - if (typeof object.key === "string") - $util.base64.decode(object.key, message.key = $util.newBuffer($util.base64.length(object.key)), 0); - else if (object.key.length) - message.key = object.key; - if (object.value != null) - if (typeof object.value === "string") - $util.base64.decode(object.value, message.value = $util.newBuffer($util.base64.length(object.value)), 0); - else if (object.value.length) - message.value = object.value; - if (object.leaf != null) { - if (typeof object.leaf !== "object") - throw TypeError(".ics23.CompressedExistenceProof.leaf: object expected"); - message.leaf = $root.ics23.LeafOp.fromObject(object.leaf); - } - if (object.path) { - if (!Array.isArray(object.path)) - throw TypeError(".ics23.CompressedExistenceProof.path: array expected"); - message.path = []; - for (var i = 0; i < object.path.length; ++i) - message.path[i] = object.path[i] | 0; - } - return message; - }; - - /** - * Creates a plain object from a CompressedExistenceProof message. Also converts values to other types if specified. - * @function toObject - * @memberof ics23.CompressedExistenceProof - * @static - * @param {ics23.CompressedExistenceProof} message CompressedExistenceProof - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CompressedExistenceProof.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.path = []; - if (options.defaults) { - if (options.bytes === String) - object.key = ""; - else { - object.key = []; - if (options.bytes !== Array) - object.key = $util.newBuffer(object.key); - } - if (options.bytes === String) - object.value = ""; - else { - object.value = []; - if (options.bytes !== Array) - object.value = $util.newBuffer(object.value); - } - object.leaf = null; - } - if (message.key != null && message.hasOwnProperty("key")) - object.key = options.bytes === String ? $util.base64.encode(message.key, 0, message.key.length) : options.bytes === Array ? Array.prototype.slice.call(message.key) : message.key; - if (message.value != null && message.hasOwnProperty("value")) - object.value = options.bytes === String ? $util.base64.encode(message.value, 0, message.value.length) : options.bytes === Array ? Array.prototype.slice.call(message.value) : message.value; - if (message.leaf != null && message.hasOwnProperty("leaf")) - object.leaf = $root.ics23.LeafOp.toObject(message.leaf, options); - if (message.path && message.path.length) { - object.path = []; - for (var j = 0; j < message.path.length; ++j) - object.path[j] = message.path[j]; - } - return object; - }; - - /** - * Converts this CompressedExistenceProof to JSON. - * @function toJSON - * @memberof ics23.CompressedExistenceProof - * @instance - * @returns {Object.} JSON object - */ - CompressedExistenceProof.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return CompressedExistenceProof; - })(); - - ics23.CompressedNonExistenceProof = (function() { - - /** - * Properties of a CompressedNonExistenceProof. - * @memberof ics23 - * @interface ICompressedNonExistenceProof - * @property {Uint8Array|null} [key] CompressedNonExistenceProof key - * @property {ics23.ICompressedExistenceProof|null} [left] CompressedNonExistenceProof left - * @property {ics23.ICompressedExistenceProof|null} [right] CompressedNonExistenceProof right - */ - - /** - * Constructs a new CompressedNonExistenceProof. - * @memberof ics23 - * @classdesc Represents a CompressedNonExistenceProof. - * @implements ICompressedNonExistenceProof - * @constructor - * @param {ics23.ICompressedNonExistenceProof=} [properties] Properties to set - */ - function CompressedNonExistenceProof(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CompressedNonExistenceProof key. - * @member {Uint8Array} key - * @memberof ics23.CompressedNonExistenceProof - * @instance - */ - CompressedNonExistenceProof.prototype.key = $util.newBuffer([]); - - /** - * CompressedNonExistenceProof left. - * @member {ics23.ICompressedExistenceProof|null|undefined} left - * @memberof ics23.CompressedNonExistenceProof - * @instance - */ - CompressedNonExistenceProof.prototype.left = null; - - /** - * CompressedNonExistenceProof right. - * @member {ics23.ICompressedExistenceProof|null|undefined} right - * @memberof ics23.CompressedNonExistenceProof - * @instance - */ - CompressedNonExistenceProof.prototype.right = null; - - /** - * Creates a new CompressedNonExistenceProof instance using the specified properties. - * @function create - * @memberof ics23.CompressedNonExistenceProof - * @static - * @param {ics23.ICompressedNonExistenceProof=} [properties] Properties to set - * @returns {ics23.CompressedNonExistenceProof} CompressedNonExistenceProof instance - */ - CompressedNonExistenceProof.create = function create(properties) { - return new CompressedNonExistenceProof(properties); - }; - - /** - * Encodes the specified CompressedNonExistenceProof message. Does not implicitly {@link ics23.CompressedNonExistenceProof.verify|verify} messages. - * @function encode - * @memberof ics23.CompressedNonExistenceProof - * @static - * @param {ics23.ICompressedNonExistenceProof} message CompressedNonExistenceProof message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CompressedNonExistenceProof.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.key != null && Object.hasOwnProperty.call(message, "key")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.key); - if (message.left != null && Object.hasOwnProperty.call(message, "left")) - $root.ics23.CompressedExistenceProof.encode(message.left, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.right != null && Object.hasOwnProperty.call(message, "right")) - $root.ics23.CompressedExistenceProof.encode(message.right, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified CompressedNonExistenceProof message, length delimited. Does not implicitly {@link ics23.CompressedNonExistenceProof.verify|verify} messages. - * @function encodeDelimited - * @memberof ics23.CompressedNonExistenceProof - * @static - * @param {ics23.ICompressedNonExistenceProof} message CompressedNonExistenceProof message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CompressedNonExistenceProof.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CompressedNonExistenceProof message from the specified reader or buffer. - * @function decode - * @memberof ics23.CompressedNonExistenceProof - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {ics23.CompressedNonExistenceProof} CompressedNonExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CompressedNonExistenceProof.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ics23.CompressedNonExistenceProof(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.key = reader.bytes(); - break; - case 2: - message.left = $root.ics23.CompressedExistenceProof.decode(reader, reader.uint32()); - break; - case 3: - message.right = $root.ics23.CompressedExistenceProof.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CompressedNonExistenceProof message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof ics23.CompressedNonExistenceProof - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {ics23.CompressedNonExistenceProof} CompressedNonExistenceProof - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CompressedNonExistenceProof.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CompressedNonExistenceProof message. - * @function verify - * @memberof ics23.CompressedNonExistenceProof - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CompressedNonExistenceProof.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.key != null && message.hasOwnProperty("key")) - if (!(message.key && typeof message.key.length === "number" || $util.isString(message.key))) - return "key: buffer expected"; - if (message.left != null && message.hasOwnProperty("left")) { - var error = $root.ics23.CompressedExistenceProof.verify(message.left); - if (error) - return "left." + error; - } - if (message.right != null && message.hasOwnProperty("right")) { - var error = $root.ics23.CompressedExistenceProof.verify(message.right); - if (error) - return "right." + error; - } - return null; - }; - - /** - * Creates a CompressedNonExistenceProof message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof ics23.CompressedNonExistenceProof - * @static - * @param {Object.} object Plain object - * @returns {ics23.CompressedNonExistenceProof} CompressedNonExistenceProof - */ - CompressedNonExistenceProof.fromObject = function fromObject(object) { - if (object instanceof $root.ics23.CompressedNonExistenceProof) - return object; - var message = new $root.ics23.CompressedNonExistenceProof(); - if (object.key != null) - if (typeof object.key === "string") - $util.base64.decode(object.key, message.key = $util.newBuffer($util.base64.length(object.key)), 0); - else if (object.key.length) - message.key = object.key; - if (object.left != null) { - if (typeof object.left !== "object") - throw TypeError(".ics23.CompressedNonExistenceProof.left: object expected"); - message.left = $root.ics23.CompressedExistenceProof.fromObject(object.left); - } - if (object.right != null) { - if (typeof object.right !== "object") - throw TypeError(".ics23.CompressedNonExistenceProof.right: object expected"); - message.right = $root.ics23.CompressedExistenceProof.fromObject(object.right); - } - return message; - }; - - /** - * Creates a plain object from a CompressedNonExistenceProof message. Also converts values to other types if specified. - * @function toObject - * @memberof ics23.CompressedNonExistenceProof - * @static - * @param {ics23.CompressedNonExistenceProof} message CompressedNonExistenceProof - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CompressedNonExistenceProof.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - if (options.bytes === String) - object.key = ""; - else { - object.key = []; - if (options.bytes !== Array) - object.key = $util.newBuffer(object.key); - } - object.left = null; - object.right = null; - } - if (message.key != null && message.hasOwnProperty("key")) - object.key = options.bytes === String ? $util.base64.encode(message.key, 0, message.key.length) : options.bytes === Array ? Array.prototype.slice.call(message.key) : message.key; - if (message.left != null && message.hasOwnProperty("left")) - object.left = $root.ics23.CompressedExistenceProof.toObject(message.left, options); - if (message.right != null && message.hasOwnProperty("right")) - object.right = $root.ics23.CompressedExistenceProof.toObject(message.right, options); - return object; - }; - - /** - * Converts this CompressedNonExistenceProof to JSON. - * @function toJSON - * @memberof ics23.CompressedNonExistenceProof - * @instance - * @returns {Object.} JSON object - */ - CompressedNonExistenceProof.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return CompressedNonExistenceProof; - })(); - - return ics23; -})(); - -module.exports = $root; diff --git a/js/src/ics23.ts b/js/src/ics23.ts deleted file mode 100644 index ea541f85..00000000 --- a/js/src/ics23.ts +++ /dev/null @@ -1,150 +0,0 @@ -import { decompress } from "./compress"; -import { ics23 } from "./generated/codecimpl"; -import { CommitmentRoot, verifyExistence, verifyNonExistence } from "./proofs"; -import { keyForComparison } from "./proofs"; -import { bytesBefore, bytesEqual } from "./specs"; -/* -This implements the client side functions as specified in -https://github.com/cosmos/ics/tree/master/spec/ics-023-vector-commitments - -In particular: - - // Assumes ExistenceProof - type verifyMembership = (root: CommitmentRoot, proof: CommitmentProof, key: Key, value: Value) => boolean - - // Assumes NonExistenceProof - type verifyNonMembership = (root: CommitmentRoot, proof: CommitmentProof, key: Key) => boolean - - // Assumes BatchProof - required ExistenceProofs may be a subset of all items proven - type batchVerifyMembership = (root: CommitmentRoot, proof: CommitmentProof, items: Map) => boolean - - // Assumes BatchProof - required NonExistenceProofs may be a subset of all items proven - type batchVerifyNonMembership = (root: CommitmentRoot, proof: CommitmentProof, keys: Set) => boolean - -We make an adjustment to accept a Spec to ensure the provided proof is in the format of the expected merkle store. -This can avoid an range of attacks on fake preimages, as we need to be careful on how to map key, value -> leaf -and determine neighbors -*/ - -/** - * verifyMembership ensures proof is (contains) a valid existence proof for the given - */ -export function verifyMembership( - proof: ics23.ICommitmentProof, - spec: ics23.IProofSpec, - root: CommitmentRoot, - key: Uint8Array, - value: Uint8Array, -): boolean { - const norm = decompress(proof); - const exist = getExistForKey(norm, key); - if (!exist) { - return false; - } - try { - verifyExistence(exist, spec, root, key, value); - return true; - } catch { - return false; - } -} - -/** - * verifyNonMembership ensures proof is (contains) a valid non-existence proof for the given key - */ -export function verifyNonMembership( - proof: ics23.ICommitmentProof, - spec: ics23.IProofSpec, - root: CommitmentRoot, - key: Uint8Array, -): boolean { - const norm = decompress(proof); - const nonexist = getNonExistForKey(spec, norm, key); - if (!nonexist) { - return false; - } - try { - verifyNonExistence(nonexist, spec, root, key); - return true; - } catch { - return false; - } -} - -/** - * batchVerifyMembership ensures proof is (contains) a valid existence proof for the given - */ -export function batchVerifyMembership( - proof: ics23.ICommitmentProof, - spec: ics23.IProofSpec, - root: CommitmentRoot, - items: Map, -): boolean { - const norm = decompress(proof); - for (const [key, value] of items.entries()) { - if (!verifyMembership(norm, spec, root, key, value)) { - return false; - } - } - return true; -} - -/** - * batchVerifyNonMembership ensures proof is (contains) a valid existence proof for the given - */ -export function batchVerifyNonMembership( - proof: ics23.ICommitmentProof, - spec: ics23.IProofSpec, - root: CommitmentRoot, - keys: readonly Uint8Array[], -): boolean { - const norm = decompress(proof); - for (const key of keys) { - if (!verifyNonMembership(norm, spec, root, key)) { - return false; - } - } - return true; -} - -function getExistForKey( - proof: ics23.ICommitmentProof, - key: Uint8Array, -): ics23.IExistenceProof | undefined | null { - const match = (p: ics23.IExistenceProof | null | undefined): boolean => - !!p && bytesEqual(key, p.key!); - if (match(proof.exist)) { - return proof.exist!; - } else if (proof.batch) { - return proof.batch.entries!.map((x) => x.exist || null).find(match); - } - return undefined; -} - -function getNonExistForKey( - spec: ics23.IProofSpec, - proof: ics23.ICommitmentProof, - key: Uint8Array, -): ics23.INonExistenceProof | undefined | null { - const match = (p: ics23.INonExistenceProof | null | undefined): boolean => { - return ( - !!p && - (!p.left || - bytesBefore( - keyForComparison(spec, p.left.key!), - keyForComparison(spec, key), - )) && - (!p.right || - bytesBefore( - keyForComparison(spec, key), - keyForComparison(spec, p.right.key!), - )) - ); - }; - if (match(proof.nonexist)) { - return proof.nonexist!; - } else if (proof.batch) { - return proof.batch.entries!.map((x) => x.nonexist || null).find(match); - } - return undefined; -} diff --git a/js/src/index.ts b/js/src/index.ts deleted file mode 100644 index a05eae48..00000000 --- a/js/src/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -export { ics23 } from "./generated/codecimpl"; -export { verifyMembership, verifyNonMembership } from "./ics23"; -export { - calculateExistenceRoot, - CommitmentRoot, - iavlSpec, - tendermintSpec, - verifyExistence, - verifyNonExistence, -} from "./proofs"; diff --git a/js/src/ops.spec.ts b/js/src/ops.spec.ts deleted file mode 100644 index 25452d5a..00000000 --- a/js/src/ops.spec.ts +++ /dev/null @@ -1,227 +0,0 @@ -import { ics23 } from "./generated/codecimpl"; -import { applyInner, applyLeaf, doHash } from "./ops"; -import { fromHex, toAscii } from "./testhelpers.spec"; - -describe("doHash", () => { - it("sha256 hashes food", () => { - // echo -n food | sha256sum - const hash = doHash(ics23.HashOp.SHA256, toAscii("food")); - expect(hash).toEqual( - fromHex( - "c1f026582fe6e8cb620d0c85a72fe421ddded756662a8ec00ed4c297ad10676b", - ), - ); - }); - - it("sha512 hashes food", () => { - // echo -n food | sha512sum - const hash = doHash(ics23.HashOp.SHA512, toAscii("food")); - expect(hash).toEqual( - fromHex( - "c235548cfe84fc87678ff04c9134e060cdcd7512d09ed726192151a995541ed8db9fda5204e72e7ac268214c322c17787c70530513c59faede52b7dd9ce64331", - ), - ); - }); - - it("ripemd160 hashes food", () => { - // echo -n food | openssl dgst -rmd160 -hex | cut -d' ' -f2 - const hash = doHash(ics23.HashOp.RIPEMD160, toAscii("food")); - expect(hash).toEqual(fromHex("b1ab9988c7c7c5ec4b2b291adfeeee10e77cdd46")); - }); - - it("bitcoin hashes food", () => { - // echo -n c1f026582fe6e8cb620d0c85a72fe421ddded756662a8ec00ed4c297ad10676b | xxd -r -p | openssl dgst -rmd160 -hex - const hash = doHash(ics23.HashOp.BITCOIN, toAscii("food")); - expect(hash).toEqual(fromHex("0bcb587dfb4fc10b36d57f2bba1878f139b75d24")); - }); - - it("blake2b hashes food", () => { - // use this online tool: https://toolkitbay.com/tkb/tool/BLAKE2b_512 - const hash = doHash(ics23.HashOp.BLAKE2B_512, toAscii("food")); - expect(hash).toEqual( - fromHex( - "b1f115361afc179415d93d4f58dc2fc7d8fa434192d7cb9b65fca592f6aa904103d1f12b28655c2355478e10908ab002c418dc52a4367d8e645309cd25e3a504", - ), - ); - }); - - it("blake2s hashes food", () => { - // use this online tool: https://toolkitbay.com/tkb/tool/BLAKE2s_256 - const hash = doHash(ics23.HashOp.BLAKE2S_256, toAscii("food")); - expect(hash).toEqual( - fromHex( - "5a1ec796f11f3dfc7e8ca5de13828edf2e910eb7dd41caaac356a4acbefb1758", - ), - ); - }); - - it("blake3 hashes food", () => { - // use this online tool: https://connor4312.github.io/blake3/index.html - const hash = doHash(ics23.HashOp.BLAKE3, toAscii("food")); - expect(hash).toEqual( - fromHex( - "f775a8ccf8cb78cd1c63ade4e9802de4ead836b36cea35242accf31d2c6a3697", - ), - ); - }); -}); - -describe("applyLeaf", () => { - it("hashes foobar", () => { - const op: ics23.ILeafOp = { hash: ics23.HashOp.SHA256 }; - const key = toAscii("foo"); - const value = toAscii("bar"); - // echo -n foobar | sha256sum - const expected = fromHex( - "c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2", - ); - expect(applyLeaf(op, key, value)).toEqual(expected); - }); - - it("hashes foobaz with sha-512", () => { - const op: ics23.ILeafOp = { hash: ics23.HashOp.SHA512 }; - const key = toAscii("foo"); - const value = toAscii("baz"); - // echo -n foobaz | sha512sum - const expected = fromHex( - "4f79f191298ec7461d60136c60f77c2ae8ddd85dbf6168bb925092d51bfb39b559219b39ae5385ba04946c87f64741385bef90578ea6fe6dac85dbf7ad3f79e1", - ); - expect(applyLeaf(op, key, value)).toEqual(expected); - }); - - it("hashes food with sha-512/256", () => { - const op: ics23.ILeafOp = { hash: ics23.HashOp.SHA512_256 }; - const key = toAscii("fo"); - const value = toAscii("od"); - const expected = fromHex( - "5b3a452a6acbf1fc1e553a40c501585d5bd3cca176d562e0a0e19a3c43804e88", - ); - expect(applyLeaf(op, key, value)).toEqual(expected); - }); - - it("hashes foobar (different breakpoint)", () => { - const op: ics23.ILeafOp = { hash: ics23.HashOp.SHA256 }; - const key = toAscii("f"); - const value = toAscii("oobar"); - // echo -n foobar | sha256sum - const expected = fromHex( - "c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2", - ); - expect(applyLeaf(op, key, value)).toEqual(expected); - }); - - it("hashes with length prefix", () => { - const op: ics23.ILeafOp = { - hash: ics23.HashOp.SHA256, - length: ics23.LengthOp.VAR_PROTO, - }; - // echo -n food | xxd -ps - const key = toAscii("food"); // 04666f6f64 - const value = toAscii("some longer text"); // 10736f6d65206c6f6e6765722074657874 - // echo -n 04666f6f6410736f6d65206c6f6e6765722074657874 | xxd -r -p | sha256sum -b - const expected = fromHex( - "b68f5d298e915ae1753dd333da1f9cf605411a5f2e12516be6758f365e6db265", - ); - expect(applyLeaf(op, key, value)).toEqual(expected); - }); - - it("hashes with length prefix (fixed 32-bit little-endian encoding)", () => { - const op: ics23.ILeafOp = { - hash: ics23.HashOp.SHA256, - length: ics23.LengthOp.FIXED32_LITTLE, - }; - // echo -n food | xxd -ps - const key = toAscii("food"); // 04000000666f6f64 - const value = toAscii("some longer text"); // 10000000736f6d65206c6f6e6765722074657874 - // echo -n 04000000666f6f6410000000736f6d65206c6f6e6765722074657874 | xxd -r -p | sha256sum - const expected = fromHex( - "c853652437be02501c674744bf2a2b45d92a0a9f29c4b1044010fb3e2d43a949", - ); - expect(applyLeaf(op, key, value)).toEqual(expected); - }); - - it("hashes with prehash and length prefix", () => { - const op: ics23.ILeafOp = { - hash: ics23.HashOp.SHA256, - length: ics23.LengthOp.VAR_PROTO, - prehashValue: ics23.HashOp.SHA256, - }; - const key = toAscii("food"); // 04666f6f64 - // echo -n yet another long string | sha256sum - const value = toAscii("yet another long string"); // 20a48c2d4f67b9f80374938535285ed285819d8a5a8fc1fccd1e3244e437cf290d - // echo -n 04666f6f6420a48c2d4f67b9f80374938535285ed285819d8a5a8fc1fccd1e3244e437cf290d | xxd -r -p | sha256sum - const expected = fromHex( - "87e0483e8fb624aef2e2f7b13f4166cda485baa8e39f437c83d74c94bedb148f", - ); - expect(applyLeaf(op, key, value)).toEqual(expected); - }); - - it("requires key", () => { - const op: ics23.ILeafOp = { - hash: ics23.HashOp.SHA256, - }; - const key = toAscii("food"); - const value = toAscii(""); - expect(() => applyLeaf(op, key, value)).toThrow(); - }); - - it("requires value", () => { - const op: ics23.ILeafOp = { - hash: ics23.HashOp.SHA256, - }; - const key = toAscii(""); - const value = toAscii("time"); - expect(() => applyLeaf(op, key, value)).toThrow(); - }); -}); - -describe("applyInner", () => { - it("hash child with prefix and suffix", () => { - const op: ics23.IInnerOp = { - hash: ics23.HashOp.SHA256, - prefix: fromHex("0123456789"), - suffix: fromHex("deadbeef"), - }; - const child = fromHex("00cafe00"); - // echo -n 012345678900cafe00deadbeef | xxd -r -p | sha256sum - const expected = fromHex( - "0339f76086684506a6d42a60da4b5a719febd4d96d8b8d85ae92849e3a849a5e", - ); - expect(applyInner(op, child)).toEqual(expected); - }); - - it("requies child", () => { - const op: ics23.IInnerOp = { - hash: ics23.HashOp.SHA256, - prefix: fromHex("0123456789"), - suffix: fromHex("deadbeef"), - }; - expect(() => applyInner(op, fromHex(""))).toThrow(); - }); - - it("hash child with only prefix", () => { - const op: ics23.IInnerOp = { - hash: ics23.HashOp.SHA256, - prefix: fromHex("00204080a0c0e0"), - }; - const child = fromHex("ffccbb997755331100"); - // echo -n 00204080a0c0e0ffccbb997755331100 | xxd -r -p | sha256sum - const expected = fromHex( - "45bece1678cf2e9f4f2ae033e546fc35a2081b2415edcb13121a0e908dca1927", - ); - expect(applyInner(op, child)).toEqual(expected); - }); - - it("hash child with only suffix", () => { - const op: ics23.IInnerOp = { - hash: ics23.HashOp.SHA256, - suffix: toAscii(" just kidding!"), - }; - const child = toAscii("this is a sha256 hash, really...."); - // echo -n 'this is a sha256 hash, really.... just kidding!' | sha256sum - const expected = fromHex( - "79ef671d27e42a53fba2201c1bbc529a099af578ee8a38df140795db0ae2184b", - ); - expect(applyInner(op, child)).toEqual(expected); - }); -}); diff --git a/js/src/ops.ts b/js/src/ops.ts deleted file mode 100644 index 84cacf48..00000000 --- a/js/src/ops.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { blake2b } from "@noble/hashes/blake2b"; -import { blake2s } from "@noble/hashes/blake2s"; -import { blake3 } from "@noble/hashes/blake3"; -import { ripemd160 } from "@noble/hashes/ripemd160"; -import { sha256 } from "@noble/hashes/sha256"; -import { sha512, sha512_256 } from "@noble/hashes/sha512"; - -import { ics23 } from "./generated/codecimpl"; - -export function applyLeaf( - leaf: ics23.ILeafOp, - key: Uint8Array, - value: Uint8Array, -): Uint8Array { - if (key.length === 0) { - throw new Error("Missing key"); - } - if (value.length === 0) { - throw new Error("Missing value"); - } - const pkey = prepareLeafData( - ensureHash(leaf.prehashKey), - ensureLength(leaf.length), - key, - ); - const pvalue = prepareLeafData( - ensureHash(leaf.prehashValue), - ensureLength(leaf.length), - value, - ); - const data = new Uint8Array([ - ...ensureBytes(leaf.prefix), - ...pkey, - ...pvalue, - ]); - return doHash(ensureHash(leaf.hash), data); -} - -export function applyInner( - inner: ics23.IInnerOp, - child: Uint8Array, -): Uint8Array { - if (child.length === 0) { - throw new Error("Inner op needs child value"); - } - const preimage = new Uint8Array([ - ...ensureBytes(inner.prefix), - ...child, - ...ensureBytes(inner.suffix), - ]); - return doHash(ensureHash(inner.hash), preimage); -} - -function ensure(maybe: T | undefined | null, value: T): T { - return maybe === undefined || maybe === null ? value : maybe; -} - -const ensureHash = (h: ics23.HashOp | null | undefined): ics23.HashOp => - ensure(h, ics23.HashOp.NO_HASH); -const ensureLength = (l: ics23.LengthOp | null | undefined): ics23.LengthOp => - ensure(l, ics23.LengthOp.NO_PREFIX); -const ensureBytes = (b: Uint8Array | null | undefined): Uint8Array => - ensure(b, new Uint8Array([])); - -function prepareLeafData( - hashOp: ics23.HashOp, - lengthOp: ics23.LengthOp, - data: Uint8Array, -): Uint8Array { - const h = doHashOrNoop(hashOp, data); - return doLengthOp(lengthOp, h); -} - -// doHashOrNoop will return the preimage untouched if hashOp == NONE, -// otherwise, perform doHash -function doHashOrNoop(hashOp: ics23.HashOp, preimage: Uint8Array): Uint8Array { - if (hashOp === ics23.HashOp.NO_HASH) { - return preimage; - } - return doHash(hashOp, preimage); -} - -// doHash will preform the specified hash on the preimage. -// if hashOp == NONE, it will return an error (use doHashOrNoop if you want different behavior) -export function doHash(hashOp: ics23.HashOp, preimage: Uint8Array): Uint8Array { - switch (hashOp) { - case ics23.HashOp.SHA256: - return sha256(preimage); - case ics23.HashOp.SHA512: - return sha512(preimage); - case ics23.HashOp.RIPEMD160: - return ripemd160(preimage); - case ics23.HashOp.BITCOIN: - return ripemd160(sha256(preimage)); - case ics23.HashOp.SHA512_256: - return sha512_256(preimage); - case ics23.HashOp.BLAKE2B_512: - return blake2b(preimage); - case ics23.HashOp.BLAKE2S_256: - return blake2s(preimage); - case ics23.HashOp.BLAKE3: - return blake3(preimage); - } - throw new Error(`Unsupported hashop: ${hashOp}`); -} - -// doLengthOp will calculate the proper prefix and return it prepended -// doLengthOp(op, data) -> length(data) || data -function doLengthOp(lengthOp: ics23.LengthOp, data: Uint8Array): Uint8Array { - switch (lengthOp) { - case ics23.LengthOp.NO_PREFIX: - return data; - case ics23.LengthOp.VAR_PROTO: - return new Uint8Array([...encodeVarintProto(data.length), ...data]); - case ics23.LengthOp.REQUIRE_32_BYTES: - if (data.length !== 32) { - throw new Error(`Length is ${data.length}, not 32 bytes`); - } - return data; - case ics23.LengthOp.REQUIRE_64_BYTES: - if (data.length !== 64) { - throw new Error(`Length is ${data.length}, not 64 bytes`); - } - return data; - case ics23.LengthOp.FIXED32_LITTLE: - return new Uint8Array([...encodeFixed32Le(data.length), ...data]); - // TODO - // case LengthOp_VAR_RLP: - // case LengthOp_FIXED32_BIG: - // case LengthOp_FIXED64_BIG: - // case LengthOp_FIXED64_LITTLE: - } - throw new Error(`Unsupported lengthop: ${lengthOp}`); -} - -function encodeVarintProto(n: number): Uint8Array { - let enc: readonly number[] = []; - let l = n; - while (l >= 128) { - const b = (l % 128) + 128; - enc = [...enc, b]; - l = l / 128; - } - enc = [...enc, l]; - return new Uint8Array(enc); -} - -function encodeFixed32Le(n: number): Uint8Array { - const enc = new Uint8Array(4); - let l = n; - for (let i = enc.length; i > 0; i--) { - enc[Math.abs(i - enc.length)] = l % 256; - l = Math.floor(l / 256); - } - return enc; -} diff --git a/js/src/proofs.spec.ts b/js/src/proofs.spec.ts deleted file mode 100644 index 462393ff..00000000 --- a/js/src/proofs.spec.ts +++ /dev/null @@ -1,192 +0,0 @@ -import { ics23 } from "./generated/codecimpl"; -import { calculateExistenceRoot, ensureSpec, iavlSpec } from "./proofs"; -import { fromHex, toAscii } from "./testhelpers.spec"; - -describe("calculateExistenceRoot", () => { - it("must have at least one step", () => { - const proof: ics23.IExistenceProof = { - key: toAscii("foo"), - value: toAscii("bar"), - }; - expect(() => calculateExistenceRoot(proof)).toThrow(); - }); - it("executes one leaf step", () => { - const proof: ics23.IExistenceProof = { - key: toAscii("food"), - value: toAscii("some longer text"), - leaf: { - hash: ics23.HashOp.SHA256, - length: ics23.LengthOp.VAR_PROTO, - }, - }; - const expected = fromHex( - "b68f5d298e915ae1753dd333da1f9cf605411a5f2e12516be6758f365e6db265", - ); - expect(calculateExistenceRoot(proof)).toEqual(expected); - }); - it("cannot execute inner first", () => { - const proof: ics23.IExistenceProof = { - key: toAscii("food"), - value: toAscii("some longer text"), - path: [ - { - hash: ics23.HashOp.SHA256, - prefix: fromHex("deadbeef00cafe00"), - }, - ], - }; - expect(() => calculateExistenceRoot(proof)).toThrow(); - }); - it("can execute leaf then inner", () => { - const proof: ics23.IExistenceProof = { - key: toAscii("food"), - value: toAscii("some longer text"), - leaf: { - hash: ics23.HashOp.SHA256, - length: ics23.LengthOp.VAR_PROTO, - }, - // output: b68f5d298e915ae1753dd333da1f9cf605411a5f2e12516be6758f365e6db265 - path: [ - { - hash: ics23.HashOp.SHA256, - prefix: fromHex("deadbeef00cafe00"), - }, - // echo -n deadbeef00cafe00b68f5d298e915ae1753dd333da1f9cf605411a5f2e12516be6758f365e6db265 | xxd -r -p | sha256sum - ], - }; - const expected = fromHex( - "836ea236a6902a665c2a004c920364f24cad52ded20b1e4f22c3179bfe25b2a9", - ); - expect(calculateExistenceRoot(proof)).toEqual(expected); - }); -}); - -describe("ensureSpec", () => { - const validLeaf = iavlSpec.leafSpec; - const invalidLeaf = { - prefix: Uint8Array.from([0]), - hash: ics23.HashOp.SHA512, - prehashValue: ics23.HashOp.NO_HASH, - prehashKey: ics23.HashOp.NO_HASH, - length: ics23.LengthOp.VAR_PROTO, - }; - - const validInner = { - hash: ics23.HashOp.SHA256, - prefix: fromHex("deadbeef00cafe00"), - // suffix: Uint8Array.from([]), - }; - const invalidInner = { - hash: ics23.HashOp.SHA256, - prefix: fromHex("aa"), - }; - const invalidInnerHash = { - hash: ics23.HashOp.SHA512, - prefix: fromHex("deadbeef00cafe00"), - }; - - const depthLimitedSpec = { - leafSpec: iavlSpec.leafSpec, - innerSpec: iavlSpec.innerSpec, - minDepth: 2, - maxDepth: 4, - }; - - it("rejects empty proof", () => { - const proof: ics23.IExistenceProof = { - key: toAscii("foo"), - value: toAscii("bar"), - }; - expect(() => ensureSpec(proof, iavlSpec)).toThrow(); - }); - - it("accepts one valid leaf", () => { - const proof: ics23.IExistenceProof = { - key: toAscii("foo"), - value: toAscii("bar"), - leaf: validLeaf, - }; - // fail if this throws (invalid spec) - ensureSpec(proof, iavlSpec); - }); - - it("rejects invalid leaf", () => { - const proof: ics23.IExistenceProof = { - key: toAscii("foo"), - value: toAscii("bar"), - leaf: invalidLeaf, - }; - expect(() => ensureSpec(proof, iavlSpec)).toThrow(); - }); - - it("rejects inner without leaf", () => { - const proof: ics23.IExistenceProof = { - key: toAscii("foo"), - value: toAscii("bar"), - path: [validInner], - }; - expect(() => ensureSpec(proof, iavlSpec)).toThrow(); - }); - - it("accepts leaf with one inner", () => { - const proof: ics23.IExistenceProof = { - key: toAscii("foo"), - value: toAscii("bar"), - leaf: validLeaf, - path: [validInner], - }; - // fail if this throws (invalid spec) - ensureSpec(proof, iavlSpec); - }); - - it("rejects with invalid inner (prefix)", () => { - const proof: ics23.IExistenceProof = { - key: toAscii("foo"), - value: toAscii("bar"), - leaf: validLeaf, - path: [invalidInner, validInner], - }; - expect(() => ensureSpec(proof, iavlSpec)).toThrow(); - }); - - it("rejects with invalid inner (hash)", () => { - const proof: ics23.IExistenceProof = { - key: toAscii("foo"), - value: toAscii("bar"), - leaf: validLeaf, - path: [validInner, invalidInnerHash], - }; - expect(() => ensureSpec(proof, iavlSpec)).toThrow(); - }); - - it("accepts depth limited with proper number of nodes", () => { - const proof: ics23.IExistenceProof = { - key: toAscii("foo"), - value: toAscii("bar"), - leaf: validLeaf, - path: [validInner, validInner, validInner], - }; - // fail if this throws (invalid spec) - ensureSpec(proof, depthLimitedSpec); - }); - - it("rejects depth limited with too few nodes", () => { - const proof: ics23.IExistenceProof = { - key: toAscii("foo"), - value: toAscii("bar"), - leaf: validLeaf, - path: [validInner], - }; - expect(() => ensureSpec(proof, depthLimitedSpec)).toThrow(); - }); - - it("rejects depth limited with too many nodes", () => { - const proof: ics23.IExistenceProof = { - key: toAscii("foo"), - value: toAscii("bar"), - leaf: validLeaf, - path: [validInner, validInner, validInner, validInner, validInner], - }; - expect(() => ensureSpec(proof, depthLimitedSpec)).toThrow(); - }); -}); diff --git a/js/src/proofs.ts b/js/src/proofs.ts deleted file mode 100644 index 0c668973..00000000 --- a/js/src/proofs.ts +++ /dev/null @@ -1,322 +0,0 @@ -import { ics23 } from "./generated/codecimpl"; -import { applyInner, applyLeaf } from "./ops"; -import { doHash } from "./ops"; -import { - bytesEqual, - ensureBytesBefore, - ensureBytesEqual, - ensureInner, - ensureLeaf, -} from "./specs"; - -export const iavlSpec: ics23.IProofSpec = { - leafSpec: { - prefix: Uint8Array.from([0]), - hash: ics23.HashOp.SHA256, - prehashValue: ics23.HashOp.SHA256, - prehashKey: ics23.HashOp.NO_HASH, - length: ics23.LengthOp.VAR_PROTO, - }, - innerSpec: { - childOrder: [0, 1], - minPrefixLength: 4, - maxPrefixLength: 12, - childSize: 33, - hash: ics23.HashOp.SHA256, - }, -}; - -export const tendermintSpec: ics23.IProofSpec = { - leafSpec: { - prefix: Uint8Array.from([0]), - hash: ics23.HashOp.SHA256, - prehashValue: ics23.HashOp.SHA256, - prehashKey: ics23.HashOp.NO_HASH, - length: ics23.LengthOp.VAR_PROTO, - }, - innerSpec: { - childOrder: [0, 1], - minPrefixLength: 1, - maxPrefixLength: 1, - childSize: 32, - hash: ics23.HashOp.SHA256, - }, -}; - -export const smtSpec: ics23.IProofSpec = { - leafSpec: { - hash: ics23.HashOp.SHA256, - prehashKey: ics23.HashOp.SHA256, - prehashValue: ics23.HashOp.SHA256, - length: ics23.LengthOp.NO_PREFIX, - prefix: Uint8Array.from([0]), - }, - innerSpec: { - childOrder: [0, 1], - childSize: 32, - minPrefixLength: 1, - maxPrefixLength: 1, - emptyChild: new Uint8Array(32), - hash: ics23.HashOp.SHA256, - }, - maxDepth: 256, - prehashKeyBeforeComparison: true, -}; - -export type CommitmentRoot = Uint8Array; - -export function keyForComparison( - spec: ics23.IProofSpec, - key: Uint8Array, -): Uint8Array { - if (!spec.prehashKeyBeforeComparison) { - return key; - } - - return doHash(spec.leafSpec!.prehashKey!, key); -} - -// verifyExistence will throw an error if the proof doesn't link key, value -> root -// or if it doesn't fulfill the spec -export function verifyExistence( - proof: ics23.IExistenceProof, - spec: ics23.IProofSpec, - root: CommitmentRoot, - key: Uint8Array, - value: Uint8Array, -): void { - ensureSpec(proof, spec); - const calc = calculateExistenceRoot(proof); - ensureBytesEqual(calc, root); - ensureBytesEqual(key, proof.key!); - ensureBytesEqual(value, proof.value!); -} - -// Verify does all checks to ensure the proof has valid non-existence proofs, -// and they ensure the given key is not in the CommitmentState, -// throwing an error if there is an issue -export function verifyNonExistence( - proof: ics23.INonExistenceProof, - spec: ics23.IProofSpec, - root: CommitmentRoot, - key: Uint8Array, -): void { - let leftKey: Uint8Array | undefined; - let rightKey: Uint8Array | undefined; - - if (proof.left) { - verifyExistence(proof.left, spec, root, proof.left.key!, proof.left.value!); - leftKey = proof.left.key!; - } - if (proof.right) { - verifyExistence( - proof.right, - spec, - root, - proof.right.key!, - proof.right.value!, - ); - rightKey = proof.right.key!; - } - - if (!leftKey && !rightKey) { - throw new Error("neither left nor right proof defined"); - } - - if (leftKey) { - ensureBytesBefore( - keyForComparison(spec, leftKey), - keyForComparison(spec, key), - ); - } - if (rightKey) { - ensureBytesBefore( - keyForComparison(spec, key), - keyForComparison(spec, rightKey), - ); - } - - if (!spec.innerSpec) { - throw new Error("no inner spec"); - } - if (!leftKey) { - ensureLeftMost(spec.innerSpec, proof.right!.path!); - } else if (!rightKey) { - ensureRightMost(spec.innerSpec, proof.left!.path!); - } else { - ensureLeftNeighbor(spec.innerSpec, proof.left!.path!, proof.right!.path!); - } - return; -} - -// Calculate determines the root hash that matches the given proof. -// You must validate the result is what you have in a header. -// Returns error if the calculations cannot be performed. -export function calculateExistenceRoot( - proof: ics23.IExistenceProof, -): CommitmentRoot { - if (!proof.key || !proof.value) { - throw new Error("Existence proof needs key and value set"); - } - if (!proof.leaf) { - throw new Error("Existence proof must start with a leaf operation"); - } - const path = proof.path || []; - - let res = applyLeaf(proof.leaf, proof.key, proof.value); - for (const inner of path) { - res = applyInner(inner, res); - } - return res; -} - -// ensureSpec throws an Error if proof doesn't fulfill spec -export function ensureSpec( - proof: ics23.IExistenceProof, - spec: ics23.IProofSpec, -): void { - if (!proof.leaf) { - throw new Error("Existence proof must start with a leaf operation"); - } - if (!spec.leafSpec) { - throw new Error("Spec must include leafSpec"); - } - if (!spec.innerSpec) { - throw new Error("Spec must include innerSpec"); - } - ensureLeaf(proof.leaf, spec.leafSpec); - - const path = proof.path || []; - if (spec.minDepth && path.length < spec.minDepth) { - throw new Error(`Too few inner nodes ${path.length}`); - } - if (spec.maxDepth && path.length > spec.maxDepth) { - throw new Error(`Too many inner nodes ${path.length}`); - } - for (const inner of path) { - ensureInner(inner, spec.leafSpec.prefix, spec.innerSpec); - } -} - -function ensureLeftMost( - spec: ics23.IInnerSpec, - path: readonly ics23.IInnerOp[], -): void { - const { minPrefix, maxPrefix, suffix } = getPadding(spec, 0); - - // ensure every step has a prefix and suffix defined to be leftmost - for (const step of path) { - if (!hasPadding(step, minPrefix, maxPrefix, suffix)) { - throw new Error("Step not leftmost"); - } - } -} - -function ensureRightMost( - spec: ics23.IInnerSpec, - path: readonly ics23.IInnerOp[], -): void { - const len = spec.childOrder!.length - 1; - const { minPrefix, maxPrefix, suffix } = getPadding(spec, len); - - // ensure every step has a prefix and suffix defined to be leftmost - for (const step of path) { - if (!hasPadding(step, minPrefix, maxPrefix, suffix)) { - throw new Error("Step not leftmost"); - } - } -} - -export function ensureLeftNeighbor( - spec: ics23.IInnerSpec, - left: readonly ics23.IInnerOp[], - right: readonly ics23.IInnerOp[], -): void { - const mutleft: ics23.IInnerOp[] = [...left]; - const mutright: ics23.IInnerOp[] = [...right]; - - let topleft = mutleft.pop()!; - let topright = mutright.pop()!; - while ( - bytesEqual(topleft.prefix!, topright.prefix!) && - bytesEqual(topleft.suffix!, topright.suffix!) - ) { - topleft = mutleft.pop()!; - topright = mutright.pop()!; - } - - // now topleft and topright are the first divergent nodes - // make sure they are left and right of each other - if (!isLeftStep(spec, topleft, topright)) { - throw new Error(`Not left neightbor at first divergent step`); - } - - // make sure the paths are left and right most possibilities respectively - ensureRightMost(spec, mutleft); - ensureLeftMost(spec, mutright); -} - -// isLeftStep assumes left and right have common parents -// checks if left is exactly one slot to the left of right -function isLeftStep( - spec: ics23.IInnerSpec, - left: ics23.IInnerOp, - right: ics23.IInnerOp, -): boolean { - const leftidx = orderFromPadding(spec, left); - const rightidx = orderFromPadding(spec, right); - return rightidx === leftidx + 1; -} - -function orderFromPadding( - spec: ics23.IInnerSpec, - inner: ics23.IInnerOp, -): number { - for (let branch = 0; branch < spec.childOrder!.length; branch++) { - const { minPrefix, maxPrefix, suffix } = getPadding(spec, branch); - if (hasPadding(inner, minPrefix, maxPrefix, suffix)) { - return branch; - } - } - throw new Error(`Cannot find any valid spacing for this node`); -} - -function hasPadding( - op: ics23.IInnerOp, - minPrefix: number, - maxPrefix: number, - suffix: number, -): boolean { - if ((op.prefix || []).length < minPrefix) { - return false; - } - if ((op.prefix || []).length > maxPrefix) { - return false; - } - return (op.suffix || []).length === suffix; -} - -interface PaddingResult { - readonly minPrefix: number; - readonly maxPrefix: number; - readonly suffix: number; -} -function getPadding(spec: ics23.IInnerSpec, branch: number): PaddingResult { - const idx = getPosition(spec.childOrder!, branch); - - // count how many children are in the prefix - const prefix = idx * spec.childSize!; - const minPrefix = prefix + spec.minPrefixLength!; - const maxPrefix = prefix + spec.maxPrefixLength!; - - // count how many children are in the suffix - const suffix = (spec.childOrder!.length - 1 - idx) * spec.childSize!; - return { minPrefix, maxPrefix, suffix }; -} - -function getPosition(order: readonly number[], branch: number): number { - if (branch < 0 || branch >= order.length) { - throw new Error(`Invalid branch: ${branch}`); - } - return order.findIndex((val) => val === branch); -} diff --git a/js/src/specs.ts b/js/src/specs.ts deleted file mode 100644 index fdea0b95..00000000 --- a/js/src/specs.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { ics23 } from "./generated/codecimpl"; - -export function ensureLeaf(leaf: ics23.ILeafOp, spec: ics23.ILeafOp): void { - if (leaf.hash !== spec.hash) { - throw new Error(`Unexpected hashOp: ${leaf.hash}`); - } - if (leaf.prehashKey !== spec.prehashKey) { - throw new Error(`Unexpected prehashKey: ${leaf.prehashKey}`); - } - if (leaf.prehashValue !== spec.prehashValue) { - throw new Error(`Unexpected prehashValue: ${leaf.prehashValue}`); - } - if (leaf.length !== spec.length) { - throw new Error(`Unexpected length op: ${leaf.length}`); - } - ensurePrefix(leaf.prefix, spec.prefix); -} - -export function ensureInner( - inner: ics23.IInnerOp, - prefix: Uint8Array | null | undefined, - spec: ics23.IInnerSpec, -): void { - if (inner.hash !== spec.hash) { - throw new Error(`Unexpected hashOp: ${inner.hash}`); - } - if (!inner.prefix) { - throw new Error("No prefix set for inner node"); - } - if (hasPrefix(inner.prefix, prefix)) { - throw new Error(`Inner node has leaf prefix`); - } - if (inner.prefix.length < (spec.minPrefixLength || 0)) { - throw new Error(`Prefix too short: ${inner.prefix.length} bytes`); - } - const maxLeftChildBytes = (spec.childOrder!.length - 1) * spec.childSize!; - if (inner.prefix.length > (spec.maxPrefixLength || 0) + maxLeftChildBytes) { - throw new Error(`Prefix too long: ${inner.prefix.length} bytes`); - } -} - -function ensurePrefix( - check?: Uint8Array | null, - prefix?: Uint8Array | null, -): void { - // no prefix supplied, means everything passes - if (!prefix || prefix.length === 0) { - return; - } - if (!check) { - throw new Error(`Target bytes missing`); - } - ensureBytesEqual(prefix, check.slice(0, prefix.length)); -} - -// ensureBytesEqual throws an error if the arrays are different -export function ensureBytesEqual(a: Uint8Array, b: Uint8Array): void { - if (a.length !== b.length) { - throw new Error(`Different lengths ${a.length} vs ${b.length}`); - } - for (let i = 0; i < a.length; i++) { - if (a[i] !== b[i]) { - throw new Error(`Arrays differ at index ${i}: ${a[i]} vs ${b[i]}`); - } - } -} - -export function bytesEqual(a: Uint8Array, b: Uint8Array): boolean { - if (a.length !== b.length) { - return false; - } - for (let i = 0; i < a.length; i++) { - if (a[i] !== b[i]) { - return false; - } - } - return true; -} - -function hasPrefix( - check?: Uint8Array | null, - prefix?: Uint8Array | null, -): boolean { - // no prefix supplied, means everything passes - if (!prefix || prefix.length === 0) { - return false; - } - if (!check) { - return false; - } - if (check.length <= prefix.length) { - return false; - } - for (let i = 0; i < prefix.length; i++) { - if (check[i] !== prefix[i]) { - return false; - } - } - throw true; -} - -// ensureBytesBefore throws an error if first >= last -// we compare byte by byte -export function ensureBytesBefore(first: Uint8Array, last: Uint8Array): void { - if (!bytesBefore(first, last)) { - throw new Error("first is after last"); - } -} - -export function bytesBefore(first: Uint8Array, last: Uint8Array): boolean { - const min = first.length < last.length ? first.length : last.length; - for (let i = 0; i < min; i++) { - if (first[i] < last[i]) { - return true; - } - if (first[i] > last[i]) { - return false; - } - // if they are equal, continue to next step - } - // if they match, ensure that last is longer than first.. - return first.length < last.length; -} diff --git a/js/src/testhelpers.spec.ts b/js/src/testhelpers.spec.ts deleted file mode 100644 index fab44e8b..00000000 --- a/js/src/testhelpers.spec.ts +++ /dev/null @@ -1,34 +0,0 @@ -export function fromHex(hexstring: string): Uint8Array { - if (hexstring.length % 2 !== 0) { - throw new Error("hex string length must be a multiple of 2"); - } - - const listOfInts: number[] = []; - for (let i = 0; i < hexstring.length; i += 2) { - const hexByteAsString = hexstring.substr(i, 2); - if (!hexByteAsString.match(/[0-9a-f]{2}/i)) { - throw new Error("hex string contains invalid characters"); - } - listOfInts.push(parseInt(hexByteAsString, 16)); - } - return new Uint8Array(listOfInts); -} - -export function toAscii(input: string): Uint8Array { - const toNums = (str: string): number[] => - str.split("").map((x: string) => { - const charCode = x.charCodeAt(0); - // 0x00–0x1F control characters - // 0x20–0x7E printable characters - // 0x7F delete character - // 0x80–0xFF out of 7 bit ascii range - if (charCode < 0x20 || charCode > 0x7e) { - throw new Error( - "Cannot encode character that is out of printable ASCII range: " + - charCode, - ); - } - return charCode; - }); - return Uint8Array.from(toNums(input)); -} diff --git a/js/src/testvectors.spec.ts b/js/src/testvectors.spec.ts deleted file mode 100644 index b9a40007..00000000 --- a/js/src/testvectors.spec.ts +++ /dev/null @@ -1,278 +0,0 @@ -import { readFileSync } from "fs"; - -import { compress } from "./compress"; -import { ics23 } from "./generated/codecimpl"; -import { - batchVerifyMembership, - batchVerifyNonMembership, - verifyMembership, - verifyNonMembership, -} from "./ics23"; -import { iavlSpec, smtSpec, tendermintSpec } from "./proofs"; -import { fromHex } from "./testhelpers.spec"; - -describe("calculateExistenceRoot", () => { - interface RefData { - readonly root: Uint8Array; - readonly key: Uint8Array; - readonly value?: Uint8Array; - } - - interface LoadResult { - readonly proof: ics23.ICommitmentProof; - readonly data: RefData; - } - - function loadFile(filepath: string): LoadResult { - const content = readFileSync(filepath).toString(); - const { root, proof, key, value } = JSON.parse(content); - expect(proof).toBeDefined(); - expect(root).toBeDefined(); - expect(key).toBeDefined(); - - const commit = ics23.CommitmentProof.decode(fromHex(proof)); - - const data = { - root: fromHex(root), - key: fromHex(key), - value: value ? fromHex(value) : undefined, - }; - - return { proof: commit, data }; - } - - interface BatchResult { - readonly proof: ics23.ICommitmentProof; - readonly data: readonly RefData[]; - } - - function validateTestVector(filepath: string, spec: ics23.IProofSpec): void { - const { - proof, - data: { root, key, value }, - } = loadFile(filepath); - if (value) { - const valid = verifyMembership(proof, spec, root, key, value); - expect(valid).toBe(true); - } else { - const valid = verifyNonMembership(proof, spec, root, key); - expect(valid).toBe(true); - } - } - - it("should parse iavl left", () => { - validateTestVector("../testdata/iavl/exist_left.json", iavlSpec); - }); - it("should parse iavl right", () => { - validateTestVector("../testdata/iavl/exist_right.json", iavlSpec); - }); - it("should parse iavl middle", () => { - validateTestVector("../testdata/iavl/exist_middle.json", iavlSpec); - }); - it("should parse iavl left - nonexist", () => { - validateTestVector("../testdata/iavl/nonexist_left.json", iavlSpec); - }); - it("should parse iavl right - nonexist", () => { - validateTestVector("../testdata/iavl/nonexist_right.json", iavlSpec); - }); - it("should parse iavl middle - nonexist", () => { - validateTestVector("../testdata/iavl/nonexist_middle.json", iavlSpec); - }); - - it("should parse tendermint left", () => { - validateTestVector( - "../testdata/tendermint/exist_left.json", - tendermintSpec, - ); - }); - it("should parse tendermint right", () => { - validateTestVector( - "../testdata/tendermint/exist_right.json", - tendermintSpec, - ); - }); - it("should parse tendermint middle", () => { - validateTestVector( - "../testdata/tendermint/exist_middle.json", - tendermintSpec, - ); - }); - it("should parse tendermint left - nonexist", () => { - validateTestVector( - "../testdata/tendermint/nonexist_left.json", - tendermintSpec, - ); - }); - it("should parse tendermint right - nonexist", () => { - validateTestVector( - "../testdata/tendermint/nonexist_right.json", - tendermintSpec, - ); - }); - it("should parse tendermint middle - nonexist", () => { - validateTestVector( - "../testdata/tendermint/nonexist_middle.json", - tendermintSpec, - ); - }); - - function loadBatch(files: readonly string[]): BatchResult { - let refs: readonly RefData[] = []; - let entries: readonly ics23.IBatchEntry[] = []; - - for (const file of files) { - const { proof, data } = loadFile(file); - refs = [...refs, data]; - if (proof.exist) { - entries = [...entries, { exist: proof.exist }]; - } else if (proof.nonexist) { - entries = [...entries, { nonexist: proof.nonexist }]; - } - } - const commit: ics23.ICommitmentProof = { - batch: { - entries: entries as ics23.IBatchEntry[], - }, - }; - - return { - proof: commit, - data: refs, - }; - } - - function validateBatch( - proof: ics23.ICommitmentProof, - spec: ics23.IProofSpec, - data: RefData, - ): void { - const { root, key, value } = data; - if (value) { - let valid = verifyMembership(proof, spec, root, key, value); - expect(valid).toBe(true); - const items = new Map([[key, value]]); - valid = batchVerifyMembership(proof, spec, root, items); - expect(valid).toBe(true); - } else { - let valid = verifyNonMembership(proof, spec, root, key); - expect(valid).toBe(true); - const keys: readonly Uint8Array[] = [key]; - valid = batchVerifyNonMembership(proof, spec, root, keys); - expect(valid).toBe(true); - } - } - - it("should validate iavl batch exist", () => { - const { proof, data } = loadBatch([ - "../testdata/iavl/exist_left.json", - "../testdata/iavl/exist_right.json", - "../testdata/iavl/exist_middle.json", - "../testdata/iavl/nonexist_left.json", - "../testdata/iavl/nonexist_right.json", - "../testdata/iavl/nonexist_middle.json", - ]); - validateBatch(proof, iavlSpec, data[0]); - }); - - it("should validate iavl batch nonexist", () => { - const { proof, data } = loadBatch([ - "../testdata/iavl/exist_left.json", - "../testdata/iavl/exist_right.json", - "../testdata/iavl/exist_middle.json", - "../testdata/iavl/nonexist_left.json", - "../testdata/iavl/nonexist_right.json", - "../testdata/iavl/nonexist_middle.json", - ]); - validateBatch(proof, iavlSpec, data[5]); - }); - - it("should validate compressed iavl batch exist", () => { - const { proof, data } = loadBatch([ - "../testdata/iavl/exist_left.json", - "../testdata/iavl/exist_right.json", - "../testdata/iavl/exist_middle.json", - "../testdata/iavl/nonexist_left.json", - "../testdata/iavl/nonexist_right.json", - "../testdata/iavl/nonexist_middle.json", - ]); - const small = compress(proof); - - // ensure this is actually a different format - const origBin = ics23.CommitmentProof.encode(proof).finish(); - const origBin2 = ics23.CommitmentProof.encode(proof).finish(); - const smallBin = ics23.CommitmentProof.encode(small).finish(); - expect(origBin).toEqual(origBin2); - expect(origBin).not.toEqual(smallBin); - - validateBatch(small, iavlSpec, data[0]); - }); - - it("should validate compressed iavl batch nonexist", () => { - const { proof, data } = loadBatch([ - "../testdata/iavl/exist_left.json", - "../testdata/iavl/exist_right.json", - "../testdata/iavl/exist_middle.json", - "../testdata/iavl/nonexist_left.json", - "../testdata/iavl/nonexist_right.json", - "../testdata/iavl/nonexist_middle.json", - ]); - const small = compress(proof); - - // ensure this is actually a different format - const origBin = ics23.CommitmentProof.encode(proof).finish(); - const origBin2 = ics23.CommitmentProof.encode(proof).finish(); - const smallBin = ics23.CommitmentProof.encode(small).finish(); - expect(origBin).toEqual(origBin2); - expect(origBin).not.toEqual(smallBin); - - validateBatch(small, iavlSpec, data[5]); - }); - - it("should validate tendermint batch exist", () => { - const { proof, data } = loadBatch([ - "../testdata/tendermint/exist_left.json", - "../testdata/tendermint/exist_right.json", - "../testdata/tendermint/exist_middle.json", - "../testdata/tendermint/nonexist_left.json", - "../testdata/tendermint/nonexist_right.json", - "../testdata/tendermint/nonexist_middle.json", - ]); - validateBatch(proof, tendermintSpec, data[2]); - }); - - it("should validate tendermint batch nonexist", () => { - const { proof, data } = loadBatch([ - "../testdata/tendermint/exist_left.json", - "../testdata/tendermint/exist_right.json", - "../testdata/tendermint/exist_middle.json", - "../testdata/tendermint/nonexist_left.json", - "../testdata/tendermint/nonexist_right.json", - "../testdata/tendermint/nonexist_middle.json", - ]); - validateBatch(proof, tendermintSpec, data[3]); - }); - - it("should validate smt batch exist", () => { - const { proof, data } = loadBatch([ - "../testdata/smt/exist_left.json", - "../testdata/smt/exist_right.json", - "../testdata/smt/exist_middle.json", - "../testdata/smt/nonexist_left.json", - "../testdata/smt/nonexist_right.json", - "../testdata/smt/nonexist_middle.json", - ]); - validateBatch(proof, smtSpec, data[2]); - }); - - it("should validate smt batch nonexist", () => { - const { proof, data } = loadBatch([ - "../testdata/smt/exist_left.json", - "../testdata/smt/exist_right.json", - "../testdata/smt/exist_middle.json", - "../testdata/smt/nonexist_left.json", - "../testdata/smt/nonexist_right.json", - "../testdata/smt/nonexist_middle.json", - ]); - validateBatch(proof, smtSpec, data[3]); - }); -}); diff --git a/js/tsconfig.json b/js/tsconfig.json deleted file mode 100644 index f28b37bf..00000000 --- a/js/tsconfig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": ".", - "outDir": "build", - // "declarationDir": "build/types", - "rootDir": "src", - "declaration": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "module": "commonjs", - "moduleResolution": "node", - "newLine": "LF", - "noEmitOnError": true, - "noFallthroughCasesInSwitch": true, - "noImplicitReturns": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "pretty": true, - "removeComments": false, - "sourceMap": true, - "strict": true, - "target": "es2017", - "lib": ["es2017"], - "typeRoots": [ - "./node_modules/@types", - ] - }, - "include": [ - "src/**/*" - ] -} diff --git a/js/yarn.lock b/js/yarn.lock deleted file mode 100644 index 21c6df78..00000000 --- a/js/yarn.lock +++ /dev/null @@ -1,2925 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== - dependencies: - "@babel/highlight" "^7.24.7" - picocolors "^1.0.0" - -"@babel/compat-data@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed" - integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== - -"@babel/core@^7.23.9": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.7.tgz#b676450141e0b52a3d43bc91da86aa608f950ac4" - integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.7" - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helpers" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/template" "^7.24.7" - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d" - integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== - dependencies: - "@babel/types" "^7.24.7" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - -"@babel/helper-compilation-targets@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9" - integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== - dependencies: - "@babel/compat-data" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-environment-visitor@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" - integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-function-name@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" - integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-hoist-variables@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" - integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-module-imports@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" - integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-module-transforms@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz#31b6c9a2930679498db65b685b1698bfd6c7daf8" - integrity sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-simple-access" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - -"@babel/helper-simple-access@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" - integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-split-export-declaration@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" - integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-string-parser@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" - integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== - -"@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== - -"@babel/helper-validator-option@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6" - integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw== - -"@babel/helpers@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.7.tgz#aa2ccda29f62185acb5d42fb4a3a1b1082107416" - integrity sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/highlight@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.7" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.23.9", "@babel/parser@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" - integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== - -"@babel/template@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" - integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/traverse@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5" - integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.7" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-hoist-variables" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/types" "^7.24.7" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" - integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== - dependencies: - "@babel/helper-string-parser" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - to-fast-properties "^2.0.0" - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== - -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" - integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.21" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.21.tgz#5dc1df7b3dc4a6209e503a924e1ca56097a2bb15" - integrity sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@noble/hashes@^1.0.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" - integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@types/jasmine@^5.1.1": - version "5.1.4" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-5.1.4.tgz#0de3f6ca753e10d1600ce1864ae42cfd47cf9924" - integrity sha512-px7OMFO/ncXxixDe1zR13V1iycqWae0MxTaw62RpFlksUi5QuNWgQJFkTQjIOvrmutJbI7Fp2Y2N1F6D2R4G6w== - -"@types/json-schema@^7.0.12": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/node@>=13.7.0": - version "20.11.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.5.tgz#be10c622ca7fcaa3cf226cf80166abc31389d86e" - integrity sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w== - dependencies: - undici-types "~5.26.4" - -"@types/semver@^7.5.0": - version "7.5.6" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" - integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== - -"@typescript-eslint/eslint-plugin@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.0.0.tgz#62cda0d35bbf601683c6e58cf5d04f0275caca4e" - integrity sha512-M72SJ0DkcQVmmsbqlzc6EJgb/3Oz2Wdm6AyESB4YkGgCxP8u5jt5jn4/OBMPK3HLOxcttZq5xbBBU7e2By4SZQ== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "7.0.0" - "@typescript-eslint/type-utils" "7.0.0" - "@typescript-eslint/utils" "7.0.0" - "@typescript-eslint/visitor-keys" "7.0.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@^6.9.1": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== - dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - -"@typescript-eslint/scope-manager@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.0.0.tgz#15ea9abad2b56fc8f5c0b516775f41c86c5c8685" - integrity sha512-IxTStwhNDPO07CCrYuAqjuJ3Xf5MrMaNgbAZPxFXAUpAtwqFxiuItxUaVtP/SJQeCdJjwDGh9/lMOluAndkKeg== - dependencies: - "@typescript-eslint/types" "7.0.0" - "@typescript-eslint/visitor-keys" "7.0.0" - -"@typescript-eslint/type-utils@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.0.0.tgz#a4c7ae114414e09dbbd3c823b5924793f7483252" - integrity sha512-FIM8HPxj1P2G7qfrpiXvbHeHypgo2mFpFGoh5I73ZlqmJOsloSa1x0ZyXCer43++P1doxCgNqIOLqmZR6SOT8g== - dependencies: - "@typescript-eslint/typescript-estree" "7.0.0" - "@typescript-eslint/utils" "7.0.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== - -"@typescript-eslint/types@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.0.0.tgz#2e5889c7fe3c873fc6dc6420aa77775f17cd5dc6" - integrity sha512-9ZIJDqagK1TTs4W9IyeB2sH/s1fFhN9958ycW8NRTg1vXGzzH5PQNzq6KbsbVGMT+oyyfa17DfchHDidcmf5cg== - -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/typescript-estree@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.0.0.tgz#7ce66f2ce068517f034f73fba9029300302fdae9" - integrity sha512-JzsOzhJJm74aQ3c9um/aDryHgSHfaX8SHFIu9x4Gpik/+qxLvxUylhTsO9abcNu39JIdhY2LgYrFxTii3IajLA== - dependencies: - "@typescript-eslint/types" "7.0.0" - "@typescript-eslint/visitor-keys" "7.0.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.0.0.tgz#e43710af746c6ae08484f7afc68abc0212782c7e" - integrity sha512-kuPZcPAdGcDBAyqDn/JVeJVhySvpkxzfXjJq1X1BFSTYo1TTuo4iyb937u457q4K0In84p6u2VHQGaFnv7VYqg== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "7.0.0" - "@typescript-eslint/types" "7.0.0" - "@typescript-eslint/typescript-estree" "7.0.0" - semver "^7.5.4" - -"@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== - dependencies: - "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" - -"@typescript-eslint/visitor-keys@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.0.0.tgz#83cdadd193ee735fe9ea541f6a2b4d76dfe62081" - integrity sha512-JZP0uw59PRHp7sHQl3aF/lFgwOW2rgNVnXUksj1d932PMita9wFBd3621vHQRDvHwPsSY9FMAAHVc8gTvLYY4w== - dependencies: - "@typescript-eslint/types" "7.0.0" - eslint-visitor-keys "^3.4.1" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -append-transform@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" - integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== - dependencies: - default-require-extensions "^3.0.0" - -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== - dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" - -array-includes@^3.1.7: - version "3.1.7" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" - integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.findlastindex@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" - integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" - -array.prototype.flat@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" - integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -arraybuffer.prototype.slice@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" - integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-array-buffer "^3.0.2" - is-shared-array-buffer "^1.0.2" - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -browserslist@^4.22.2: - version "4.22.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" - integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== - dependencies: - caniuse-lite "^1.0.30001565" - electron-to-chromium "^1.4.601" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -caching-transform@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" - integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== - dependencies: - hasha "^5.0.0" - make-dir "^3.0.0" - package-hash "^4.0.0" - write-file-atomic "^3.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" - integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== - dependencies: - function-bind "^1.1.2" - get-intrinsic "^1.2.1" - set-function-length "^1.1.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-lite@^1.0.30001565: - version "1.0.30001579" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz#45c065216110f46d6274311a4b3fcf6278e0852a" - integrity sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA== - -chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -ci-info@^1.4.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== - dependencies: - restore-cursor "^2.0.0" - -cli-spinners@^2.0.0: - version "2.9.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -default-require-extensions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.1.tgz#bfae00feeaeada68c2ae256c62540f60b80625bd" - integrity sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw== - dependencies: - strip-bom "^4.0.0" - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -define-data-property@^1.0.1, define-data-property@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" - integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== - dependencies: - get-intrinsic "^1.2.1" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - -define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -electron-to-chromium@^1.4.601: - version "1.4.637" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.637.tgz#ed8775cf5e0c380c3e8452e9818a0e4b7a671ac4" - integrity sha512-G7j3UCOukFtxVO1vWrPQUoDk3kL70mtvjc/DC/k2o7lE0wAdq+Vwp1ipagOow+BH0uVztFysLWbkM/RTIrbK3w== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -es-abstract@^1.22.1: - version "1.22.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" - integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== - dependencies: - array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.2" - available-typed-arrays "^1.0.5" - call-bind "^1.0.5" - es-set-tostringtag "^2.0.1" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.2" - get-symbol-description "^1.0.0" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-typed-array "^1.1.12" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - safe-array-concat "^1.0.1" - safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.8" - string.prototype.trimend "^1.0.7" - string.prototype.trimstart "^1.0.7" - typed-array-buffer "^1.0.0" - typed-array-byte-length "^1.0.0" - typed-array-byte-offset "^1.0.0" - typed-array-length "^1.0.4" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.13" - -es-set-tostringtag@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" - integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== - dependencies: - get-intrinsic "^1.2.2" - has-tostringtag "^1.0.0" - hasown "^2.0.0" - -es-shim-unscopables@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - dependencies: - hasown "^2.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-error@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-import-resolver-node@^0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" - -eslint-module-utils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" - integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== - dependencies: - debug "^3.2.7" - -eslint-plugin-import@^2.25.4: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== - dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.7" - object.groupby "^1.0.1" - object.values "^1.1.7" - semver "^6.3.1" - tsconfig-paths "^3.15.0" - -eslint-plugin-prettier@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz#d1c8f972d8f60e414c25465c163d16f209411f95" - integrity sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.9.1" - -eslint-plugin-simple-import-sort@^12.0.0: - version "12.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz#e64bfdaf91c5b98a298619aa634a9f7aa43b709e" - integrity sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA== - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.8.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.16.0.tgz#83b9a9375692db77a822df081edb6a9cf6839320" - integrity sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA== - dependencies: - reusify "^1.0.4" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -find-cache-dir@^3.2.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -foreground-child@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" - integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^3.0.2" - -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -fromentries@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" - integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - -functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" - integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== - dependencies: - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^10.2.2: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - -glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.1.15: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== - dependencies: - get-intrinsic "^1.2.2" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -hasha@^5.0.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" - integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== - dependencies: - is-stream "^2.0.0" - type-fest "^0.8.0" - -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== - dependencies: - function-bind "^1.1.2" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -ignore@^5.2.0, ignore@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -internal-slot@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" - integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== - dependencies: - get-intrinsic "^1.2.2" - hasown "^2.0.0" - side-channel "^1.0.4" - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.13.0, is-core-module@^2.13.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: - version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== - dependencies: - which-typed-array "^1.1.11" - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-hook@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" - integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== - dependencies: - append-transform "^2.0.0" - -istanbul-lib-instrument@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#91655936cf7380e4e473383081e38478b69993b1" - integrity sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw== - dependencies: - "@babel/core" "^7.23.9" - "@babel/parser" "^7.23.9" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-processinfo@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz#366d454cd0dcb7eb6e0e419378e60072c8626169" - integrity sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg== - dependencies: - archy "^1.0.0" - cross-spawn "^7.0.3" - istanbul-lib-coverage "^3.2.0" - p-map "^3.0.0" - rimraf "^3.0.0" - uuid "^8.3.2" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2: - version "3.1.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" - integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jackspeak@2.1.1, jackspeak@^2.3.5: - version "2.1.1" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.1.1.tgz#2a42db4cfbb7e55433c28b6f75d8b796af9669cd" - integrity sha512-juf9stUEwUaILepraGOWIJTLwg48bUnBmRqd2ln2Os1sW987zeoj/hzhbvRB95oMuS2ZTpjULmdwHNX4rzZIZw== - dependencies: - cliui "^8.0.1" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jasmine-console-reporter@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/jasmine-console-reporter/-/jasmine-console-reporter-3.1.0.tgz#f9cd9903b690cb70428d022a56cd48c5f5a61f41" - integrity sha512-fNP6XlgkIyNvfr6JVMJudZL9qWNY2K7l934Ojj4k8J09/QXf4xYf2Mc7MUgcsDhqIb2zTkLd2LsBJWFvJz41/w== - dependencies: - ansi-styles "^3.2.1" - chalk "^2.4.1" - ci-info "^1.4.0" - node-emoji "^1.8.1" - ora "^3.0.0" - perfy "^1.1.5" - -jasmine-core@~5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-5.2.0.tgz#7d0aa4c26cb3dbaed201d0505489baf1e48faeca" - integrity sha512-tSAtdrvWybZkQmmaIoDgnvHG8ORUNw5kEVlO5CvrXj02Jjr9TZrmjFq7FUiOUzJiOP2wLGYT6PgrQgQF4R1xiw== - -jasmine@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-5.2.0.tgz#caa318ac1ccf966b2768e092137337621cdd3ca9" - integrity sha512-il+noV96N1BGU9/FMmc8QtAMxC8lPnXUiAvgb0o9MDZATRdxglTQe9wo6UdL049ropQL6MopDYwDlludKR6wJQ== - dependencies: - glob "^10.2.2" - jasmine-core "~5.2.0" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - -long@^5.0.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" - integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -"lru-cache@^9.1.1 || ^10.0.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" - integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== - -make-dir@^3.0.0, make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -minimatch@9.0.3, minimatch@^9.0.1: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -node-emoji@^1.8.1: - version "1.11.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" - integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== - dependencies: - lodash "^4.17.21" - -node-preload@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" - integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== - dependencies: - process-on-spawn "^1.0.0" - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -nyc@^17.0.0: - version "17.0.0" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-17.0.0.tgz#d8943407584242a448a70290b15bb72207fac9fd" - integrity sha512-ISp44nqNCaPugLLGGfknzQwSwt10SSS5IMoPR7GLoMAyS18Iw5js8U7ga2VF9lYuMZ42gOHr3UddZw4WZltxKg== - dependencies: - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - caching-transform "^4.0.0" - convert-source-map "^1.7.0" - decamelize "^1.2.0" - find-cache-dir "^3.2.0" - find-up "^4.1.0" - foreground-child "^2.0.0" - get-package-type "^0.1.0" - glob "^7.1.6" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-hook "^3.0.0" - istanbul-lib-instrument "^6.0.2" - istanbul-lib-processinfo "^2.0.2" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - make-dir "^3.0.0" - node-preload "^0.2.1" - p-map "^3.0.0" - process-on-spawn "^1.0.0" - resolve-from "^5.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - spawn-wrap "^2.0.0" - test-exclude "^6.0.0" - yargs "^15.0.2" - -object-inspect@^1.13.1, object-inspect@^1.9.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.4: - version "4.1.5" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" - integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.fromentries@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" - integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.groupby@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" - integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - -object.values@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" - integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== - dependencies: - mimic-fn "^1.0.0" - -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - -ora@^3.0.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" - integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== - dependencies: - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-spinners "^2.0.0" - log-symbols "^2.2.0" - strip-ansi "^5.2.0" - wcwidth "^1.0.1" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-hash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" - integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== - dependencies: - graceful-fs "^4.1.15" - hasha "^5.0.0" - lodash.flattendeep "^4.4.0" - release-zalgo "^1.0.0" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== - dependencies: - lru-cache "^9.1.1 || ^10.0.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -perfy@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/perfy/-/perfy-1.1.5.tgz#0d629f870a34a3eb1866d3db485d2b3faef29e4b" - integrity sha512-/ieVBpMaPTJf83YTUl2TImsSwMEJ23qGP2w27pE6aX+NrB/ZRGqOnQZpl7J719yFwd+ebDiHguPNFeMSamyK7w== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^3.0.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" - integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== - -process-on-spawn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" - integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg== - dependencies: - fromentries "^1.2.0" - -protobufjs@^7.2.5: - version "7.3.2" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.2.tgz#60f3b7624968868f6f739430cfbc8c9370e26df4" - integrity sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -regexp.prototype.flags@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" - integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - set-function-name "^2.0.0" - -release-zalgo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" - integrity sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA== - dependencies: - es6-error "^4.0.1" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve@^1.1.6, resolve@^1.22.4: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-array-concat@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" - integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== - dependencies: - call-bind "^1.0.5" - get-intrinsic "^1.2.2" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-regex-test@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.2.tgz#3ba32bdb3ea35f940ee87e5087c60ee786c3f6c5" - integrity sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ== - dependencies: - call-bind "^1.0.5" - get-intrinsic "^1.2.2" - is-regex "^1.1.4" - -semver@^6.0.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.5.3, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-function-length@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.0.tgz#2f81dc6c16c7059bda5ab7c82c11f03a515ed8e1" - integrity sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w== - dependencies: - define-data-property "^1.1.1" - function-bind "^1.1.2" - get-intrinsic "^1.2.2" - gopd "^1.0.1" - has-property-descriptors "^1.0.1" - -set-function-name@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" - integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== - dependencies: - define-data-property "^1.0.1" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shelljs@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -shx@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.4.tgz#74289230b4b663979167f94e1935901406e40f02" - integrity sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g== - dependencies: - minimist "^1.2.3" - shelljs "^0.8.5" - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.2: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-support@^0.5.16: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spawn-wrap@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" - integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== - dependencies: - foreground-child "^2.0.0" - is-windows "^1.0.2" - make-dir "^3.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - which "^2.0.1" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.prototype.trim@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" - integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string.prototype.trimend@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" - integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string.prototype.trimstart@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" - integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -synckit@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.1.tgz#febbfbb6649979450131f64735aa3f6c14575c88" - integrity sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A== - dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -ts-api-utils@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" - integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== - -tsconfig-paths@^3.15.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" - integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.8.0: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -typed-array-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" - integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - is-typed-array "^1.1.10" - -typed-array-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" - integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -typed-array-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" - integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - is-typed-array "^1.1.9" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typescript@~5.5: - version "5.5.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" - integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" - integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== - -which-typed-array@^1.1.11, which-typed-array@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" - integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.4" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^15.0.2: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - 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" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/sonar-project.properties b/sonar-project.properties index 3044ca15..759458b0 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -9,7 +9,6 @@ sonar.exclusions=**/*_test.go,**/testdata/**,scripts/**,rust/**, sonar.tests=. sonar.test.inclusions=**/*_test.go,**/testdata/** sonar.go.coverage.reportPaths=go/coverage.txt -sonar.javascript.lcov.reportPaths=js/coverage/lcov.info sonar.python.version=3 sonar.sourceEncoding=UTF-8