From 5ef6d0a5b8b552ddaa865d10787b06e2cdc21234 Mon Sep 17 00:00:00 2001 From: maayan Date: Fri, 9 Jun 2023 10:16:29 -0400 Subject: [PATCH] initialize sdk_v2 add aptos config add aptos config support new client implement new client support and use post request create types folder add gitignore add utils folder add openapi generated types add types folder add transactions folder add crypto folder add bcs folder add api folder add account folder move files location export aptos api error class export files modify tests install openapi and modify build commands --- ecosystem/typescript/sdk_v2/.eslintignore | 3 + ecosystem/typescript/sdk_v2/.eslintrc.js | 36 + ecosystem/typescript/sdk_v2/.gitignore | 17 + ecosystem/typescript/sdk_v2/.npmignore | 5 + ecosystem/typescript/sdk_v2/.nvmrc | 1 + ecosystem/typescript/sdk_v2/.prettierignore | 2 + ecosystem/typescript/sdk_v2/.versionrc.json | 19 + ecosystem/typescript/sdk_v2/LICENSE | 201 + ecosystem/typescript/sdk_v2/SPEC.md | 223 + ecosystem/typescript/sdk_v2/jest.config.js | 20 + ecosystem/typescript/sdk_v2/package.json | 66 + ecosystem/typescript/sdk_v2/pnpm-lock.yaml | 7263 +++++++++++++++++ .../sdk_v2/src/account/account_address.ts | 103 + .../sdk_v2/src/account/aptos_account.ts | 191 + .../typescript/sdk_v2/src/account/index.ts | 2 + .../typescript/sdk_v2/src/api/account.ts | 129 + ecosystem/typescript/sdk_v2/src/api/aptos.ts | 34 + .../typescript/sdk_v2/src/api/aptos_config.ts | 16 + .../typescript/sdk_v2/src/api/general.ts | 82 + ecosystem/typescript/sdk_v2/src/api/index.ts | 4 + ecosystem/typescript/sdk_v2/src/bcs/consts.ts | 12 + .../typescript/sdk_v2/src/bcs/deserializer.ts | 188 + ecosystem/typescript/sdk_v2/src/bcs/helper.ts | 112 + .../typescript/sdk_v2/src/bcs/identifier.ts | 18 + ecosystem/typescript/sdk_v2/src/bcs/index.ts | 8 + .../typescript/sdk_v2/src/bcs/serializer.ts | 240 + ecosystem/typescript/sdk_v2/src/bcs/types.ts | 13 + .../typescript/sdk_v2/src/client/core.ts | 74 + ecosystem/typescript/sdk_v2/src/client/get.ts | 15 + .../typescript/sdk_v2/src/client/index.ts | 3 + .../typescript/sdk_v2/src/client/post.ts | 15 + .../typescript/sdk_v2/src/client/types.ts | 97 + .../sdk_v2/src/crypto/authentication_key.ts | 73 + .../sdk_v2/src/crypto/authenticator.ts | 153 + .../typescript/sdk_v2/src/crypto/ed25519.ts | 49 + .../typescript/sdk_v2/src/crypto/index.ts | 4 + .../sdk_v2/src/crypto/multi_ed25519.ts | 158 + ecosystem/typescript/sdk_v2/src/index.ts | 9 + .../typescript/sdk_v2/src/internal/account.ts | 106 + .../typescript/sdk_v2/src/internal/general.ts | 68 + .../sdk_v2/src/internal/transaction.ts | 13 + .../sdk_v2/src/types/generated/index.ts | 101 + .../src/types/generated/models/AccountData.ts | 17 + .../generated/models/AccountSignature.ts | 17 + .../AccountSignature_Ed25519Signature.ts | 10 + .../AccountSignature_MultiEd25519Signature.ts | 10 + .../src/types/generated/models/Address.ts | 14 + .../src/types/generated/models/AptosError.ts | 22 + .../types/generated/models/AptosErrorCode.ts | 31 + .../src/types/generated/models/Block.ts | 26 + .../models/BlockMetadataTransaction.ts | 55 + .../generated/models/DecodedTableData.ts | 26 + .../types/generated/models/DeleteModule.ts | 19 + .../types/generated/models/DeleteResource.ts | 19 + .../types/generated/models/DeleteTableItem.ts | 17 + .../generated/models/DeletedTableData.ts | 18 + .../types/generated/models/DirectWriteSet.ts | 12 + .../generated/models/Ed25519Signature.ts | 13 + .../models/EncodeSubmissionRequest.ts | 24 + .../types/generated/models/EntryFunctionId.ts | 13 + .../generated/models/EntryFunctionPayload.ts | 22 + .../src/types/generated/models/Event.ts | 21 + .../src/types/generated/models/EventGuid.ts | 12 + .../types/generated/models/GasEstimation.ts | 22 + .../types/generated/models/GenesisPayload.ts | 11 + .../models/GenesisPayload_WriteSetPayload.ts | 10 + .../generated/models/GenesisTransaction.ts | 42 + .../src/types/generated/models/HashValue.ts | 5 + .../generated/models/HealthCheckSuccess.ts | 11 + .../types/generated/models/HexEncodedBytes.ts | 12 + .../generated/models/IdentifierWrapper.ts | 5 + .../types/generated/models/IndexResponse.ts | 30 + .../generated/models/ModuleBundlePayload.ts | 10 + .../src/types/generated/models/MoveAbility.ts | 5 + .../types/generated/models/MoveFunction.ts | 37 + .../models/MoveFunctionGenericTypeParam.ts | 16 + .../models/MoveFunctionVisibility.ts | 12 + .../src/types/generated/models/MoveModule.ts | 30 + .../generated/models/MoveModuleBytecode.ts | 15 + .../types/generated/models/MoveModuleId.ts | 15 + .../types/generated/models/MoveResource.ts | 15 + .../generated/models/MoveScriptBytecode.ts | 15 + .../src/types/generated/models/MoveStruct.ts | 32 + .../types/generated/models/MoveStructField.ts | 15 + .../models/MoveStructGenericTypeParam.ts | 16 + .../types/generated/models/MoveStructTag.ts | 24 + .../types/generated/models/MoveStructValue.ts | 49 + .../src/types/generated/models/MoveType.ts | 34 + .../src/types/generated/models/MoveValue.ts | 16 + .../generated/models/MultiAgentSignature.ts | 24 + .../generated/models/MultiEd25519Signature.ts | 27 + .../types/generated/models/MultisigPayload.ts | 16 + .../models/MultisigTransactionPayload.ts | 8 + .../generated/models/PendingTransaction.ts | 24 + .../generated/models/RawTableItemRequest.ts | 13 + .../src/types/generated/models/RoleType.ts | 8 + .../types/generated/models/ScriptPayload.ts | 22 + .../types/generated/models/ScriptWriteSet.ts | 12 + .../models/StateCheckpointTransaction.ts | 34 + .../types/generated/models/StateKeyWrapper.ts | 9 + .../models/SubmitTransactionRequest.ts | 24 + .../generated/models/TableItemRequest.ts | 18 + .../src/types/generated/models/Transaction.ts | 15 + .../generated/models/TransactionPayload.ts | 14 + ...TransactionPayload_EntryFunctionPayload.ts | 10 + .../TransactionPayload_ModuleBundlePayload.ts | 10 + .../TransactionPayload_MultisigPayload.ts | 10 + .../TransactionPayload_ScriptPayload.ts | 10 + .../generated/models/TransactionSignature.ts | 13 + .../TransactionSignature_Ed25519Signature.ts | 10 + ...ransactionSignature_MultiAgentSignature.ts | 10 + ...nsactionSignature_MultiEd25519Signature.ts | 10 + .../Transaction_BlockMetadataTransaction.ts | 10 + .../models/Transaction_GenesisTransaction.ts | 10 + .../models/Transaction_PendingTransaction.ts | 10 + .../Transaction_StateCheckpointTransaction.ts | 10 + .../models/Transaction_UserTransaction.ts | 10 + ...ransactionsBatchSingleSubmissionFailure.ts | 17 + .../TransactionsBatchSubmissionResult.ts | 18 + .../sdk_v2/src/types/generated/models/U128.ts | 12 + .../sdk_v2/src/types/generated/models/U256.ts | 12 + .../sdk_v2/src/types/generated/models/U64.ts | 12 + .../types/generated/models/UserTransaction.ts | 49 + .../types/generated/models/VersionedEvent.ts | 22 + .../src/types/generated/models/ViewRequest.ts | 22 + .../src/types/generated/models/WriteModule.ts | 19 + .../types/generated/models/WriteResource.ts | 19 + .../src/types/generated/models/WriteSet.ts | 12 + .../types/generated/models/WriteSetChange.ts | 16 + .../models/WriteSetChange_DeleteModule.ts | 10 + .../models/WriteSetChange_DeleteResource.ts | 10 + .../models/WriteSetChange_DeleteTableItem.ts | 10 + .../models/WriteSetChange_WriteModule.ts | 10 + .../models/WriteSetChange_WriteResource.ts | 10 + .../models/WriteSetChange_WriteTableItem.ts | 10 + .../types/generated/models/WriteSetPayload.ts | 13 + .../models/WriteSet_DirectWriteSet.ts | 10 + .../models/WriteSet_ScriptWriteSet.ts | 10 + .../types/generated/models/WriteTableItem.ts | 18 + .../typescript/sdk_v2/src/types/index.ts | 1 + .../sdk_v2/src/utils/api-endpoints.ts | 28 + .../typescript/sdk_v2/src/utils/const.ts | 13 + .../typescript/sdk_v2/src/utils/hd-key.ts | 79 + .../typescript/sdk_v2/src/utils/helpers.ts | 43 + .../typescript/sdk_v2/src/utils/hex_string.ts | 122 + .../typescript/sdk_v2/src/utils/index.ts | 7 + .../sdk_v2/src/utils/memoize-decorator.ts | 151 + .../sdk_v2/src/utils/pagination_helpers.ts | 44 + ecosystem/typescript/sdk_v2/src/version.ts | 2 + ecosystem/typescript/sdk_v2/tsconfig.json | 32 + ecosystem/typescript/sdk_v2/tsup.config.js | 8 + 151 files changed, 12140 insertions(+) create mode 100644 ecosystem/typescript/sdk_v2/.eslintignore create mode 100644 ecosystem/typescript/sdk_v2/.eslintrc.js create mode 100644 ecosystem/typescript/sdk_v2/.gitignore create mode 100644 ecosystem/typescript/sdk_v2/.npmignore create mode 100644 ecosystem/typescript/sdk_v2/.nvmrc create mode 100644 ecosystem/typescript/sdk_v2/.prettierignore create mode 100644 ecosystem/typescript/sdk_v2/.versionrc.json create mode 100644 ecosystem/typescript/sdk_v2/LICENSE create mode 100644 ecosystem/typescript/sdk_v2/SPEC.md create mode 100644 ecosystem/typescript/sdk_v2/jest.config.js create mode 100644 ecosystem/typescript/sdk_v2/package.json create mode 100644 ecosystem/typescript/sdk_v2/pnpm-lock.yaml create mode 100644 ecosystem/typescript/sdk_v2/src/account/account_address.ts create mode 100644 ecosystem/typescript/sdk_v2/src/account/aptos_account.ts create mode 100644 ecosystem/typescript/sdk_v2/src/account/index.ts create mode 100644 ecosystem/typescript/sdk_v2/src/api/account.ts create mode 100644 ecosystem/typescript/sdk_v2/src/api/aptos.ts create mode 100644 ecosystem/typescript/sdk_v2/src/api/aptos_config.ts create mode 100644 ecosystem/typescript/sdk_v2/src/api/general.ts create mode 100644 ecosystem/typescript/sdk_v2/src/api/index.ts create mode 100644 ecosystem/typescript/sdk_v2/src/bcs/consts.ts create mode 100644 ecosystem/typescript/sdk_v2/src/bcs/deserializer.ts create mode 100644 ecosystem/typescript/sdk_v2/src/bcs/helper.ts create mode 100644 ecosystem/typescript/sdk_v2/src/bcs/identifier.ts create mode 100644 ecosystem/typescript/sdk_v2/src/bcs/index.ts create mode 100644 ecosystem/typescript/sdk_v2/src/bcs/serializer.ts create mode 100644 ecosystem/typescript/sdk_v2/src/bcs/types.ts create mode 100644 ecosystem/typescript/sdk_v2/src/client/core.ts create mode 100644 ecosystem/typescript/sdk_v2/src/client/get.ts create mode 100644 ecosystem/typescript/sdk_v2/src/client/index.ts create mode 100644 ecosystem/typescript/sdk_v2/src/client/post.ts create mode 100644 ecosystem/typescript/sdk_v2/src/client/types.ts create mode 100644 ecosystem/typescript/sdk_v2/src/crypto/authentication_key.ts create mode 100644 ecosystem/typescript/sdk_v2/src/crypto/authenticator.ts create mode 100644 ecosystem/typescript/sdk_v2/src/crypto/ed25519.ts create mode 100644 ecosystem/typescript/sdk_v2/src/crypto/index.ts create mode 100644 ecosystem/typescript/sdk_v2/src/crypto/multi_ed25519.ts create mode 100644 ecosystem/typescript/sdk_v2/src/index.ts create mode 100644 ecosystem/typescript/sdk_v2/src/internal/account.ts create mode 100644 ecosystem/typescript/sdk_v2/src/internal/general.ts create mode 100644 ecosystem/typescript/sdk_v2/src/internal/transaction.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/index.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/AccountData.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/AccountSignature.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/AccountSignature_Ed25519Signature.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/AccountSignature_MultiEd25519Signature.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/Address.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/AptosError.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/AptosErrorCode.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/Block.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/BlockMetadataTransaction.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/DecodedTableData.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/DeleteModule.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/DeleteResource.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/DeleteTableItem.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/DeletedTableData.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/DirectWriteSet.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/Ed25519Signature.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/EncodeSubmissionRequest.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/EntryFunctionId.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/EntryFunctionPayload.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/Event.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/EventGuid.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/GasEstimation.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/GenesisPayload.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/GenesisPayload_WriteSetPayload.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/GenesisTransaction.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/HashValue.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/HealthCheckSuccess.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/HexEncodedBytes.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/IdentifierWrapper.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/IndexResponse.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/ModuleBundlePayload.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveAbility.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveFunction.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveFunctionGenericTypeParam.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveFunctionVisibility.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveModule.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveModuleBytecode.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveModuleId.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveResource.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveScriptBytecode.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStruct.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructField.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructGenericTypeParam.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructTag.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructValue.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveType.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MoveValue.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MultiAgentSignature.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MultiEd25519Signature.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MultisigPayload.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/MultisigTransactionPayload.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/PendingTransaction.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/RawTableItemRequest.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/RoleType.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/ScriptPayload.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/ScriptWriteSet.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/StateCheckpointTransaction.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/StateKeyWrapper.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/SubmitTransactionRequest.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/TableItemRequest.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_EntryFunctionPayload.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_ModuleBundlePayload.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_MultisigPayload.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_ScriptPayload.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature_Ed25519Signature.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature_MultiAgentSignature.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature_MultiEd25519Signature.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_BlockMetadataTransaction.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_GenesisTransaction.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_PendingTransaction.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_StateCheckpointTransaction.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_UserTransaction.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionsBatchSingleSubmissionFailure.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionsBatchSubmissionResult.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/U128.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/U256.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/U64.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/UserTransaction.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/VersionedEvent.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/ViewRequest.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/WriteModule.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/WriteResource.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSet.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_DeleteModule.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_DeleteResource.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_DeleteTableItem.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_WriteModule.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_WriteResource.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_WriteTableItem.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetPayload.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSet_DirectWriteSet.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSet_ScriptWriteSet.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/generated/models/WriteTableItem.ts create mode 100644 ecosystem/typescript/sdk_v2/src/types/index.ts create mode 100644 ecosystem/typescript/sdk_v2/src/utils/api-endpoints.ts create mode 100644 ecosystem/typescript/sdk_v2/src/utils/const.ts create mode 100644 ecosystem/typescript/sdk_v2/src/utils/hd-key.ts create mode 100644 ecosystem/typescript/sdk_v2/src/utils/helpers.ts create mode 100644 ecosystem/typescript/sdk_v2/src/utils/hex_string.ts create mode 100644 ecosystem/typescript/sdk_v2/src/utils/index.ts create mode 100644 ecosystem/typescript/sdk_v2/src/utils/memoize-decorator.ts create mode 100644 ecosystem/typescript/sdk_v2/src/utils/pagination_helpers.ts create mode 100644 ecosystem/typescript/sdk_v2/src/version.ts create mode 100644 ecosystem/typescript/sdk_v2/tsconfig.json create mode 100644 ecosystem/typescript/sdk_v2/tsup.config.js diff --git a/ecosystem/typescript/sdk_v2/.eslintignore b/ecosystem/typescript/sdk_v2/.eslintignore new file mode 100644 index 0000000000000..aa46a3a980c60 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/.eslintignore @@ -0,0 +1,3 @@ +node_modules +dist/** +**/*.test.ts diff --git a/ecosystem/typescript/sdk_v2/.eslintrc.js b/ecosystem/typescript/sdk_v2/.eslintrc.js new file mode 100644 index 0000000000000..86745e95fa5c8 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/.eslintrc.js @@ -0,0 +1,36 @@ +module.exports = { + env: { + browser: true, + es2021: true, + node: true, + }, + ignorePatterns: ["*.js", "examples/*", "src/indexer/generated/**", "scripts/publish_ans_contract.ts"], + extends: ["airbnb-base", "airbnb-typescript/base", "prettier"], + parser: "@typescript-eslint/parser", + parserOptions: { + tsconfigRootDir: __dirname, + project: ["tsconfig.json"], + ecmaVersion: "latest", + sourceType: "module", + }, + plugins: ["@typescript-eslint"], + rules: { + quotes: ["error", "double"], + "max-len": ["error", 120], + "import/extensions": ["error", "never"], + "max-classes-per-file": ["error", 10], + "import/prefer-default-export": "off", + "object-curly-newline": "off", + "no-use-before-define": "off", + "no-unused-vars": "off", + "@typescript-eslint/no-use-before-define": ["error", { functions: false, classes: false }], + "@typescript-eslint/no-unused-vars": ["error"], + }, + settings: { + "import/resolver": { + node: { + extensions: [".js", ".jsx", ".ts", ".tsx"], + }, + }, + }, +}; diff --git a/ecosystem/typescript/sdk_v2/.gitignore b/ecosystem/typescript/sdk_v2/.gitignore new file mode 100644 index 0000000000000..afdee0d215888 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/.gitignore @@ -0,0 +1,17 @@ +.env +.DS_Store +*/**/.DS_Store +npm-debug.log +.npm/ +/coverage +/tmp +node_modules +.idea/ +.history/ +.vscode/ +dist/ +.nyc_output/ +build/ + +# Doc generation output +docs/ \ No newline at end of file diff --git a/ecosystem/typescript/sdk_v2/.npmignore b/ecosystem/typescript/sdk_v2/.npmignore new file mode 100644 index 0000000000000..74dad3b85ec33 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/.npmignore @@ -0,0 +1,5 @@ +coverage +node_modules +.aptos +.env +examples/ diff --git a/ecosystem/typescript/sdk_v2/.nvmrc b/ecosystem/typescript/sdk_v2/.nvmrc new file mode 100644 index 0000000000000..15a54169196be --- /dev/null +++ b/ecosystem/typescript/sdk_v2/.nvmrc @@ -0,0 +1 @@ +v16.14.0n diff --git a/ecosystem/typescript/sdk_v2/.prettierignore b/ecosystem/typescript/sdk_v2/.prettierignore new file mode 100644 index 0000000000000..9543bddf671d8 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/.prettierignore @@ -0,0 +1,2 @@ +src/generated/* +src/indexer/generated/** diff --git a/ecosystem/typescript/sdk_v2/.versionrc.json b/ecosystem/typescript/sdk_v2/.versionrc.json new file mode 100644 index 0000000000000..94df5f41131aa --- /dev/null +++ b/ecosystem/typescript/sdk_v2/.versionrc.json @@ -0,0 +1,19 @@ +{ + "types": [ + { "type": "feat", "section": "Features" }, + { "type": "fix", "section": "Bug Fixes" }, + { "type": "chore", "hidden": true }, + { "type": "docs", "hidden": true }, + { "type": "style", "hidden": true }, + { "type": "refactor", "hidden": true }, + { "type": "perf", "hidden": true }, + { "type": "test", "hidden": true } + ], + "skip": { + "bump": true, + "commit": true, + "tag": true + }, + "path": ".", + "header": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nNote: This changelog is generated automatically.\n\n" +} diff --git a/ecosystem/typescript/sdk_v2/LICENSE b/ecosystem/typescript/sdk_v2/LICENSE new file mode 100644 index 0000000000000..c61b66391a3c1 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/ecosystem/typescript/sdk_v2/SPEC.md b/ecosystem/typescript/sdk_v2/SPEC.md new file mode 100644 index 0000000000000..1c3adf31c3b9b --- /dev/null +++ b/ecosystem/typescript/sdk_v2/SPEC.md @@ -0,0 +1,223 @@ +# Aptos SDK Specification Document + +[Table of Content](#table-of-content) + +![Status](https://img.shields.io/badge/version-1.0-brightgreen.svg) + +## Overview + +The goal of this document is to set a shared standard for implementation and development of all Aptos SDKs. + +This is a living document, and should be changed and updated as changes are made when developer needs are discovered. + +### Requirement Prioritization + +The following document follows the [MoSCoW](https://en.wikipedia.org/wiki/MoSCoW_method) method of prioritising rules. Please follow the following guidelines when evaluating rules. + +- `MUST` - Rules labeled as **must** are requirements that should not be deviated from at any cost +- `SHOULD` - Rules labeled as **should** are requirements that could be deviated from if needed, though this will have to be documented and cleared with all stakeholders before it can be disregarded. +- `COULD` - Rules labeled as **could** are requirements that are desirable but not necessary and therefore would be nice to have where time and resources permit. + +We do not use the fourth **`won't`** level in this specification. + +## Table of Contents + +- Base Requirements + - [1. BCS Encoding & Decoding](#1-BCS-Encoding--Decoding) + - [2. API servers](#2-API-servers) + - [3. Account Management](#3-Account-Management) + - [4. Transaction](#4-Transaction) + - [5. Coin Management](#5-Coin-Management) +- Maintenance Requirements + - [6. Source Control](#6-source-control) + - [7. Releases & Versioning](#7-releases--versioning) + - [8. CI Server](#8-ci-server) +- Additional Content Requirements + - [9. Documentation](#9-documentation) +- Dependencies & Infrastructure Requirements + - [10. Testing](#10-testing) + - [11. Dependencies](#11-dependencies) + - [12. HTTP Client](#12-http-client) + - [13. Logging](#13-reporting) + - [14. Reporting](#14-reporting) +- Initialization & Interaction Requirements + - [15. Initialization](#15-initalization) + - [16. Error Handling](#16-error-handling) + +## Base Requirements + +### 1. BCS Encoding & Decoding + +- [ ] **1.1** The SDK **must** support BCS encoding & decoding for. + - [ ] **1.1.1** Unsigned integers u8, u32, u64, u128, u256. + - [ ] **1.1.2** Optional arguments. + - [ ] **1.1.3** Tuples. + - [ ] **1.1.4** Enums. + - [ ] **1.1.5** UTF-8 Strings as vector of u8. + - [ ] **1.1.6** Structs. + - [ ] **1.1.7** Vectors using uleb128. + - [ ] **1.1.8** Addresses as a fixed 32 byte type. + - [ ] **1.1.9** Generics. + - [ ] **1.1.10** bool. + - [ ] **1.1.11** Object encodings as an address. +- [ ] **1.2** The encoding & decoding details **should** be hidden from the end user and done by the SDK. + - [ ] **1.2.1** The SDK **must** encode each piece in order. + - [ ] **1.2.2** The SDK **should** encode based on a given struct. + +### 2. API servers + +- [ ] **2.1** The SDK **must** interact directly with the Aptos REST API. + - [ ] **2.1.1** The SDK **must** support pagination with optional `start` and `limit` parameters to the REST API request. + - [ ] **2.1.2** The SDK **should** implement a client that adheres to the OpenAPI spec https://fullnode.mainnet.aptoslabs.com/v1/spec#/. +- [ ] **2.2** The SDK **should** interact directly with the Aptos Indexer API. + - [ ] **2.2.1** The SDK **must** support pagination with optional `offset` and `limit` parameters to Indexer API request. + - [ ] **2.2.2** The SDK **must** validate the account address when interacting with the Indexer API. + - [ ] **2.2.2.1** The SDK **must** validate an account address is a 64 character hex string with a leading `0x`. + - [ ] **2.2.3** The SDK **must** handle premade GraphQL queries https://cloud.hasura.io/public/graphiql?endpoint=https://indexer.mainnet.aptoslabs.com/v1/graphql. + - [ ] **2.2.3** The SDK **should** allow the user to pass in a custom GraphQL query. +- [ ] **2.3** The SDK **should** support interactions with Aptos devnet, testnet and mainnet networks. +- [ ] **2.4** The SDK **should** support interactions with a custom URL. + +### 3. Account Management + +- [ ] **3.1** The SDK **must** support account creation. +- [ ] **3.2** The SDK **must** support account APT coin balance read. +- [ ] **3.3** The SDK **must** support key management for Ed25519 keys. + - [ ] **3.3.1** The SDK **must** support Key generation + - [ ] **3.3.2** The SDK **must** support Key loading from a file + - [ ] **3.3.3** The SDK **must** support Key loading from a byte array + - [ ] **3.3.4** The SDK **should** support Key rotation + - [ ] **3.3.5** The SDK **could** Key management via local storage + - [ ] **3.3.6** The SDK **could** Key management via hardware wallet (e.g. Ledger, Keystone, etc.) +- [ ] **3.4** The SDK **must** support local single-threaded sequence number management. + - [ ] **3.4.1** The SDK **should** support multi-account sequence number management + - [ ] **3.4.2** The SDK **should** support single threaded sequence number high throughput smart queuing +- [ ] **3.5** The SDK **must** provide multi-agent signer support. +- [ ] **3.6** The SDK **should** support account any coin balance read. +- [ ] **3.7** The SDK **should** provide multi-Ed25519 signer support. +- [ ] **3.8** The SDK **should** provide mnemonic support. +- [ ] **3.9** The SDK **should** provide onchain multi-sig support. +- [ ] **3.10** The SDK **should** provide resource account support. +- [ ] **3.10** The SDK **should** provide Object support for deriving known objects and object ownership. + +### 4. Transaction + +- [ ] **4.1** The SDK **must** support entry function payload transaction submission. +- [ ] **4.2** The SDK **must** support script payload transaction submission. +- [ ] **4.3** The SDK **must** support simulation of transactions. +- [ ] **4.4** The SDK **must** support view function payload. +- [ ] **4.5** The SDK **should** use the gas estimation API to determine the gas price when building transaction payloads. + - [ ] **4.5.1** The SDK **must** cache the response from the gas estimation API for a set period of time (e.g. 1 minute). + +### 5. Coin Management + +- [ ] **5.1** The SDK **must** support APT coin transfer. +- [ ] **5.1** The SDK **should** support other coin transfer. + +## Maintenance Requirements + +### 6. Source Control + +- [ ] **6.1** The source code for the SDK **must** be maintained within Git version control. +- [ ] **6.2** The source code **must** be hosted publicly. +- [ ] **6.3** Development of new features **should** happen on feature branches. +- [ ] **6.4** Feature branches **should** pass all tests and linting before they can be merged into the `main` branch. +- [ ] **6.5** Source control **should** contain tags for each release of the SDK. +- [ ] **6.6** The `main` branch **should** be kept in a condition that allows for direct use through checkout. +- [ ] **6.7** The source code **should** use GitHub for public hosting. + +### 7. Releases & Versioning + +- [ ] **7.1** The SDK **must** use [Semantic Versioning](http://semver.org/) to increment the version number as changes are made. +- [ ] **7.2** For every new release the `CHANGELOG` file **must** to be updated with the `Major`, `Minor` and `Patch` changes. +- [ ] **7.3** A release package **must** include the documentation `README` file. +- [ ] **7.4** A release package **must** include the `LICENSE` file. +- [ ] **7.5** A release package **must** include the `CHANGELOG` file. + +- [ ] **7.6** A release package **should** not include unnecessary source code files or intermediary files for the SDK. + +- [ ] **7.7** The name of the SDK **should** follow language best practices, and be one of `aptos` or `Aptos`. +- [ ] **7.8** If the preferred name of the SDK is not available, it **could** be one of `aptos-sdk`, `AptosSDK`, or `aptosdev`. +- [ ] **7.9** As soon as the first public version of the library has been signed off, the version **should** be bumped to `1.0.0`. +- [ ] **7.10** New releases **could** be deployed automatically to the package manager using the CI server. + +### 8. CI Server + +- [ ] **8.1** A Continuous Integration (CI) server **must** be used to automatically test any branch of the Git repository. +- [ ] **8.2** The CI server **could** test on different platforms, including Windows, Linux, and macOS. +- [ ] **8.3** The CI server **could** test new Git tags, and build and push the package to the package manager. + +## Content Requirements + +### 9. Documentation + +- [ ] **9.1** The SDK **must** include a `README` file. + + - [ ] **9.1.1** The `README` file **must** have instructions on how to install the SDK using a package manager. + - [ ] **9.1.2** The `README` file **must** link to the `LICENSE` file. + - [ ] **9.1.3** The `README` file **must** document any installation requirements and prerequisites. + - [ ] **9.1.4** The `README` file **should** be written in Markdown. + - [ ] **9.1.5** The `README` file **should** include a version badge. + - [ ] **9.1.6** The `README` file **should** include a test status badge. + - [ ] **9.1.7** The `README` file **should** document all the different ways the SDK can be initialized. + - [ ] **9.1.8** The `README` file **should** include official support channels. + - [ ] **9.1.9** The `README` file **could** have instructions on how to install the SDK from version control. + +- [ ] **9.2** The SDK **must** include a `CHANGELOG` file. +- [ ] **9.3** The SDK **must** include a `CODE_OF_CONDUCT` file. +- [ ] **9.4** The SDK **must** include a `CONTRIBUTING` file. + - [ ] **9.4.1** The Contribution Guidelines **should** include instructions on how to run the SDK in development/testing mode. +- [ ] **9.5** The SDK **should** include a `ISSUE_TEMPLATE` file. +- [ ] **9.6** The SDK **should** include a `PULL_REQUEST_TEMPLATE` file. +- [ ] **9.7** The SDK **should** include a `SUPPORT` file. +- [ ] **9.8** The GitHub repository **should** have a title in the format, e.g. "Typescript library for the Aptos network" +- [ ] **9.9** The GitHub repository **should** have the following tags: `aptos`, `blockchain`, `web3`, `sdk`, `library`. + +## Dependencies & Infrastructure Requirements + +### 10. Testing + +- [ ] **10.1** The SDK **must** be thoroughly tested. +- [ ] **10.2** For any real API calls, the tests **must** use the Aptos testnet or devnet network. +- [ ] **10.3** The tests **should** have integration tests to make the network calls. +- [ ] **10.4** The tests **should** test responses. + +### 11. Dependencies + +- [ ] **11.1** The SDK **must** limit its runtime dependencies. +- [ ] **11.2** The SDK **should** have no runtime dependencies. +- [ ] **11.3** The SDK **could** use any amount of development and test dependencies. + +### 12. HTTP Client + +- [ ] **12.1** The SDK **must** use a well supported HTTP client. +- [ ] **12.2** The SDK **should** use a HTTP2 supported client. +- [ ] **12.3** A HTTP client from the standard libraries **should** be used. +- [ ] **12.4** The SDK **could** allow a developer to provide an alternative HTTP client. + +### 13. Logging + +- [ ] **13.1** The SDK **must** be able to log activities to a logger. +- [ ] **13.2** The logger **must** allow enabling/disabling of debug mode. +- [ ] **13.3** The logger **should** use the default runtime log. +- [ ] **13.4** The logger **should** allow a developer to provide an alternative logger. +- [ ] **13.5** When debugging is enabled, the logger **should** log (and only log) the request object, response object, and optionally any raw HTTP response object of no response object could be formed. + +### 14. Reporting + +- [ ] **14.1** The SDK **should** pass a custom header `x-aptos-client` with the format `/`. + - Example with known sdk version: `aptos-ts-sdk/1.8.4` + +## Initialization & Interaction Requirements + +### 15. Initialization + +- [ ] **15.1** The SDK client **must** allow selection of the base URL by name (`devnet` , `tesnet` , `mainnet`). +- [ ] **15.2** The SDK client **must** allow for setting a custom base URL directly (e.g `http://localhost:8080`). + +### 16. Error Handling + +- [ ] **16.1** The SDK **should** raise a `ApiError` for any request that did not result a HTTP 200 or 201 response code. +- [ ] **16.4** The response error object **should** contain a `message` attribute containing the message of the error, e.g. `account_not_found`. +- [ ] **16.5** The response error object **should** contain a `error_code` attribute containing the error code, e.g. `404`. +- [ ] **16.5** The response error object **should** contain a `vm_error_code` attribute containing the vm error code, e.g. `0`. diff --git a/ecosystem/typescript/sdk_v2/jest.config.js b/ecosystem/typescript/sdk_v2/jest.config.js new file mode 100644 index 0000000000000..9e6f66f3b676f --- /dev/null +++ b/ecosystem/typescript/sdk_v2/jest.config.js @@ -0,0 +1,20 @@ +/** @type {import("ts-jest/dist/types").InitialOptionsTsJest} */ +module.exports = { + preset: "ts-jest", + moduleNameMapper: { + "^(\\.{1,2}/.*)\\.js$": "$1", + }, + testEnvironment: "node", + coveragePathIgnorePatterns: ["./types/*", "./utils/memoize-decorator.ts", "./utils/hd-key.ts"], + testPathIgnorePatterns: ["dist/*"], + collectCoverage: true, + setupFiles: ["dotenv/config"], + coverageThreshold: { + global: { + branches: 50, // 90, + functions: 50, // 95, + lines: 50, // 95, + statements: 50, // 95, + }, + }, +}; diff --git a/ecosystem/typescript/sdk_v2/package.json b/ecosystem/typescript/sdk_v2/package.json new file mode 100644 index 0000000000000..974a0be087151 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/package.json @@ -0,0 +1,66 @@ +{ + "name": "aptos", + "description": "Aptos SDK", + "packageManager": "pnpm@8.3.1", + "license": "Apache-2.0", + "engines": { + "node": ">=11.0.0" + }, + "main": "dist/cjs/index.js", + "module": "dist/esm/index.mjs", + "exports": { + "node": { + "types": "./dist/src/index.d.ts", + "require": "./dist/cjs/index.js", + "import": "./dist/cjs/index.js" + }, + "types": "./dist/types/index.d.ts", + "default": "./dist/esm/index.mjs" + }, + "scripts": { + "build:clean": "rm -rf dist", + "build": "pnpm build:clean && pnpm run _build:types && pnpm _build:esm && pnpm _build:cjs && pnpm _build:browser", + "_build:browser": "tsup src/index.ts --platform browser --format iife --global-name aptosSDK --minify --out-dir dist/browser", + "_build:esm": "tsup src/index.ts --format esm --dts --out-dir dist/esm", + "_build:cjs": "tsup src/index.ts --format cjs --dts --out-dir dist/cjs", + "_build:types": "tsup src/types/index.ts --dts --out-dir dist/types", + "generate-openapi-response-types": "openapi -i ../../../../api/doc/spec.yaml -o ./src/types/generated --exportCore=false --exportServices=false", + "lint": "eslint \"**/*.ts\"" + }, + "dependencies": { + "@aptos-labs/aptos-client": "^0.0.2", + "@noble/hashes": "1.1.3", + "@scure/bip39": "1.1.0", + "form-data": "4.0.0", + "tweetnacl": "1.0.3" + }, + "devDependencies": { + "@graphql-codegen/cli": "^2.13.5", + "@graphql-codegen/import-types-preset": "^2.2.3", + "@graphql-codegen/typescript": "^2.7.3", + "@graphql-codegen/typescript-graphql-request": "^4.5.8", + "@graphql-codegen/typescript-operations": "^2.5.3", + "@types/jest": "28.1.8", + "@types/node": "18.6.2", + "@typescript-eslint/eslint-plugin": "5.36.2", + "@typescript-eslint/parser": "5.36.2", + "dotenv": "16.0.2", + "eslint": "8.23.0", + "eslint-config-airbnb-base": "15.0.0", + "eslint-config-airbnb-typescript": "17.0.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-import": "2.26.0", + "graphql": "^16.5.0", + "graphql-request": "5.1.0", + "jest": "28.1.3", + "openapi-typescript-codegen": "https://github.com/aptos-labs/openapi-typescript-codegen/releases/download/v0.24.0-p1/openapi-typescript-codegen-v0.24.0-p1.tgz", + "prettier": "2.6.2", + "ts-jest": "28.0.8", + "ts-loader": "9.3.1", + "ts-node": "10.9.1", + "tsup": "6.2.3", + "typedoc": "^0.23.20", + "typescript": "4.8.2" + }, + "version": "2.0.0" +} diff --git a/ecosystem/typescript/sdk_v2/pnpm-lock.yaml b/ecosystem/typescript/sdk_v2/pnpm-lock.yaml new file mode 100644 index 0000000000000..7cb3ac587113d --- /dev/null +++ b/ecosystem/typescript/sdk_v2/pnpm-lock.yaml @@ -0,0 +1,7263 @@ +lockfileVersion: '6.1' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@aptos-labs/aptos-client': + specifier: ^0.0.2 + version: 0.0.2 + '@noble/hashes': + specifier: 1.1.3 + version: 1.1.3 + '@scure/bip39': + specifier: 1.1.0 + version: 1.1.0 + form-data: + specifier: 4.0.0 + version: 4.0.0 + tweetnacl: + specifier: 1.0.3 + version: 1.0.3 + +devDependencies: + '@graphql-codegen/cli': + specifier: ^2.13.5 + version: 2.16.5(@babel/core@7.22.5)(@types/node@18.6.2)(graphql@16.7.1)(typescript@4.8.2) + '@graphql-codegen/import-types-preset': + specifier: ^2.2.3 + version: 2.2.6(graphql@16.7.1) + '@graphql-codegen/typescript': + specifier: ^2.7.3 + version: 2.8.8(graphql@16.7.1) + '@graphql-codegen/typescript-graphql-request': + specifier: ^4.5.8 + version: 4.5.9(graphql-request@5.1.0)(graphql-tag@2.12.6)(graphql@16.7.1) + '@graphql-codegen/typescript-operations': + specifier: ^2.5.3 + version: 2.5.13(graphql@16.7.1) + '@types/jest': + specifier: 28.1.8 + version: 28.1.8 + '@types/node': + specifier: 18.6.2 + version: 18.6.2 + '@typescript-eslint/eslint-plugin': + specifier: 5.36.2 + version: 5.36.2(@typescript-eslint/parser@5.36.2)(eslint@8.23.0)(typescript@4.8.2) + '@typescript-eslint/parser': + specifier: 5.36.2 + version: 5.36.2(eslint@8.23.0)(typescript@4.8.2) + dotenv: + specifier: 16.0.2 + version: 16.0.2 + eslint: + specifier: 8.23.0 + version: 8.23.0 + eslint-config-airbnb-base: + specifier: 15.0.0 + version: 15.0.0(eslint-plugin-import@2.26.0)(eslint@8.23.0) + eslint-config-airbnb-typescript: + specifier: 17.0.0 + version: 17.0.0(@typescript-eslint/eslint-plugin@5.36.2)(@typescript-eslint/parser@5.36.2)(eslint-plugin-import@2.26.0)(eslint@8.23.0) + eslint-config-prettier: + specifier: 8.5.0 + version: 8.5.0(eslint@8.23.0) + eslint-plugin-import: + specifier: 2.26.0 + version: 2.26.0(@typescript-eslint/parser@5.36.2)(eslint@8.23.0) + graphql: + specifier: ^16.5.0 + version: 16.7.1 + graphql-request: + specifier: 5.1.0 + version: 5.1.0(graphql@16.7.1) + jest: + specifier: 28.1.3 + version: 28.1.3(@types/node@18.6.2)(ts-node@10.9.1) + openapi-typescript-codegen: + specifier: https://github.com/aptos-labs/openapi-typescript-codegen/releases/download/v0.24.0-p1/openapi-typescript-codegen-v0.24.0-p1.tgz + version: '@github.com/aptos-labs/openapi-typescript-codegen/releases/download/v0.24.0-p1/openapi-typescript-codegen-v0.24.0-p1.tgz' + prettier: + specifier: 2.6.2 + version: 2.6.2 + ts-jest: + specifier: 28.0.8 + version: 28.0.8(@babel/core@7.22.5)(esbuild@0.15.18)(jest@28.1.3)(typescript@4.8.2) + ts-loader: + specifier: 9.3.1 + version: 9.3.1(typescript@4.8.2)(webpack@5.88.2) + ts-node: + specifier: 10.9.1 + version: 10.9.1(@types/node@18.6.2)(typescript@4.8.2) + tsup: + specifier: 6.2.3 + version: 6.2.3(ts-node@10.9.1)(typescript@4.8.2) + typedoc: + specifier: ^0.23.20 + version: 0.23.28(typescript@4.8.2) + typescript: + specifier: 4.8.2 + version: 4.8.2 + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@apidevtools/json-schema-ref-parser@9.0.9: + resolution: {integrity: sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==} + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.12 + call-me-maybe: 1.0.2 + js-yaml: 4.1.0 + dev: true + + /@aptos-labs/aptos-client@0.0.2: + resolution: {integrity: sha512-FgKZb5zDPz8MmAcVxXzYhxP6OkzuIPoDRJp48YJ8+vrZ9EOZ35HaWGN2M3u+GPdnFE9mODFqkxw3azh3kHGZjQ==} + engines: {node: '>=15.10.0'} + dependencies: + axios: 0.27.2 + got: 11.8.6 + transitivePeerDependencies: + - debug + dev: false + + /@ardatan/relay-compiler@12.0.0(graphql@16.7.1): + resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} + hasBin: true + peerDependencies: + graphql: '*' + dependencies: + '@babel/core': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/runtime': 7.22.6 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + babel-preset-fbjs: 3.4.0(@babel/core@7.22.5) + chalk: 4.1.2 + fb-watchman: 2.0.2 + fbjs: 3.0.5 + glob: 7.2.3 + graphql: 16.7.1 + immutable: 3.7.6 + invariant: 2.2.4 + nullthrows: 1.1.1 + relay-runtime: 12.0.0 + signedsource: 1.0.0 + yargs: 15.4.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@ardatan/sync-fetch@0.0.1: + resolution: {integrity: sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==} + engines: {node: '>=14'} + dependencies: + node-fetch: 2.6.12 + transitivePeerDependencies: + - encoding + dev: true + + /@babel/code-frame@7.22.5: + resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.5 + dev: true + + /@babel/compat-data@7.22.5: + resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/compat-data@7.22.9: + resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.22.5: + resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) + '@babel/helper-module-transforms': 7.22.5 + '@babel/helpers': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.22.5: + resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.22.5 + '@babel/core': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.7 + lru-cache: 5.1.1 + semver: 6.3.0 + dev: true + + /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.5): + resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.9 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.22.9(@babel/core@7.22.5): + resolution: {integrity: sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.5) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-environment-visitor@7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-member-expression-to-functions@7.22.5: + resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-module-imports@7.22.5: + resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-module-transforms@7.22.5: + resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.5): + resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-split-export-declaration@7.22.5: + resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.22.5: + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.22.5: + resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.22.5: + resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.22.5: + resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.22.5: + resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.5): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.22.5): + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.5 + '@babel/core': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.5) + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.5): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.5): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.5): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-block-scoping@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-classes@7.22.6(@babel/core@7.22.5): + resolution: {integrity: sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.5) + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.5) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: true + + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.5 + dev: true + + /@babel/plugin-transform-destructuring@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.5) + dev: true + + /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) + '@babel/helper-function-name': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.5) + dev: true + + /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) + '@babel/types': 7.22.5 + dev: true + + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/runtime@7.22.6: + resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + dev: true + + /@babel/template@7.22.5: + resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + dev: true + + /@babel/traverse@7.22.5: + resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.22.5: + resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + + /@esbuild/android-arm@0.15.18: + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.15.18: + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@eslint/eslintrc@1.4.1: + resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@graphql-codegen/add@3.2.3(graphql@16.7.1): + resolution: {integrity: sha512-sQOnWpMko4JLeykwyjFTxnhqjd/3NOG2OyMuvK76Wnnwh8DRrNf2VEs2kmSvLl7MndMlOj7Kh5U154dVcvhmKQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.4.1 + dev: true + + /@graphql-codegen/cli@2.16.5(@babel/core@7.22.5)(@types/node@18.6.2)(graphql@16.7.1)(typescript@4.8.2): + resolution: {integrity: sha512-XYPIp+q7fB0xAGSAoRykiTe4oY80VU+z+dw5nuv4mLY0+pv7+pa2C6Nwhdw7a65lXOhFviBApWCCZeqd54SMnA==} + hasBin: true + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@babel/generator': 7.22.5 + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 + '@graphql-codegen/core': 2.6.8(graphql@16.7.1) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-tools/apollo-engine-loader': 7.3.26(graphql@16.7.1) + '@graphql-tools/code-file-loader': 7.3.23(@babel/core@7.22.5)(graphql@16.7.1) + '@graphql-tools/git-loader': 7.3.0(@babel/core@7.22.5)(graphql@16.7.1) + '@graphql-tools/github-loader': 7.3.28(@babel/core@7.22.5)(@types/node@18.6.2)(graphql@16.7.1) + '@graphql-tools/graphql-file-loader': 7.5.17(graphql@16.7.1) + '@graphql-tools/json-file-loader': 7.4.18(graphql@16.7.1) + '@graphql-tools/load': 7.8.14(graphql@16.7.1) + '@graphql-tools/prisma-loader': 7.2.72(@types/node@18.6.2)(graphql@16.7.1) + '@graphql-tools/url-loader': 7.17.18(@types/node@18.6.2)(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + '@whatwg-node/fetch': 0.6.9(@types/node@18.6.2) + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 7.1.0 + cosmiconfig-typescript-loader: 4.3.0(@types/node@18.6.2)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@4.8.2) + debounce: 1.2.1 + detect-indent: 6.1.0 + graphql: 16.7.1 + graphql-config: 4.5.0(@types/node@18.6.2)(graphql@16.7.1) + inquirer: 8.2.5 + is-glob: 4.0.3 + json-to-pretty-yaml: 1.2.2 + listr2: 4.0.5 + log-symbols: 4.1.0 + shell-quote: 1.8.1 + string-env-interpolation: 1.0.1 + ts-log: 2.2.5 + ts-node: 10.9.1(@types/node@18.6.2)(typescript@4.8.2) + tslib: 2.6.0 + yaml: 1.10.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@babel/core' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - bufferutil + - cosmiconfig-toml-loader + - encoding + - enquirer + - supports-color + - typescript + - utf-8-validate + dev: true + + /@graphql-codegen/core@2.6.8(graphql@16.7.1): + resolution: {integrity: sha512-JKllNIipPrheRgl+/Hm/xuWMw9++xNQ12XJR/OHHgFopOg4zmN3TdlRSyYcv/K90hCFkkIwhlHFUQTfKrm8rxQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-tools/schema': 9.0.19(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.4.1 + dev: true + + /@graphql-codegen/import-types-preset@2.2.6(graphql@16.7.1): + resolution: {integrity: sha512-Lo2ITOln3UVdyyEPiijj8bVhVg0Ghp/JzHXA2LXxrJVCRbXizQhVC2vjiaWTjMskPt9Zub0yIoce4+RrbsXKcg==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/add': 3.2.3(graphql@16.7.1) + '@graphql-codegen/plugin-helpers': 2.7.2(graphql@16.7.1) + '@graphql-codegen/visitor-plugin-common': 2.13.1(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.4.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-codegen/plugin-helpers@2.7.2(graphql@16.7.1): + resolution: {integrity: sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-tools/utils': 8.13.1(graphql@16.7.1) + change-case-all: 1.0.14 + common-tags: 1.8.2 + graphql: 16.7.1 + import-from: 4.0.0 + lodash: 4.17.21 + tslib: 2.4.1 + dev: true + + /@graphql-codegen/plugin-helpers@3.1.2(graphql@16.7.1): + resolution: {integrity: sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + change-case-all: 1.0.15 + common-tags: 1.8.2 + graphql: 16.7.1 + import-from: 4.0.0 + lodash: 4.17.21 + tslib: 2.4.1 + dev: true + + /@graphql-codegen/schema-ast@2.6.1(graphql@16.7.1): + resolution: {integrity: sha512-5TNW3b1IHJjCh07D2yQNGDQzUpUl2AD+GVe1Dzjqyx/d2Fn0TPMxLsHsKPS4Plg4saO8FK/QO70wLsP7fdbQ1w==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.4.1 + dev: true + + /@graphql-codegen/typescript-graphql-request@4.5.9(graphql-request@5.1.0)(graphql-tag@2.12.6)(graphql@16.7.1): + resolution: {integrity: sha512-Vtv5qymUXcR4UFdHOlJHzK5TN+CZUwMwFDGb3n4Gjcr4yln1BWbUb7DXgD0GHzpXwDIj5G2XmJnFtr0jihBfrg==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-request: ^3.4.0 || ^4.0.0 || ~5.0.0 || ~5.1.0 + graphql-tag: ^2.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-codegen/visitor-plugin-common': 2.13.1(graphql@16.7.1) + auto-bind: 4.0.0 + graphql: 16.7.1 + graphql-request: 5.1.0(graphql@16.7.1) + graphql-tag: 2.12.6(graphql@16.7.1) + tslib: 2.4.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-codegen/typescript-operations@2.5.13(graphql@16.7.1): + resolution: {integrity: sha512-3vfR6Rx6iZU0JRt29GBkFlrSNTM6t+MSLF86ChvL4d/Jfo/JYAGuB3zNzPhirHYzJPCvLOAx2gy9ID1ltrpYiw==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-codegen/typescript': 2.8.8(graphql@16.7.1) + '@graphql-codegen/visitor-plugin-common': 2.13.8(graphql@16.7.1) + auto-bind: 4.0.0 + graphql: 16.7.1 + tslib: 2.4.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-codegen/typescript@2.8.8(graphql@16.7.1): + resolution: {integrity: sha512-A0oUi3Oy6+DormOlrTC4orxT9OBZkIglhbJBcDmk34jAKKUgesukXRd4yOhmTrnbchpXz2T8IAOFB3FWIaK4Rw==} + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-codegen/schema-ast': 2.6.1(graphql@16.7.1) + '@graphql-codegen/visitor-plugin-common': 2.13.8(graphql@16.7.1) + auto-bind: 4.0.0 + graphql: 16.7.1 + tslib: 2.4.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-codegen/visitor-plugin-common@2.13.1(graphql@16.7.1): + resolution: {integrity: sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 2.7.2(graphql@16.7.1) + '@graphql-tools/optimize': 1.4.0(graphql@16.7.1) + '@graphql-tools/relay-operation-optimizer': 6.5.18(graphql@16.7.1) + '@graphql-tools/utils': 8.13.1(graphql@16.7.1) + auto-bind: 4.0.0 + change-case-all: 1.0.14 + dependency-graph: 0.11.0 + graphql: 16.7.1 + graphql-tag: 2.12.6(graphql@16.7.1) + parse-filepath: 1.0.2 + tslib: 2.4.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-codegen/visitor-plugin-common@2.13.8(graphql@16.7.1): + resolution: {integrity: sha512-IQWu99YV4wt8hGxIbBQPtqRuaWZhkQRG2IZKbMoSvh0vGeWb3dB0n0hSgKaOOxDY+tljtOf9MTcUYvJslQucMQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-tools/optimize': 1.4.0(graphql@16.7.1) + '@graphql-tools/relay-operation-optimizer': 6.5.18(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + auto-bind: 4.0.0 + change-case-all: 1.0.15 + dependency-graph: 0.11.0 + graphql: 16.7.1 + graphql-tag: 2.12.6(graphql@16.7.1) + parse-filepath: 1.0.2 + tslib: 2.4.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-tools/apollo-engine-loader@7.3.26(graphql@16.7.1): + resolution: {integrity: sha512-h1vfhdJFjnCYn9b5EY1Z91JTF0KB3hHVJNQIsiUV2mpQXZdeOXQoaWeYEKaiI5R6kwBw5PP9B0fv3jfUIG8LyQ==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + '@whatwg-node/fetch': 0.8.8 + graphql: 16.7.1 + tslib: 2.6.0 + transitivePeerDependencies: + - encoding + dev: true + + /@graphql-tools/batch-execute@8.5.22(graphql@16.7.1): + resolution: {integrity: sha512-hcV1JaY6NJQFQEwCKrYhpfLK8frSXDbtNMoTur98u10Cmecy1zrqNKSqhEyGetpgHxaJRqszGzKeI3RuroDN6A==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + dataloader: 2.2.2 + graphql: 16.7.1 + tslib: 2.6.0 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/code-file-loader@7.3.23(@babel/core@7.22.5)(graphql@16.7.1): + resolution: {integrity: sha512-8Wt1rTtyTEs0p47uzsPJ1vAtfAx0jmxPifiNdmo9EOCuUPyQGEbMaik/YkqZ7QUFIEYEQu+Vgfo8tElwOPtx5Q==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.22.5)(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + globby: 11.1.0 + graphql: 16.7.1 + tslib: 2.6.0 + unixify: 1.0.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@graphql-tools/delegate@9.0.35(graphql@16.7.1): + resolution: {integrity: sha512-jwPu8NJbzRRMqi4Vp/5QX1vIUeUPpWmlQpOkXQD2r1X45YsVceyUUBnktCrlJlDB4jPRVy7JQGwmYo3KFiOBMA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/batch-execute': 8.5.22(graphql@16.7.1) + '@graphql-tools/executor': 0.0.20(graphql@16.7.1) + '@graphql-tools/schema': 9.0.19(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + dataloader: 2.2.2 + graphql: 16.7.1 + tslib: 2.6.0 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/executor-graphql-ws@0.0.14(graphql@16.7.1): + resolution: {integrity: sha512-P2nlkAsPZKLIXImFhj0YTtny5NQVGSsKnhi7PzXiaHSXc6KkzqbWZHKvikD4PObanqg+7IO58rKFpGXP7eeO+w==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + '@repeaterjs/repeater': 3.0.4 + '@types/ws': 8.5.5 + graphql: 16.7.1 + graphql-ws: 5.12.1(graphql@16.7.1) + isomorphic-ws: 5.0.0(ws@8.13.0) + tslib: 2.6.0 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@graphql-tools/executor-http@0.1.10(@types/node@18.6.2)(graphql@16.7.1): + resolution: {integrity: sha512-hnAfbKv0/lb9s31LhWzawQ5hghBfHS+gYWtqxME6Rl0Aufq9GltiiLBcl7OVVOnkLF0KhwgbYP1mB5VKmgTGpg==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + '@repeaterjs/repeater': 3.0.4 + '@whatwg-node/fetch': 0.8.8 + dset: 3.1.2 + extract-files: 11.0.0 + graphql: 16.7.1 + meros: 1.3.0(@types/node@18.6.2) + tslib: 2.6.0 + value-or-promise: 1.0.12 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@graphql-tools/executor-legacy-ws@0.0.11(graphql@16.7.1): + resolution: {integrity: sha512-4ai+NnxlNfvIQ4c70hWFvOZlSUN8lt7yc+ZsrwtNFbFPH/EroIzFMapAxM9zwyv9bH38AdO3TQxZ5zNxgBdvUw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + '@types/ws': 8.5.5 + graphql: 16.7.1 + isomorphic-ws: 5.0.0(ws@8.13.0) + tslib: 2.6.0 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@graphql-tools/executor@0.0.20(graphql@16.7.1): + resolution: {integrity: sha512-GdvNc4vszmfeGvUqlcaH1FjBoguvMYzxAfT6tDd4/LgwymepHhinqLNA5otqwVLW+JETcDaK7xGENzFomuE6TA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.7.1) + '@repeaterjs/repeater': 3.0.4 + graphql: 16.7.1 + tslib: 2.6.0 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/git-loader@7.3.0(@babel/core@7.22.5)(graphql@16.7.1): + resolution: {integrity: sha512-gcGAK+u16eHkwsMYqqghZbmDquh8QaO24Scsxq+cVR+vx1ekRlsEiXvu+yXVDbZdcJ6PBIbeLcQbEu+xhDLmvQ==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.22.5)(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + is-glob: 4.0.3 + micromatch: 4.0.5 + tslib: 2.6.0 + unixify: 1.0.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@graphql-tools/github-loader@7.3.28(@babel/core@7.22.5)(@types/node@18.6.2)(graphql@16.7.1): + resolution: {integrity: sha512-OK92Lf9pmxPQvjUNv05b3tnVhw0JRfPqOf15jZjyQ8BfdEUrJoP32b4dRQQem/wyRL24KY4wOfArJNqzpsbwCA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/executor-http': 0.1.10(@types/node@18.6.2)(graphql@16.7.1) + '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.22.5)(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + '@whatwg-node/fetch': 0.8.8 + graphql: 16.7.1 + tslib: 2.6.0 + value-or-promise: 1.0.12 + transitivePeerDependencies: + - '@babel/core' + - '@types/node' + - encoding + - supports-color + dev: true + + /@graphql-tools/graphql-file-loader@7.5.17(graphql@16.7.1): + resolution: {integrity: sha512-hVwwxPf41zOYgm4gdaZILCYnKB9Zap7Ys9OhY1hbwuAuC4MMNY9GpUjoTU3CQc3zUiPoYStyRtUGkHSJZ3HxBw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/import': 6.7.18(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + globby: 11.1.0 + graphql: 16.7.1 + tslib: 2.6.0 + unixify: 1.0.0 + dev: true + + /@graphql-tools/graphql-tag-pluck@7.5.2(@babel/core@7.22.5)(graphql@16.7.1): + resolution: {integrity: sha512-RW+H8FqOOLQw0BPXaahYepVSRjuOHw+7IL8Opaa5G5uYGOBxoXR7DceyQ7BcpMgktAOOmpDNQ2WtcboChOJSRA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@babel/parser': 7.22.5 + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.5) + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.6.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@graphql-tools/import@6.7.18(graphql@16.7.1): + resolution: {integrity: sha512-XQDdyZTp+FYmT7as3xRWH/x8dx0QZA2WZqfMF5EWb36a0PiH7WwlRQYIdyYXj8YCLpiWkeBXgBRHmMnwEYR8iQ==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + resolve-from: 5.0.0 + tslib: 2.6.0 + dev: true + + /@graphql-tools/json-file-loader@7.4.18(graphql@16.7.1): + resolution: {integrity: sha512-AJ1b6Y1wiVgkwsxT5dELXhIVUPs/u3VZ8/0/oOtpcoyO/vAeM5rOvvWegzicOOnQw8G45fgBRMkkRfeuwVt6+w==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + globby: 11.1.0 + graphql: 16.7.1 + tslib: 2.6.0 + unixify: 1.0.0 + dev: true + + /@graphql-tools/load@7.8.14(graphql@16.7.1): + resolution: {integrity: sha512-ASQvP+snHMYm+FhIaLxxFgVdRaM0vrN9wW2BKInQpktwWTXVyk+yP5nQUCEGmn0RTdlPKrffBaigxepkEAJPrg==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/schema': 9.0.19(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + p-limit: 3.1.0 + tslib: 2.6.0 + dev: true + + /@graphql-tools/merge@8.4.2(graphql@16.7.1): + resolution: {integrity: sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.6.0 + dev: true + + /@graphql-tools/optimize@1.4.0(graphql@16.7.1): + resolution: {integrity: sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.7.1 + tslib: 2.4.1 + dev: true + + /@graphql-tools/prisma-loader@7.2.72(@types/node@18.6.2)(graphql@16.7.1): + resolution: {integrity: sha512-0a7uV7Fky6yDqd0tI9+XMuvgIo6GAqiVzzzFV4OSLry4AwiQlI3igYseBV7ZVOGhedOTqj/URxjpiv07hRcwag==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/url-loader': 7.17.18(@types/node@18.6.2)(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + '@types/js-yaml': 4.0.5 + '@types/json-stable-stringify': 1.0.34 + '@whatwg-node/fetch': 0.8.8 + chalk: 4.1.2 + debug: 4.3.4 + dotenv: 16.0.2 + graphql: 16.7.1 + graphql-request: 6.1.0(graphql@16.7.1) + http-proxy-agent: 6.1.1 + https-proxy-agent: 6.2.1 + jose: 4.14.4 + js-yaml: 4.1.0 + json-stable-stringify: 1.0.2 + lodash: 4.17.21 + scuid: 1.1.0 + tslib: 2.6.0 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + + /@graphql-tools/relay-operation-optimizer@6.5.18(graphql@16.7.1): + resolution: {integrity: sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@ardatan/relay-compiler': 12.0.0(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.4.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-tools/schema@9.0.19(graphql@16.7.1): + resolution: {integrity: sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/merge': 8.4.2(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.6.0 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/url-loader@7.17.18(@types/node@18.6.2)(graphql@16.7.1): + resolution: {integrity: sha512-ear0CiyTj04jCVAxi7TvgbnGDIN2HgqzXzwsfcqiVg9cvjT40NcMlZ2P1lZDgqMkZ9oyLTV8Bw6j+SyG6A+xPw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/delegate': 9.0.35(graphql@16.7.1) + '@graphql-tools/executor-graphql-ws': 0.0.14(graphql@16.7.1) + '@graphql-tools/executor-http': 0.1.10(@types/node@18.6.2)(graphql@16.7.1) + '@graphql-tools/executor-legacy-ws': 0.0.11(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + '@graphql-tools/wrap': 9.4.2(graphql@16.7.1) + '@types/ws': 8.5.5 + '@whatwg-node/fetch': 0.8.8 + graphql: 16.7.1 + isomorphic-ws: 5.0.0(ws@8.13.0) + tslib: 2.6.0 + value-or-promise: 1.0.12 + ws: 8.13.0 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - utf-8-validate + dev: true + + /@graphql-tools/utils@8.13.1(graphql@16.7.1): + resolution: {integrity: sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.7.1 + tslib: 2.4.1 + dev: true + + /@graphql-tools/utils@9.2.1(graphql@16.7.1): + resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.6.0 + dev: true + + /@graphql-tools/wrap@9.4.2(graphql@16.7.1): + resolution: {integrity: sha512-DFcd9r51lmcEKn0JW43CWkkI2D6T9XI1juW/Yo86i04v43O9w2/k4/nx2XTJv4Yv+iXwUw7Ok81PGltwGJSDSA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/delegate': 9.0.35(graphql@16.7.1) + '@graphql-tools/schema': 9.0.19(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.6.0 + value-or-promise: 1.0.12 + dev: true + + /@graphql-typed-document-node/core@3.2.0(graphql@16.7.1): + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.7.1 + dev: true + + /@humanwhocodes/config-array@0.10.7: + resolution: {integrity: sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/gitignore-to-minimatch@1.0.2: + resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==} + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@28.1.3: + resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@types/node': 18.6.2 + chalk: 4.1.2 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + slash: 3.0.0 + dev: true + + /@jest/core@28.1.3(ts-node@10.9.1): + resolution: {integrity: sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 28.1.3 + '@jest/reporters': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.6.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 28.1.3 + jest-config: 28.1.3(@types/node@18.6.2)(ts-node@10.9.1) + jest-haste-map: 28.1.3 + jest-message-util: 28.1.3 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-resolve-dependencies: 28.1.3 + jest-runner: 28.1.3 + jest-runtime: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 + jest-watcher: 28.1.3 + micromatch: 4.0.5 + pretty-format: 28.1.3 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /@jest/environment@28.1.3: + resolution: {integrity: sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.6.2 + jest-mock: 28.1.3 + dev: true + + /@jest/expect-utils@28.1.3: + resolution: {integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + jest-get-type: 28.0.2 + dev: true + + /@jest/expect@28.1.3: + resolution: {integrity: sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + expect: 28.1.3 + jest-snapshot: 28.1.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@28.1.3: + resolution: {integrity: sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@sinonjs/fake-timers': 9.1.2 + '@types/node': 18.6.2 + jest-message-util: 28.1.3 + jest-mock: 28.1.3 + jest-util: 28.1.3 + dev: true + + /@jest/globals@28.1.3: + resolution: {integrity: sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/environment': 28.1.3 + '@jest/expect': 28.1.3 + '@jest/types': 28.1.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@28.1.3: + resolution: {integrity: sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@jridgewell/trace-mapping': 0.3.18 + '@types/node': 18.6.2 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + jest-worker: 28.1.3 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + terminal-link: 2.1.1 + v8-to-istanbul: 9.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@28.1.3: + resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@sinclair/typebox': 0.24.51 + dev: true + + /@jest/source-map@28.1.2: + resolution: {integrity: sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@28.1.3: + resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/console': 28.1.3 + '@jest/types': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 + dev: true + + /@jest/test-sequencer@28.1.3: + resolution: {integrity: sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/test-result': 28.1.3 + graceful-fs: 4.2.11 + jest-haste-map: 28.1.3 + slash: 3.0.0 + dev: true + + /@jest/transform@28.1.3: + resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/core': 7.22.5 + '@jest/types': 28.1.3 + '@jridgewell/trace-mapping': 0.3.18 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 28.1.3 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@28.1.3: + resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/schemas': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.6.2 + '@types/yargs': 17.0.24 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@jridgewell/sourcemap-codec@1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@jsdevtools/ono@7.1.3: + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + dev: true + + /@noble/hashes@1.1.3: + resolution: {integrity: sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==} + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@peculiar/asn1-schema@2.3.6: + resolution: {integrity: sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA==} + dependencies: + asn1js: 3.0.5 + pvtsutils: 1.3.2 + tslib: 2.6.0 + dev: true + + /@peculiar/json-schema@1.1.12: + resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} + engines: {node: '>=8.0.0'} + dependencies: + tslib: 2.6.0 + dev: true + + /@peculiar/webcrypto@1.4.3: + resolution: {integrity: sha512-VtaY4spKTdN5LjJ04im/d/joXuvLbQdgy5Z4DXF4MFZhQ+MTrejbNMkfZBp1Bs3O5+bFqnJgyGdPuZQflvIa5A==} + engines: {node: '>=10.12.0'} + dependencies: + '@peculiar/asn1-schema': 2.3.6 + '@peculiar/json-schema': 1.1.12 + pvtsutils: 1.3.2 + tslib: 2.6.0 + webcrypto-core: 1.7.7 + dev: true + + /@repeaterjs/repeater@3.0.4: + resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} + dev: true + + /@scure/base@1.1.1: + resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} + dev: false + + /@scure/bip39@1.1.0: + resolution: {integrity: sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==} + dependencies: + '@noble/hashes': 1.1.3 + '@scure/base': 1.1.1 + dev: false + + /@sinclair/typebox@0.24.51: + resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + dev: true + + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: false + + /@sinonjs/commons@1.8.6: + resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@9.1.2: + resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} + dependencies: + '@sinonjs/commons': 1.8.6 + dev: true + + /@szmarczak/http-timer@4.0.6: + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + dependencies: + defer-to-connect: 2.0.1 + dev: false + + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true + + /@types/babel__core@7.20.1: + resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} + dependencies: + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.20.1 + dev: true + + /@types/babel__generator@7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@types/babel__template@7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + dev: true + + /@types/babel__traverse@7.20.1: + resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@types/cacheable-request@6.0.3: + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + dependencies: + '@types/http-cache-semantics': 4.0.1 + '@types/keyv': 3.1.4 + '@types/node': 18.6.2 + '@types/responselike': 1.0.0 + dev: false + + /@types/eslint-scope@3.7.4: + resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} + dependencies: + '@types/eslint': 8.44.1 + '@types/estree': 1.0.1 + dev: true + + /@types/eslint@8.44.1: + resolution: {integrity: sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg==} + dependencies: + '@types/estree': 1.0.1 + '@types/json-schema': 7.0.12 + dev: true + + /@types/estree@1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + dev: true + + /@types/graceful-fs@4.1.6: + resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + dependencies: + '@types/node': 18.6.2 + dev: true + + /@types/http-cache-semantics@4.0.1: + resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} + dev: false + + /@types/istanbul-lib-coverage@2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + dev: true + + /@types/istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + dev: true + + /@types/istanbul-reports@3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + dependencies: + '@types/istanbul-lib-report': 3.0.0 + dev: true + + /@types/jest@28.1.8: + resolution: {integrity: sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw==} + dependencies: + expect: 28.1.3 + pretty-format: 28.1.3 + dev: true + + /@types/js-yaml@4.0.5: + resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} + dev: true + + /@types/json-schema@7.0.12: + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + dev: true + + /@types/json-stable-stringify@1.0.34: + resolution: {integrity: sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw==} + dev: true + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 18.6.2 + dev: false + + /@types/node@18.6.2: + resolution: {integrity: sha512-KcfkBq9H4PI6Vpu5B/KoPeuVDAbmi+2mDBqGPGUgoL7yXQtcWGu2vJWmmRkneWK3Rh0nIAX192Aa87AqKHYChQ==} + + /@types/parse-json@4.0.0: + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + dev: true + + /@types/prettier@2.7.3: + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + dev: true + + /@types/responselike@1.0.0: + resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + dependencies: + '@types/node': 18.6.2 + dev: false + + /@types/stack-utils@2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + dev: true + + /@types/ws@8.5.5: + resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} + dependencies: + '@types/node': 18.6.2 + dev: true + + /@types/yargs-parser@21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: true + + /@types/yargs@17.0.24: + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@typescript-eslint/eslint-plugin@5.36.2(@typescript-eslint/parser@5.36.2)(eslint@8.23.0)(typescript@4.8.2): + resolution: {integrity: sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.36.2(eslint@8.23.0)(typescript@4.8.2) + '@typescript-eslint/scope-manager': 5.36.2 + '@typescript-eslint/type-utils': 5.36.2(eslint@8.23.0)(typescript@4.8.2) + '@typescript-eslint/utils': 5.36.2(eslint@8.23.0)(typescript@4.8.2) + debug: 4.3.4 + eslint: 8.23.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.4 + regexpp: 3.2.0 + semver: 7.5.1 + tsutils: 3.21.0(typescript@4.8.2) + typescript: 4.8.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.36.2(eslint@8.23.0)(typescript@4.8.2): + resolution: {integrity: sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.36.2 + '@typescript-eslint/types': 5.36.2 + '@typescript-eslint/typescript-estree': 5.36.2(typescript@4.8.2) + debug: 4.3.4 + eslint: 8.23.0 + typescript: 4.8.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.36.2: + resolution: {integrity: sha512-cNNP51L8SkIFSfce8B1NSUBTJTu2Ts4nWeWbFrdaqjmn9yKrAaJUBHkyTZc0cL06OFHpb+JZq5AUHROS398Orw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.36.2 + '@typescript-eslint/visitor-keys': 5.36.2 + dev: true + + /@typescript-eslint/type-utils@5.36.2(eslint@8.23.0)(typescript@4.8.2): + resolution: {integrity: sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.36.2(typescript@4.8.2) + '@typescript-eslint/utils': 5.36.2(eslint@8.23.0)(typescript@4.8.2) + debug: 4.3.4 + eslint: 8.23.0 + tsutils: 3.21.0(typescript@4.8.2) + typescript: 4.8.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.36.2: + resolution: {integrity: sha512-9OJSvvwuF1L5eS2EQgFUbECb99F0mwq501w0H0EkYULkhFa19Qq7WFbycdw1PexAc929asupbZcgjVIe6OK/XQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.36.2(typescript@4.8.2): + resolution: {integrity: sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.36.2 + '@typescript-eslint/visitor-keys': 5.36.2 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.1 + tsutils: 3.21.0(typescript@4.8.2) + typescript: 4.8.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.36.2(eslint@8.23.0)(typescript@4.8.2): + resolution: {integrity: sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.12 + '@typescript-eslint/scope-manager': 5.36.2 + '@typescript-eslint/types': 5.36.2 + '@typescript-eslint/typescript-estree': 5.36.2(typescript@4.8.2) + eslint: 8.23.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0(eslint@8.23.0) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.36.2: + resolution: {integrity: sha512-BtRvSR6dEdrNt7Net2/XDjbYKU5Ml6GqJgVfXT0CxTCJlnIqK7rAGreuWKMT2t8cFUT2Msv5oxw0GMRD7T5J7A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.36.2 + eslint-visitor-keys: 3.4.1 + dev: true + + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: true + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: true + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: true + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: true + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: true + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + dev: true + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: true + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + dev: true + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + dev: true + + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@whatwg-node/events@0.0.2: + resolution: {integrity: sha512-WKj/lI4QjnLuPrim0cfO7i+HsDSXHxNv1y0CrJhdntuO3hxWZmnXCwNDnwOvry11OjRin6cgWNF+j/9Pn8TN4w==} + dev: true + + /@whatwg-node/events@0.0.3: + resolution: {integrity: sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA==} + dev: true + + /@whatwg-node/fetch@0.6.9(@types/node@18.6.2): + resolution: {integrity: sha512-JfrBCJdMu9n9OARc0e/hPHcD98/8Nz1CKSdGYDg6VbObDkV/Ys30xe5i/wPOatYbxuvatj1kfWeHf7iNX3i17w==} + dependencies: + '@peculiar/webcrypto': 1.4.3 + '@whatwg-node/node-fetch': 0.0.5(@types/node@18.6.2) + busboy: 1.6.0 + urlpattern-polyfill: 6.0.2 + web-streams-polyfill: 3.2.1 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@whatwg-node/fetch@0.8.8: + resolution: {integrity: sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg==} + dependencies: + '@peculiar/webcrypto': 1.4.3 + '@whatwg-node/node-fetch': 0.3.6 + busboy: 1.6.0 + urlpattern-polyfill: 8.0.2 + web-streams-polyfill: 3.2.1 + dev: true + + /@whatwg-node/node-fetch@0.0.5(@types/node@18.6.2): + resolution: {integrity: sha512-hbccmaSZaItdsRuBKBEEhLoO+5oXJPxiyd0kG2xXd0Dh3Rt+vZn4pADHxuSiSHLd9CM+S2z4+IxlEGbWUgiz9g==} + peerDependencies: + '@types/node': ^18.0.6 + dependencies: + '@types/node': 18.6.2 + '@whatwg-node/events': 0.0.2 + busboy: 1.6.0 + tslib: 2.6.0 + dev: true + + /@whatwg-node/node-fetch@0.3.6: + resolution: {integrity: sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA==} + dependencies: + '@whatwg-node/events': 0.0.3 + busboy: 1.6.0 + fast-querystring: 1.1.2 + fast-url-parser: 1.1.3 + tslib: 2.6.0 + dev: true + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true + + /acorn-import-assertions@1.9.0(acorn@8.10.0): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.10.0 + dev: true + + /acorn-jsx@5.3.2(acorn@8.10.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.10.0 + dev: true + + /acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /acorn@8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-sequence-parser@1.1.0: + resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + dev: true + + /array-includes@3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} + 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 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.flat@1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + dev: true + + /arraybuffer.prototype.slice@1.0.1: + resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + get-intrinsic: 1.2.1 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: true + + /asn1js@3.0.5: + resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} + engines: {node: '>=12.0.0'} + dependencies: + pvtsutils: 1.3.2 + pvutils: 1.1.3 + tslib: 2.6.0 + dev: true + + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + /auto-bind@4.0.0: + resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} + engines: {node: '>=8'} + dev: true + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /axios@0.27.2: + resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} + dependencies: + follow-redirects: 1.15.2 + form-data: 4.0.0 + transitivePeerDependencies: + - debug + dev: false + + /babel-jest@28.1.3(@babel/core@7.22.5): + resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.22.5 + '@jest/transform': 28.1.3 + '@types/babel__core': 7.20.1 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 28.1.3(@babel/core@7.22.5) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@28.1.3: + resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 + '@types/babel__core': 7.20.1 + '@types/babel__traverse': 7.20.1 + dev: true + + /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: + resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.5): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) + dev: true + + /babel-preset-fbjs@3.4.0(@babel/core@7.22.5): + resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.5 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.5) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-classes': 7.22.6(@babel/core@7.22.5) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.5) + babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-preset-jest@28.1.3(@babel/core@7.22.5): + resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.5 + babel-plugin-jest-hoist: 28.1.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist@4.21.7: + resolution: {integrity: sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001497 + electron-to-chromium: 1.4.426 + node-releases: 2.0.12 + update-browserslist-db: 1.0.11(browserslist@4.21.7) + dev: true + + /browserslist@4.21.9: + resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001517 + electron-to-chromium: 1.4.467 + node-releases: 2.0.12 + update-browserslist-db: 1.0.11(browserslist@4.21.9) + dev: true + + /bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + dependencies: + fast-json-stable-stringify: 2.1.0 + dev: true + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /bundle-require@3.1.2(esbuild@0.15.18): + resolution: {integrity: sha512-Of6l6JBAxiyQ5axFxUM6dYeP/W7X2Sozeo/4EYB9sJhL+dqL7TKjg+shwxp6jlu/6ZSERfsYtIpSJ1/x3XkAEA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.13' + dependencies: + esbuild: 0.15.18 + load-tsconfig: 0.2.5 + dev: true + + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: true + + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + dev: false + + /cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.3 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + dev: false + + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + dev: true + + /call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.4.1 + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite@1.0.30001497: + resolution: {integrity: sha512-I4/duVK4wL6rAK/aKZl3HXB4g+lIZvaT4VLAn2rCgJ38jVLb0lv2Xug6QuqmxXFVRJMF74SPPWPJ/1Sdm3vCzw==} + dev: true + + /caniuse-lite@1.0.30001517: + resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} + dev: true + + /capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + dependencies: + no-case: 3.0.4 + tslib: 2.4.1 + upper-case-first: 2.0.2 + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /change-case-all@1.0.14: + resolution: {integrity: sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==} + dependencies: + change-case: 4.1.2 + is-lower-case: 2.0.2 + is-upper-case: 2.0.2 + lower-case: 2.0.2 + lower-case-first: 2.0.2 + sponge-case: 1.0.1 + swap-case: 2.0.2 + title-case: 3.0.3 + upper-case: 2.0.2 + upper-case-first: 2.0.2 + dev: true + + /change-case-all@1.0.15: + resolution: {integrity: sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==} + dependencies: + change-case: 4.1.2 + is-lower-case: 2.0.2 + is-upper-case: 2.0.2 + lower-case: 2.0.2 + lower-case-first: 2.0.2 + sponge-case: 1.0.1 + swap-case: 2.0.2 + title-case: 3.0.3 + upper-case: 2.0.2 + upper-case-first: 2.0.2 + dev: true + + /change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + dependencies: + camel-case: 4.1.2 + capital-case: 1.0.4 + constant-case: 3.0.4 + dot-case: 3.0.4 + header-case: 2.0.4 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + path-case: 3.0.4 + sentence-case: 3.0.4 + snake-case: 3.0.4 + tslib: 2.4.1 + dev: true + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: true + + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + dev: true + + /cjs-module-lexer@1.2.2: + resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} + dev: true + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-spinners@2.9.0: + resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + engines: {node: '>=6'} + dev: true + + /cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + dependencies: + mimic-response: 1.0.1 + dev: false + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /collect-v8-coverage@1.0.1: + resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + dev: true + + /common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true + + /constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + dependencies: + no-case: 3.0.4 + tslib: 2.4.1 + upper-case: 2.0.2 + dev: true + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true + + /cosmiconfig-typescript-loader@4.3.0(@types/node@18.6.2)(cosmiconfig@7.1.0)(ts-node@10.9.1)(typescript@4.8.2): + resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=7' + ts-node: '>=10' + typescript: '>=3' + dependencies: + '@types/node': 18.6.2 + cosmiconfig: 7.1.0 + ts-node: 10.9.1(@types/node@18.6.2)(typescript@4.8.2) + typescript: 4.8.2 + dev: true + + /cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + + /cosmiconfig@8.0.0: + resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} + engines: {node: '>=14'} + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + dev: true + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + + /cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + dependencies: + node-fetch: 2.6.12 + transitivePeerDependencies: + - encoding + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /dataloader@2.2.2: + resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} + dev: true + + /debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + dev: false + + /dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + + /defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + dev: false + + /define-properties@1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + /dependency-graph@0.11.0: + resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} + engines: {node: '>= 0.6.0'} + dev: true + + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /diff-sequences@28.1.1: + resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dependencies: + no-case: 3.0.4 + tslib: 2.4.1 + dev: true + + /dotenv@16.0.2: + resolution: {integrity: sha512-JvpYKUmzQhYoIFgK2MOnF3bciIZoItIIoryihy0rIA+H4Jy0FmgyKYAHCTN98P5ybGSJcIFbh6QKeJdtZd1qhA==} + engines: {node: '>=12'} + dev: true + + /dset@3.1.2: + resolution: {integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==} + engines: {node: '>=4'} + dev: true + + /electron-to-chromium@1.4.426: + resolution: {integrity: sha512-dWuNH+XUT9hdFHASfMpcZGW5kUyJvllumJkXaXiswuCkoaFIFI89aykBPuHEi1YUWQGRCqvIO0BUdmeFJ4W4Ww==} + dev: true + + /electron-to-chromium@1.4.467: + resolution: {integrity: sha512-2qI70O+rR4poYeF2grcuS/bCps5KJh6y1jtZMDDEteyKJQrzLOEhFyXCLcHW6DTBjKjWkk26JhWoAi+Ux9A0fg==} + dev: true + + /emittery@0.10.2: + resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} + engines: {node: '>=12'} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: false + + /enhanced-resolve@5.14.1: + resolution: {integrity: sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-abstract@1.22.1: + resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.1 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.1 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.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.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.0 + safe-array-concat: 1.0.0 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + 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.11 + dev: true + + /es-module-lexer@1.3.0: + resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} + dev: true + + /es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: true + + /es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /esbuild-android-64@0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64@0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64@0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64@0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64@0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64@0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32@0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64@0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le@0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le@0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x@0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64@0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64@0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64@0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32@0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64@0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64@0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild@0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.26.0)(eslint@8.23.0): + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 8.23.0 + eslint-plugin-import: 2.26.0(@typescript-eslint/parser@5.36.2)(eslint@8.23.0) + object.assign: 4.1.4 + object.entries: 1.1.6 + semver: 6.3.0 + dev: true + + /eslint-config-airbnb-typescript@17.0.0(@typescript-eslint/eslint-plugin@5.36.2)(@typescript-eslint/parser@5.36.2)(eslint-plugin-import@2.26.0)(eslint@8.23.0): + resolution: {integrity: sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.13.0 + '@typescript-eslint/parser': ^5.0.0 + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.3 + dependencies: + '@typescript-eslint/eslint-plugin': 5.36.2(@typescript-eslint/parser@5.36.2)(eslint@8.23.0)(typescript@4.8.2) + '@typescript-eslint/parser': 5.36.2(eslint@8.23.0)(typescript@4.8.2) + eslint: 8.23.0 + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.26.0)(eslint@8.23.0) + eslint-plugin-import: 2.26.0(@typescript-eslint/parser@5.36.2)(eslint@8.23.0) + dev: true + + /eslint-config-prettier@8.5.0(eslint@8.23.0): + resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.23.0 + dev: true + + /eslint-import-resolver-node@0.3.7: + resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + dependencies: + debug: 3.2.7 + is-core-module: 2.12.1 + resolve: 1.22.2 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.36.2)(eslint-import-resolver-node@0.3.7)(eslint@8.23.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.36.2(eslint@8.23.0)(typescript@4.8.2) + debug: 3.2.7 + eslint: 8.23.0 + eslint-import-resolver-node: 0.3.7 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-import@2.26.0(@typescript-eslint/parser@5.36.2)(eslint@8.23.0): + resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.36.2(eslint@8.23.0)(typescript@4.8.2) + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + debug: 2.6.9 + doctrine: 2.1.0 + eslint: 8.23.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.36.2)(eslint-import-resolver-node@0.3.7)(eslint@8.23.0) + has: 1.0.3 + is-core-module: 2.12.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.2 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope@7.2.1: + resolution: {integrity: sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils@3.0.0(eslint@8.23.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.23.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys@3.4.1: + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.23.0: + resolution: {integrity: sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.4.1 + '@humanwhocodes/config-array': 0.10.7 + '@humanwhocodes/gitignore-to-minimatch': 1.0.2 + '@humanwhocodes/module-importer': 1.0.1 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.1 + eslint-utils: 3.0.0(eslint@8.23.0) + eslint-visitor-keys: 3.4.1 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + functional-red-black-tree: 1.0.1 + glob-parent: 6.0.2 + globals: 13.20.0 + globby: 11.1.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.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 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.1 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expect@28.1.3: + resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/expect-utils': 28.1.3 + jest-get-type: 28.0.2 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + dev: true + + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /extract-files@11.0.0: + resolution: {integrity: sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==} + engines: {node: ^12.20 || >= 14.13} + dev: true + + /extract-files@9.0.0: + resolution: {integrity: sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==} + engines: {node: ^10.17.0 || ^12.0.0 || >= 13.7.0} + dev: true + + /fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fast-querystring@1.1.2: + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + dependencies: + fast-decode-uri-component: 1.0.1 + dev: true + + /fast-url-parser@1.1.3: + resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} + dependencies: + punycode: 1.4.1 + dev: true + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: true + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + + /fbjs-css-vars@1.0.2: + resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} + dev: true + + /fbjs@3.0.5: + resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} + dependencies: + cross-fetch: 3.1.8 + fbjs-css-vars: 1.0.2 + loose-envify: 1.4.0 + object-assign: 4.1.1 + promise: 7.3.1 + setimmediate: 1.0.5 + ua-parser-js: 1.0.35 + transitivePeerDependencies: + - encoding + dev: true + + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true + + /follow-redirects@1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /form-data@3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /function.prototype.name@1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + functions-have-names: 1.2.3 + dev: true + + /functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-proto: 1.0.1 + has-symbols: 1.0.3 + dev: true + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: false + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true + + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.0 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.1 + dev: true + + /got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.0 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + dev: false + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /graphql-config@4.5.0(@types/node@18.6.2)(graphql@16.7.1): + resolution: {integrity: sha512-x6D0/cftpLUJ0Ch1e5sj1TZn6Wcxx4oMfmhaG9shM0DKajA9iR+j1z86GSTQ19fShbGvrSSvbIQsHku6aQ6BBw==} + engines: {node: '>= 10.0.0'} + peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true + dependencies: + '@graphql-tools/graphql-file-loader': 7.5.17(graphql@16.7.1) + '@graphql-tools/json-file-loader': 7.4.18(graphql@16.7.1) + '@graphql-tools/load': 7.8.14(graphql@16.7.1) + '@graphql-tools/merge': 8.4.2(graphql@16.7.1) + '@graphql-tools/url-loader': 7.17.18(@types/node@18.6.2)(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + cosmiconfig: 8.0.0 + graphql: 16.7.1 + jiti: 1.17.1 + minimatch: 4.2.3 + string-env-interpolation: 1.0.1 + tslib: 2.6.0 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - utf-8-validate + dev: true + + /graphql-request@5.1.0(graphql@16.7.1): + resolution: {integrity: sha512-0OeRVYigVwIiXhNmqnPDt+JhMzsjinxHE7TVy3Lm6jUzav0guVcL0lfSbi6jVTRAxcbwgyr6yrZioSHxf9gHzw==} + peerDependencies: + graphql: 14 - 16 + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.7.1) + cross-fetch: 3.1.8 + extract-files: 9.0.0 + form-data: 3.0.1 + graphql: 16.7.1 + transitivePeerDependencies: + - encoding + dev: true + + /graphql-request@6.1.0(graphql@16.7.1): + resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} + peerDependencies: + graphql: 14 - 16 + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.7.1) + cross-fetch: 3.1.8 + graphql: 16.7.1 + transitivePeerDependencies: + - encoding + dev: true + + /graphql-tag@2.12.6(graphql@16.7.1): + resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + graphql: 16.7.1 + tslib: 2.4.1 + dev: true + + /graphql-ws@5.12.1(graphql@16.7.1): + resolution: {integrity: sha512-umt4f5NnMK46ChM2coO36PTFhHouBrK9stWWBczERguwYrGnPNxJ9dimU6IyOBfOkC6Izhkg4H8+F51W/8CYDg==} + engines: {node: '>=10'} + peerDependencies: + graphql: '>=0.11 <=16' + dependencies: + graphql: 16.7.1 + dev: true + + /graphql@16.7.1: + resolution: {integrity: sha512-DRYR9tf+UGU0KOsMcKAlXeFfX89UiiIZ0dRU3mR0yJfu6OjZqUcp68NnFLnqQU5RexygFoDy1EW+ccOYcPfmHg==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + dev: true + + /handlebars@4.7.7: + resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + dev: true + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.2.1 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + + /header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + dependencies: + capital-case: 1.0.4 + tslib: 2.4.1 + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: false + + /http-proxy-agent@6.1.1: + resolution: {integrity: sha512-JRCz+4Whs6yrrIoIlrH+ZTmhrRwtMnmOHsHn8GFEn9O2sVfSE+DAZ3oyyGIKF8tjJEeSJmP89j7aTjVsSqsU0g==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: false + + /https-proxy-agent@6.2.1: + resolution: {integrity: sha512-ONsE3+yfZF2caH5+bJlcddtWqNI3Gvs5A38+ngvljxaBiRXRswym2c7yf8UAeFpRFKjFNHIFEHqR/OLAWJzyiA==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + + /immutable@3.7.6: + resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} + engines: {node: '>=0.8.0'} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-from@4.0.0: + resolution: {integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==} + engines: {node: '>=12.2'} + dev: true + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /inquirer@8.2.5: + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + side-channel: 1.0.4 + dev: true + + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + dev: true + + /is-absolute@1.0.0: + resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} + engines: {node: '>=0.10.0'} + dependencies: + is-relative: 1.0.0 + is-windows: 1.0.2 + dev: true + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + dependencies: + has: 1.0.3 + dev: true + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-lower-case@2.0.2: + resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} + dependencies: + tslib: 2.4.1 + dev: true + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-relative@1.0.0: + resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} + engines: {node: '>=0.10.0'} + dependencies: + is-unc-path: 1.0.0 + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.11 + dev: true + + /is-unc-path@1.0.0: + resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} + engines: {node: '>=0.10.0'} + dependencies: + unc-path-regex: 0.1.2 + dev: true + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-upper-case@2.0.2: + resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} + dependencies: + tslib: 2.4.1 + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isomorphic-ws@5.0.0(ws@8.13.0): + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.13.0 + dev: true + + /istanbul-lib-coverage@3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.22.5 + '@babel/parser': 7.22.5 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + dev: true + + /jest-changed-files@28.1.3: + resolution: {integrity: sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + execa: 5.1.1 + p-limit: 3.1.0 + dev: true + + /jest-circus@28.1.3: + resolution: {integrity: sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/environment': 28.1.3 + '@jest/expect': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.6.2 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + is-generator-fn: 2.1.0 + jest-each: 28.1.3 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-runtime: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 + p-limit: 3.1.0 + pretty-format: 28.1.3 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-cli@28.1.3(@types/node@18.6.2)(ts-node@10.9.1): + resolution: {integrity: sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 28.1.3(ts-node@10.9.1) + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 28.1.3(@types/node@18.6.2)(ts-node@10.9.1) + jest-util: 28.1.3 + jest-validate: 28.1.3 + prompts: 2.4.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /jest-config@28.1.3(@types/node@18.6.2)(ts-node@10.9.1): + resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.22.5 + '@jest/test-sequencer': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.6.2 + babel-jest: 28.1.3(@babel/core@7.22.5) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 28.1.3 + jest-environment-node: 28.1.3 + jest-get-type: 28.0.2 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-runner: 28.1.3 + jest-util: 28.1.3 + jest-validate: 28.1.3 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 28.1.3 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@18.6.2)(typescript@4.8.2) + transitivePeerDependencies: + - supports-color + dev: true + + /jest-diff@28.1.3: + resolution: {integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 28.1.1 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + dev: true + + /jest-docblock@28.1.1: + resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@28.1.3: + resolution: {integrity: sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + chalk: 4.1.2 + jest-get-type: 28.0.2 + jest-util: 28.1.3 + pretty-format: 28.1.3 + dev: true + + /jest-environment-node@28.1.3: + resolution: {integrity: sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/environment': 28.1.3 + '@jest/fake-timers': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.6.2 + jest-mock: 28.1.3 + jest-util: 28.1.3 + dev: true + + /jest-get-type@28.0.2: + resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + + /jest-haste-map@28.1.3: + resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@types/graceful-fs': 4.1.6 + '@types/node': 18.6.2 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + jest-worker: 28.1.3 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /jest-leak-detector@28.1.3: + resolution: {integrity: sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + dev: true + + /jest-matcher-utils@28.1.3: + resolution: {integrity: sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 28.1.3 + jest-get-type: 28.0.2 + pretty-format: 28.1.3 + dev: true + + /jest-message-util@28.1.3: + resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/code-frame': 7.22.5 + '@jest/types': 28.1.3 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 28.1.3 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@28.1.3: + resolution: {integrity: sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@types/node': 18.6.2 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@28.1.3): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 28.1.3 + dev: true + + /jest-regex-util@28.0.2: + resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + + /jest-resolve-dependencies@28.1.3: + resolution: {integrity: sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + jest-regex-util: 28.0.2 + jest-snapshot: 28.1.3 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@28.1.3: + resolution: {integrity: sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 28.1.3 + jest-pnp-resolver: 1.2.3(jest-resolve@28.1.3) + jest-util: 28.1.3 + jest-validate: 28.1.3 + resolve: 1.22.2 + resolve.exports: 1.1.1 + slash: 3.0.0 + dev: true + + /jest-runner@28.1.3: + resolution: {integrity: sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/console': 28.1.3 + '@jest/environment': 28.1.3 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.6.2 + chalk: 4.1.2 + emittery: 0.10.2 + graceful-fs: 4.2.11 + jest-docblock: 28.1.1 + jest-environment-node: 28.1.3 + jest-haste-map: 28.1.3 + jest-leak-detector: 28.1.3 + jest-message-util: 28.1.3 + jest-resolve: 28.1.3 + jest-runtime: 28.1.3 + jest-util: 28.1.3 + jest-watcher: 28.1.3 + jest-worker: 28.1.3 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@28.1.3: + resolution: {integrity: sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/environment': 28.1.3 + '@jest/fake-timers': 28.1.3 + '@jest/globals': 28.1.3 + '@jest/source-map': 28.1.2 + '@jest/test-result': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + chalk: 4.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + execa: 5.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 28.1.3 + jest-message-util: 28.1.3 + jest-mock: 28.1.3 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.3 + jest-snapshot: 28.1.3 + jest-util: 28.1.3 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@28.1.3: + resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/core': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.5) + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + '@jest/expect-utils': 28.1.3 + '@jest/transform': 28.1.3 + '@jest/types': 28.1.3 + '@types/babel__traverse': 7.20.1 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + chalk: 4.1.2 + expect: 28.1.3 + graceful-fs: 4.2.11 + jest-diff: 28.1.3 + jest-get-type: 28.0.2 + jest-haste-map: 28.1.3 + jest-matcher-utils: 28.1.3 + jest-message-util: 28.1.3 + jest-util: 28.1.3 + natural-compare: 1.4.0 + pretty-format: 28.1.3 + semver: 7.5.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@28.1.3: + resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@types/node': 18.6.2 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@28.1.3: + resolution: {integrity: sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 28.0.2 + leven: 3.1.0 + pretty-format: 28.1.3 + dev: true + + /jest-watcher@28.1.3: + resolution: {integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/test-result': 28.1.3 + '@jest/types': 28.1.3 + '@types/node': 18.6.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.10.2 + jest-util: 28.1.3 + string-length: 4.0.2 + dev: true + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 18.6.2 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest-worker@28.1.3: + resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@types/node': 18.6.2 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@28.1.3(@types/node@18.6.2)(ts-node@10.9.1): + resolution: {integrity: sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 28.1.3(ts-node@10.9.1) + '@jest/types': 28.1.3 + import-local: 3.1.0 + jest-cli: 28.1.3(@types/node@18.6.2)(ts-node@10.9.1) + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /jiti@1.17.1: + resolution: {integrity: sha512-NZIITw8uZQFuzQimqjUxIrIcEdxYDFIe/0xYfIlVXTkiBjjyBEvgasj5bb0/cHtPRD/NziPbT312sFrkI5ALpw==} + hasBin: true + dev: true + + /jose@4.14.4: + resolution: {integrity: sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==} + dev: true + + /joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: false + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-ref-parser@9.0.9: + resolution: {integrity: sha512-qcP2lmGy+JUoQJ4DOQeLaZDqH9qSkeGCK3suKWxJXS82dg728Mn3j97azDMaOUmJAN4uCq91LdPx4K7E8F1a7Q==} + engines: {node: '>=10'} + deprecated: Please switch to @apidevtools/json-schema-ref-parser + dependencies: + '@apidevtools/json-schema-ref-parser': 9.0.9 + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json-stable-stringify@1.0.2: + resolution: {integrity: sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==} + dependencies: + jsonify: 0.0.1 + dev: true + + /json-to-pretty-yaml@1.2.2: + resolution: {integrity: sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==} + engines: {node: '>= 0.2.0'} + dependencies: + remedial: 1.0.8 + remove-trailing-spaces: 1.0.8 + dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonify@0.0.1: + resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} + dev: true + + /keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + dependencies: + json-buffer: 3.0.1 + dev: false + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /listr2@4.0.5: + resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} + engines: {node: '>=12'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.20 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.0 + rxjs: 7.8.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + dev: true + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: true + + /lower-case-first@2.0.2: + resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} + dependencies: + tslib: 2.4.1 + dev: true + + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.4.1 + dev: true + + /lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + dev: false + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + dev: true + + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.0 + dev: true + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + dev: true + + /marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} + engines: {node: '>= 12'} + hasBin: true + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /meros@1.3.0(@types/node@18.6.2): + resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} + engines: {node: '>=13'} + peerDependencies: + '@types/node': '>=13' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@types/node': 18.6.2 + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + dev: false + + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: false + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@4.2.3: + resolution: {integrity: sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.4.1 + dev: true + + /node-fetch@2.6.12: + resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-releases@2.0.12: + resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} + dev: true + + /normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + dependencies: + remove-trailing-separator: 1.1.0 + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: false + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries@1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /object.values@1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + dev: false + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + dependencies: + dot-case: 3.0.4 + tslib: 2.4.1 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-filepath@1.0.2: + resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} + engines: {node: '>=0.8'} + dependencies: + is-absolute: 1.0.0 + map-cache: 0.2.2 + path-root: 0.1.1 + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.22.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.4.1 + dev: true + + /path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + dependencies: + dot-case: 3.0.4 + tslib: 2.4.1 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-root-regex@0.1.2: + resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} + engines: {node: '>=0.10.0'} + dev: true + + /path-root@0.1.1: + resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} + engines: {node: '>=0.10.0'} + dependencies: + path-root-regex: 0.1.2 + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pirates@4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /postcss-load-config@3.1.4(ts-node@10.9.1): + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + ts-node: 10.9.1(@types/node@18.6.2)(typescript@4.8.2) + yaml: 1.10.2 + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier@2.6.2: + resolution: {integrity: sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /pretty-format@28.1.3: + resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/schemas': 28.1.3 + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + dependencies: + asap: 2.0.6 + dev: true + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: false + + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: true + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: true + + /pvtsutils@1.3.2: + resolution: {integrity: sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ==} + dependencies: + tslib: 2.6.0 + dev: true + + /pvutils@1.1.3: + resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} + engines: {node: '>=6.0.0'} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: false + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: true + + /regexp.prototype.flags@1.5.0: + resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + dev: true + + /regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /relay-runtime@12.0.0: + resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} + dependencies: + '@babel/runtime': 7.22.6 + fbjs: 3.0.5 + invariant: 2.2.4 + transitivePeerDependencies: + - encoding + dev: true + + /remedial@1.0.8: + resolution: {integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==} + dev: true + + /remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + dev: true + + /remove-trailing-spaces@1.0.8: + resolution: {integrity: sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==} + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: true + + /resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: false + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve.exports@1.1.1: + resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + hasBin: true + dependencies: + is-core-module: 2.12.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + dependencies: + lowercase-keys: 2.0.0 + dev: false + + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.0 + dev: true + + /safe-array-concat@1.0.0: + resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-regex: 1.1.4 + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.12 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true + + /scuid@1.1.0: + resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} + dev: true + + /semver@6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + dev: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.1: + resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + dependencies: + no-case: 3.0.4 + tslib: 2.4.1 + upper-case-first: 2.0.2 + dev: true + + /serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + dependencies: + randombytes: 2.1.0 + dev: true + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: true + + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: true + + /shiki@0.14.3: + resolution: {integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==} + dependencies: + ansi-sequence-parser: 1.1.0 + jsonc-parser: 3.2.0 + vscode-oniguruma: 1.7.0 + vscode-textmate: 8.0.0 + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /signedsource@1.0.0: + resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} + dev: true + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + dependencies: + dot-case: 3.0.4 + tslib: 2.4.1 + dev: true + + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + dependencies: + whatwg-url: 7.1.0 + dev: true + + /sponge-case@1.0.1: + resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} + dependencies: + tslib: 2.4.1 + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: true + + /string-env-interpolation@1.0.1: + resolution: {integrity: sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==} + dev: true + + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /string.prototype.trimend@1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /string.prototype.trimstart@1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /sucrase@3.32.0: + resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.5 + ts-interface-checker: 0.1.13 + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /swap-case@2.0.2: + resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} + dependencies: + tslib: 2.4.1 + dev: true + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + dev: true + + /terser-webpack-plugin@5.3.9(esbuild@0.15.18)(webpack@5.88.2): + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + esbuild: 0.15.18 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.1 + terser: 5.19.2 + webpack: 5.88.2(esbuild@0.15.18) + dev: true + + /terser@5.19.2: + resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.10.0 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /title-case@3.0.3: + resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} + dependencies: + tslib: 2.4.1 + dev: true + + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: true + + /tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + dependencies: + punycode: 2.3.0 + dev: true + + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + + /ts-jest@28.0.8(@babel/core@7.22.5)(esbuild@0.15.18)(jest@28.1.3)(typescript@4.8.2): + resolution: {integrity: sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^28.0.0 + babel-jest: ^28.0.0 + esbuild: '*' + jest: ^28.0.0 + typescript: '>=4.3' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.22.5 + bs-logger: 0.2.6 + esbuild: 0.15.18 + fast-json-stable-stringify: 2.1.0 + jest: 28.1.3(@types/node@18.6.2)(ts-node@10.9.1) + jest-util: 28.1.3 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.5.1 + typescript: 4.8.2 + yargs-parser: 21.1.1 + dev: true + + /ts-loader@9.3.1(typescript@4.8.2)(webpack@5.88.2): + resolution: {integrity: sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw==} + engines: {node: '>=12.0.0'} + peerDependencies: + typescript: '*' + webpack: ^5.0.0 + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.14.1 + micromatch: 4.0.5 + semver: 7.5.1 + typescript: 4.8.2 + webpack: 5.88.2(esbuild@0.15.18) + dev: true + + /ts-log@2.2.5: + resolution: {integrity: sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==} + dev: true + + /ts-node@10.9.1(@types/node@18.6.2)(typescript@4.8.2): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.6.2 + acorn: 8.8.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.8.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib@2.4.1: + resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + dev: true + + /tslib@2.6.0: + resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} + dev: true + + /tsup@6.2.3(ts-node@10.9.1)(typescript@4.8.2): + resolution: {integrity: sha512-J5Pu2Dx0E1wlpIEsVFv9ryzP1pZ1OYsJ2cBHZ7GrKteytNdzaSz5hmLX7/nAxtypq+jVkVvA79d7S83ETgHQ5w==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: ^4.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + bundle-require: 3.1.2(esbuild@0.15.18) + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4 + esbuild: 0.15.18 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 3.1.4(ts-node@10.9.1) + resolve-from: 5.0.0 + rollup: 2.79.1 + source-map: 0.8.0-beta.0 + sucrase: 3.32.0 + tree-kill: 1.2.2 + typescript: 4.8.2 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /tsutils@3.21.0(typescript@4.8.2): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.8.2 + dev: true + + /tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + dev: false + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + 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.12 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: true + + /typedoc@0.23.28(typescript@4.8.2): + resolution: {integrity: sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==} + engines: {node: '>= 14.14'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x + dependencies: + lunr: 2.3.9 + marked: 4.3.0 + minimatch: 7.4.6 + shiki: 0.14.3 + typescript: 4.8.2 + dev: true + + /typescript@4.8.2: + resolution: {integrity: sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /ua-parser-js@1.0.35: + resolution: {integrity: sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==} + dev: true + + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /unc-path-regex@0.1.2: + resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} + engines: {node: '>=0.10.0'} + dev: true + + /universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + + /unixify@1.0.0: + resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} + engines: {node: '>=0.10.0'} + dependencies: + normalize-path: 2.1.1 + dev: true + + /update-browserslist-db@1.0.11(browserslist@4.21.7): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.7 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /update-browserslist-db@1.0.11(browserslist@4.21.9): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.9 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + dependencies: + tslib: 2.4.1 + dev: true + + /upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + dependencies: + tslib: 2.4.1 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + dev: true + + /urlpattern-polyfill@6.0.2: + resolution: {integrity: sha512-5vZjFlH9ofROmuWmXM9yj2wljYKgWstGwe8YTyiqM7hVum/g9LyCizPZtb3UqsuppVwety9QJmfc42VggLpTgg==} + dependencies: + braces: 3.0.2 + dev: true + + /urlpattern-polyfill@8.0.2: + resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + + /v8-to-istanbul@9.1.0: + resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + dev: true + + /value-or-promise@1.0.12: + resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} + engines: {node: '>=12'} + dev: true + + /vscode-oniguruma@1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + dev: true + + /vscode-textmate@8.0.0: + resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} + dev: true + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: true + + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + + /web-streams-polyfill@3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: true + + /webcrypto-core@1.7.7: + resolution: {integrity: sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g==} + dependencies: + '@peculiar/asn1-schema': 2.3.6 + '@peculiar/json-schema': 1.1.12 + asn1js: 3.0.5 + pvtsutils: 1.3.2 + tslib: 2.6.0 + dev: true + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: true + + /webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack@5.88.2(esbuild@0.15.18): + resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.4 + '@types/estree': 1.0.1 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.10.0 + acorn-import-assertions: 1.9.0(acorn@8.10.0) + browserslist: 4.21.9 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.3.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.9(esbuild@0.15.18)(webpack@5.88.2) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: true + + /whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: true + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: true + + /which-typed-array@1.1.11: + resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml-ast-parser@0.0.43: + resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} + dev: true + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + '@github.com/aptos-labs/openapi-typescript-codegen/releases/download/v0.24.0-p1/openapi-typescript-codegen-v0.24.0-p1.tgz': + resolution: {tarball: https://github.com/aptos-labs/openapi-typescript-codegen/releases/download/v0.24.0-p1/openapi-typescript-codegen-v0.24.0-p1.tgz} + name: openapi-typescript-codegen + version: 0.24.0 + hasBin: true + dependencies: + camelcase: 6.3.0 + commander: 9.5.0 + fs-extra: 10.1.0 + handlebars: 4.7.7 + json-schema-ref-parser: 9.0.9 + dev: true diff --git a/ecosystem/typescript/sdk_v2/src/account/account_address.ts b/ecosystem/typescript/sdk_v2/src/account/account_address.ts new file mode 100644 index 0000000000000..5c7899ae17985 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/account/account_address.ts @@ -0,0 +1,103 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +import { MaybeHexString, HexString } from "../utils"; +import { Serializer, Deserializer, Bytes } from "../bcs"; + +export class AccountAddress { + static readonly LENGTH: number = 32; + + readonly address: Bytes; + + static CORE_CODE_ADDRESS: AccountAddress = AccountAddress.fromHex("0x1"); + + constructor(address: Bytes) { + if (address.length !== AccountAddress.LENGTH) { + throw new Error("Expected address of length 32"); + } + this.address = address; + } + + /** + * Creates AccountAddress from a hex string. + * @param addr Hex string can be with a prefix or without a prefix, + * e.g. '0x1aa' or '1aa'. Hex string will be left padded with 0s if too short. + */ + static fromHex(addr: MaybeHexString): AccountAddress { + let address = HexString.ensure(addr); + + // If an address hex has odd number of digits, padd the hex string with 0 + // e.g. '1aa' would become '01aa'. + if (address.noPrefix().length % 2 !== 0) { + address = new HexString(`0${address.noPrefix()}`); + } + + const addressBytes = address.toUint8Array(); + + if (addressBytes.length > AccountAddress.LENGTH) { + // eslint-disable-next-line quotes + throw new Error("Hex string is too long. Address's length is 32 bytes."); + } else if (addressBytes.length === AccountAddress.LENGTH) { + return new AccountAddress(addressBytes); + } + + const res: Bytes = new Uint8Array(AccountAddress.LENGTH); + res.set(addressBytes, AccountAddress.LENGTH - addressBytes.length); + + return new AccountAddress(res); + } + + /** + * Checks if the string is a valid AccountAddress + * @param addr Hex string can be with a prefix or without a prefix, + * e.g. '0x1aa' or '1aa'. Hex string will be left padded with 0s if too short. + */ + static isValid(addr: MaybeHexString): boolean { + // At least one zero is required + if (addr === "") { + return false; + } + + let address = HexString.ensure(addr); + + // If an address hex has odd number of digits, padd the hex string with 0 + // e.g. '1aa' would become '01aa'. + if (address.noPrefix().length % 2 !== 0) { + address = new HexString(`0${address.noPrefix()}`); + } + + const addressBytes = address.toUint8Array(); + + return addressBytes.length <= AccountAddress.LENGTH; + } + + /** + * Return a hex string from account Address. + */ + toHexString(): MaybeHexString { + return HexString.fromUint8Array(this.address).hex(); + } + + serialize(serializer: Serializer): void { + serializer.serializeFixedBytes(this.address); + } + + static deserialize(deserializer: Deserializer): AccountAddress { + return new AccountAddress(deserializer.deserializeFixedBytes(AccountAddress.LENGTH)); + } + + /** + * Standardizes an address to the format "0x" followed by 64 lowercase hexadecimal digits. + */ + static standardizeAddress(address: string): string { + // Convert the address to lowercase + const lowercaseAddress = address.toLowerCase(); + // Remove the "0x" prefix if present + const addressWithoutPrefix = lowercaseAddress.startsWith("0x") ? lowercaseAddress.slice(2) : lowercaseAddress; + // Pad the address with leading zeros if necessary + // to ensure it has exactly 64 characters (excluding the "0x" prefix) + const addressWithPadding = addressWithoutPrefix.padStart(64, "0"); + // Return the standardized address with the "0x" prefix + return `0x${addressWithPadding}`; + } +} diff --git a/ecosystem/typescript/sdk_v2/src/account/aptos_account.ts b/ecosystem/typescript/sdk_v2/src/account/aptos_account.ts new file mode 100644 index 0000000000000..addb8788f458a --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/account/aptos_account.ts @@ -0,0 +1,191 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +import nacl from "tweetnacl"; +import * as bip39 from "@scure/bip39"; +import { bytesToHex } from "@noble/hashes/utils"; +import { sha3_256 as sha3Hash } from "@noble/hashes/sha3"; +import { derivePath } from "../utils/hd-key"; +import { HexString, MaybeHexString, Memoize } from "../utils"; +import { bcsToBytes } from "../bcs"; +import { AuthenticationKey, Ed25519PublicKey } from "../crypto"; +import { AccountAddress } from "./account_address"; + +export interface AptosAccountObject { + address?: MaybeHexString; + publicKeyHex?: MaybeHexString; + privateKeyHex: MaybeHexString; +} + +/** + * Class for creating and managing Aptos account + */ +export class AptosAccount { + /** + * A private key and public key, associated with the given account + */ + readonly signingKey: nacl.SignKeyPair; + + /** + * Address associated with the given account + */ + private readonly accountAddress: HexString; + + static fromAptosAccountObject(obj: AptosAccountObject): AptosAccount { + return new AptosAccount(HexString.ensure(obj.privateKeyHex).toUint8Array(), obj.address); + } + + /** + * Test derive path + */ + static isValidPath(path: string): boolean { + return /^m\/44'\/637'\/[0-9]+'\/[0-9]+'\/[0-9]+'+$/.test(path); + } + + /** + * Creates new account with bip44 path and mnemonics, + * @param path. (e.g. m/44'/637'/0'/0'/0') + * Detailed description: {@link https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki} + * @param mnemonics. + * @returns AptosAccount + */ + static fromDerivePath(path: string, mnemonics: string): AptosAccount { + if (!AptosAccount.isValidPath(path)) { + throw new Error("Invalid derivation path"); + } + + const normalizeMnemonics = mnemonics + .trim() + .split(/\s+/) + .map((part) => part.toLowerCase()) + .join(" "); + + const { key } = derivePath(path, bytesToHex(bip39.mnemonicToSeedSync(normalizeMnemonics))); + + return new AptosAccount(key); + } + + /** + * Creates new account instance. Constructor allows passing in an address, + * to handle account key rotation, where auth_key != public_key + * @param privateKeyBytes Private key from which account key pair will be generated. + * If not specified, new key pair is going to be created. + * @param address Account address (e.g. 0xe8012714cd17606cee7188a2a365eef3fe760be598750678c8c5954eb548a591). + * If not specified, a new one will be generated from public key + */ + constructor(privateKeyBytes?: Uint8Array | undefined, address?: MaybeHexString) { + if (privateKeyBytes) { + this.signingKey = nacl.sign.keyPair.fromSeed(privateKeyBytes.slice(0, 32)); + } else { + this.signingKey = nacl.sign.keyPair(); + } + this.accountAddress = HexString.ensure(address || this.authKey().hex()); + } + + /** + * This is the key by which Aptos account is referenced. + * It is the 32-byte of the SHA-3 256 cryptographic hash + * of the public key(s) concatenated with a signature scheme identifier byte + * @returns Address associated with the given account + */ + address(): HexString { + return this.accountAddress; + } + + /** + * This key enables account owners to rotate their private key(s) + * associated with the account without changing the address that hosts their account. + * See here for more info: {@link https://aptos.dev/concepts/accounts#single-signer-authentication} + * @returns Authentication key for the associated account + */ + @Memoize() + authKey(): HexString { + const pubKey = new Ed25519PublicKey(this.signingKey.publicKey); + const authKey = AuthenticationKey.fromEd25519PublicKey(pubKey); + return authKey.derivedAddress(); + } + + /** + * Takes source address and seeds and returns the resource account address + * @param sourceAddress Address used to derive the resource account + * @param seed The seed bytes + * @returns The resource account address + */ + + static getResourceAccountAddress(sourceAddress: MaybeHexString, seed: Uint8Array): HexString { + const source = bcsToBytes(AccountAddress.fromHex(sourceAddress)); + + const bytes = new Uint8Array([...source, ...seed, AuthenticationKey.DERIVE_RESOURCE_ACCOUNT_SCHEME]); + + const hash = sha3Hash.create(); + hash.update(bytes); + + return HexString.fromUint8Array(hash.digest()); + } + + /** + * This key is generated with Ed25519 scheme. + * Public key is used to check a signature of transaction, signed by given account + * @returns The public key for the associated account + */ + pubKey(): HexString { + return HexString.fromUint8Array(this.signingKey.publicKey); + } + + /** + * Signs specified `buffer` with account's private key + * @param buffer A buffer to sign + * @returns A signature HexString + */ + signBuffer(buffer: Uint8Array): HexString { + const signature = nacl.sign.detached(buffer, this.signingKey.secretKey); + return HexString.fromUint8Array(signature); + } + + /** + * Signs specified `hexString` with account's private key + * @param hexString A regular string or HexString to sign + * @returns A signature HexString + */ + signHexString(hexString: MaybeHexString): HexString { + const toSign = HexString.ensure(hexString).toUint8Array(); + return this.signBuffer(toSign); + } + + /** + * Verifies the signature of the message with the public key of the account + * @param message a signed message + * @param signature the signature of the message + */ + verifySignature(message: MaybeHexString, signature: MaybeHexString): boolean { + const rawMessage = HexString.ensure(message).toUint8Array(); + const rawSignature = HexString.ensure(signature).toUint8Array(); + return nacl.sign.detached.verify(rawMessage, rawSignature, this.signingKey.publicKey); + } + + /** + * Derives account address, public key and private key + * @returns AptosAccountObject instance. + * @example An example of the returned AptosAccountObject object + * ``` + * { + * address: "0xe8012714cd17606cee7188a2a365eef3fe760be598750678c8c5954eb548a591", + * publicKeyHex: "0xf56d8524faf79fbc0f48c13aeed3b0ce5dd376b4db93b8130a107c0a5e04ba04", + * privateKeyHex: `0x009c9f7c992a06cfafe916f125d8adb7a395fca243e264a8e56a4b3e6accf940 + * d2b11e9ece3049ce60e3c7b4a1c58aebfa9298e29a30a58a67f1998646135204` + * } + * ``` + */ + toPrivateKeyObject(): AptosAccountObject { + return { + address: this.address().hex(), + publicKeyHex: this.pubKey().hex(), + privateKeyHex: HexString.fromUint8Array(this.signingKey.secretKey.slice(0, 32)).hex(), + }; + } +} + +// Returns an account address as a HexString given either an AptosAccount or a MaybeHexString. +export function getAddressFromAccountOrAddress(accountOrAddress: AptosAccount | MaybeHexString): HexString { + return accountOrAddress instanceof AptosAccount ? accountOrAddress.address() : HexString.ensure(accountOrAddress); +} diff --git a/ecosystem/typescript/sdk_v2/src/account/index.ts b/ecosystem/typescript/sdk_v2/src/account/index.ts new file mode 100644 index 0000000000000..eb8036f9d8c83 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/account/index.ts @@ -0,0 +1,2 @@ +export * from "./aptos_account"; +export * from "./account_address"; diff --git a/ecosystem/typescript/sdk_v2/src/api/account.ts b/ecosystem/typescript/sdk_v2/src/api/account.ts new file mode 100644 index 0000000000000..72e22bd0b48e8 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/api/account.ts @@ -0,0 +1,129 @@ +import { AptosConfig } from "./aptos_config"; +import { Gen } from "../types"; +import { parseApiError, MaybeHexString } from "../utils"; +import { AnyNumber } from "../bcs"; +import { getData, getModule, getModules, getResource, getResources, getTransactions } from "../internal/account"; +import { PaginationArgs } from "../client/types"; + +export class Account { + readonly config: AptosConfig; + + constructor(config: AptosConfig) { + this.config = config; + } + + /** + * Queries an Aptos account by address + * @param accountAddress Hex-encoded 32 byte Aptos account address + * @returns Core account resource, used for identifying account and transaction execution + * @example An example of the returned account + * ``` + * { + * sequence_number: "1", + * authentication_key: "0x5307b5f4bc67829097a8ba9b43dba3b88261eeccd1f709d9bde240fc100fbb69" + * } + * ``` + */ + @parseApiError + async getData(accountAddress: MaybeHexString): Promise { + const data = await getData(this.config, accountAddress); + return data; + } + + /** + * Queries modules associated with given account + * + * Note: In order to get all account modules, this function may call the API + * multiple times as it paginates. + * + * @param accountAddress Hex-encoded 32 byte Aptos account address + * @param query.ledgerVersion Specifies ledger version of transactions. By default latest version will be used + * @returns Account modules array for a specific ledger version. + * Module is represented by MoveModule interface. It contains module `bytecode` and `abi`, + * which is JSON representation of a module + */ + @parseApiError + async getModules( + accountAddress: MaybeHexString, + query?: { ledgerVersion?: AnyNumber }, + ): Promise { + const modules = await getModules(this.config, accountAddress, query); + return modules; + } + + /** + * Queries module associated with given account by module name + * + * Note: In order to get all account resources, this function may call the API + * multiple times as it paginates. + * + * @param accountAddress Hex-encoded 32 byte Aptos account address + * @param moduleName The name of the module + * @param query.ledgerVersion Specifies ledger version of transactions. By default latest version will be used + * @returns Specified module. + * Module is represented by MoveModule interface. It contains module `bytecode` and `abi`, + * which JSON representation of a module + */ + @parseApiError + async getModule( + accountAddress: MaybeHexString, + moduleName: string, + query?: { ledgerVersion?: AnyNumber }, + ): Promise { + const module = await getModule(this.config, accountAddress, moduleName, query); + return module; + } + + /** + * Queries transactions sent by given account + * @param accountAddress Hex-encoded 32 byte Aptos account address + * @param query Optional pagination object + * @param query.start The sequence number of the start transaction of the page. Default is 0. + * @param query.limit The max number of transactions should be returned for the page. Default is 25. + * @returns An array of on-chain transactions, sent by account + */ + @parseApiError + async getTransactions(accountAddress: MaybeHexString, query?: PaginationArgs): Promise { + const transactions = await getTransactions(this.config, accountAddress, query); + return transactions; + } + + /** + * Queries all resources associated with given account + * @param accountAddress Hex-encoded 32 byte Aptos account address + * @param query.ledgerVersion Specifies ledger version of transactions. By default latest version will be used + * @returns Account resources for a specific ledger version + */ + @parseApiError + async getResources( + accountAddress: MaybeHexString, + query?: { ledgerVersion?: AnyNumber }, + ): Promise { + const resources = await getResources(this.config, accountAddress, query); + return resources; + } + + /** + * Queries resource associated with given account by resource type + * @param accountAddress Hex-encoded 32 byte Aptos account address + * @param resourceType String representation of an on-chain Move struct type + * @param query.ledgerVersion Specifies ledger version of transactions. By default latest version will be used + * @returns Account resource of specified type and ledger version + * @example An example of an account resource + * ``` + * { + * type: "0x1::aptos_coin::AptosCoin", + * data: { value: 6 } + * } + * ``` + */ + @parseApiError + async getResource( + accountAddress: MaybeHexString, + resourceType: Gen.MoveStructTag, + query?: { ledgerVersion?: AnyNumber }, + ): Promise { + const resource = await getResource(this.config, accountAddress, resourceType, query); + return resource; + } +} diff --git a/ecosystem/typescript/sdk_v2/src/api/aptos.ts b/ecosystem/typescript/sdk_v2/src/api/aptos.ts new file mode 100644 index 0000000000000..d51b59a1b9cee --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/api/aptos.ts @@ -0,0 +1,34 @@ +import { Account } from "./account"; +import { AptosConfig } from "./aptos_config"; +import { General } from "./general"; + +export class Aptos { + readonly config: AptosConfig; + + readonly account: Account; + + readonly general: General; + + /** + * This class is the main entry point into Aptos's + * APIs and separates functionality into different namespaces. + * + * To use the SDK, create a new Aptos instance to get access + * to all the sdk functionality. + * @example + * ``` + * { + * const config: AptosConfig = {network:Network.TESTNET} + * const aptos = new Aptos(config); + * await aptos.account.getData("0x1") + * } + * ``` + * + */ + constructor(settings?: AptosConfig) { + this.config = new AptosConfig(settings); + + this.account = new Account(this.config); + this.general = new General(this.config); + } +} diff --git a/ecosystem/typescript/sdk_v2/src/api/aptos_config.ts b/ecosystem/typescript/sdk_v2/src/api/aptos_config.ts new file mode 100644 index 0000000000000..3c1f97fae26e5 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/api/aptos_config.ts @@ -0,0 +1,16 @@ +import { ClientConfig } from "../client/types"; +import { DEFAULT_NETWORK, DEFAULT_FAUCET } from "../utils"; + +export class AptosConfig { + readonly network: string; + + readonly faucet: string; + + readonly clientConfig?: ClientConfig; + + constructor(config?: AptosConfig) { + this.network = config?.network ?? DEFAULT_NETWORK; + this.faucet = config?.faucet ?? DEFAULT_FAUCET; + this.clientConfig = config?.clientConfig ?? {}; + } +} diff --git a/ecosystem/typescript/sdk_v2/src/api/general.ts b/ecosystem/typescript/sdk_v2/src/api/general.ts new file mode 100644 index 0000000000000..0d44d66f13b89 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/api/general.ts @@ -0,0 +1,82 @@ +import { AptosConfig } from "./aptos_config"; +import { Gen } from "../types"; +import { Memoize, parseApiError } from "../utils"; +import { getBlockByHeight, getBlockByVersion, getChainId, getLedgerInfo, view } from "../internal/general"; + +export class General { + readonly config: AptosConfig; + + constructor(config: AptosConfig) { + this.config = config; + } + + /** + * Queries the latest ledger information + * @returns Latest ledger information + * @example Example of returned data + * ``` + * { + * chain_id: 15, + * epoch: 6, + * ledgerVersion: "2235883", + * ledger_timestamp:"1654580922321826" + * } + * ``` + */ + @parseApiError + async getLedgerInfo(): Promise { + const info = await getLedgerInfo(this.config); + return info; + } + + /** + * @returns Current chain id + */ + @Memoize() + async getChainId(): Promise { + const chainId = await getChainId(this.config); + return chainId; + } + + /** + * Call for a move view function + * + * @param payload Transaction payload + * @param version (optional) Ledger version to lookup block information for + * + * @returns MoveValue[] + */ + @parseApiError + async view(payload: Gen.ViewRequest, ledger_version?: string): Promise { + const data = await view(this.config, payload, ledger_version); + return data; + } + + /** + * Get block by height + * + * @param blockHeight Block height to lookup. Starts at 0 + * @param withTransactions If set to true, include all transactions in the block + * + * @returns Block + */ + @parseApiError + async getBlockByHeight(blockHeight: number, withTransactions?: boolean): Promise { + const block = await getBlockByHeight(this.config, blockHeight, withTransactions); + return block; + } + + /** + * Get block by block transaction version + * + * @param version Ledger version to lookup block information for + * @param withTransactions If set to true, include all transactions in the block + * + * @returns Block + */ + @parseApiError + async getBlockByVersion(version: number, withTransactions?: boolean): Promise { + const block = await getBlockByVersion(this.config, version, withTransactions); + return block; + } +} diff --git a/ecosystem/typescript/sdk_v2/src/api/index.ts b/ecosystem/typescript/sdk_v2/src/api/index.ts new file mode 100644 index 0000000000000..0d6db433f556f --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/api/index.ts @@ -0,0 +1,4 @@ +export * from "./account"; +export * from "./aptos"; +export * from "./aptos_config"; +export * from "./general"; diff --git a/ecosystem/typescript/sdk_v2/src/bcs/consts.ts b/ecosystem/typescript/sdk_v2/src/bcs/consts.ts new file mode 100644 index 0000000000000..ac57ec28fa919 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/bcs/consts.ts @@ -0,0 +1,12 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +import { Uint8, Uint16, Uint32, Uint64, Uint128, Uint256 } from "./types"; + +// Upper bound values for uint8, uint16, uint64 and uint128 +export const MAX_U8_NUMBER: Uint8 = 2 ** 8 - 1; +export const MAX_U16_NUMBER: Uint16 = 2 ** 16 - 1; +export const MAX_U32_NUMBER: Uint32 = 2 ** 32 - 1; +export const MAX_U64_BIG_INT: Uint64 = BigInt(2 ** 64) - BigInt(1); +export const MAX_U128_BIG_INT: Uint128 = BigInt(2 ** 128) - BigInt(1); +export const MAX_U256_BIG_INT: Uint256 = BigInt(2 ** 256) - BigInt(1); diff --git a/ecosystem/typescript/sdk_v2/src/bcs/deserializer.ts b/ecosystem/typescript/sdk_v2/src/bcs/deserializer.ts new file mode 100644 index 0000000000000..337011a6327fa --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/bcs/deserializer.ts @@ -0,0 +1,188 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +/* eslint-disable no-bitwise */ +import { MAX_U32_NUMBER } from "./consts"; +import { Bytes, Uint128, Uint16, Uint256, Uint32, Uint64, Uint8 } from "./types"; + +export class Deserializer { + private buffer: ArrayBuffer; + + private offset: number; + + constructor(data: Bytes) { + // copies data to prevent outside mutation of buffer. + this.buffer = new ArrayBuffer(data.length); + new Uint8Array(this.buffer).set(data, 0); + this.offset = 0; + } + + private read(length: number): ArrayBuffer { + if (this.offset + length > this.buffer.byteLength) { + throw new Error("Reached to the end of buffer"); + } + + const bytes = this.buffer.slice(this.offset, this.offset + length); + this.offset += length; + return bytes; + } + + /** + * Deserializes a string. UTF8 string is supported. Reads the string's bytes length "l" first, + * and then reads "l" bytes of content. Decodes the byte array into a string. + * + * BCS layout for "string": string_length | string_content. string_length is the bytes length of + * the string that is uleb128 encoded. string_length is a u32 integer. + * + * @example + * ```ts + * const deserializer = new Deserializer(new Uint8Array([24, 0xc3, 0xa7, 0xc3, 0xa5, 0xe2, 0x88, 0x9e, + * 0xe2, 0x89, 0xa0, 0xc2, 0xa2, 0xc3, 0xb5, 0xc3, 0x9f, 0xe2, 0x88, 0x82, 0xc6, 0x92, 0xe2, 0x88, 0xab])); + * assert(deserializer.deserializeStr() === "çå∞≠¢õß∂ƒ∫"); + * ``` + */ + deserializeStr(): string { + const value = this.deserializeBytes(); + const textDecoder = new TextDecoder(); + return textDecoder.decode(value); + } + + /** + * Deserializes an array of bytes. + * + * BCS layout for "bytes": bytes_length | bytes. bytes_length is the length of the bytes array that is + * uleb128 encoded. bytes_length is a u32 integer. + */ + deserializeBytes(): Bytes { + const len = this.deserializeUleb128AsU32(); + return new Uint8Array(this.read(len)); + } + + /** + * Deserializes an array of bytes. The number of bytes to read is already known. + * + */ + deserializeFixedBytes(len: number): Bytes { + return new Uint8Array(this.read(len)); + } + + /** + * Deserializes a boolean value. + * + * BCS layout for "boolean": One byte. "0x01" for True and "0x00" for False. + */ + deserializeBool(): boolean { + const bool = new Uint8Array(this.read(1))[0]; + if (bool !== 1 && bool !== 0) { + throw new Error("Invalid boolean value"); + } + return bool === 1; + } + + /** + * Deserializes a uint8 number. + * + * BCS layout for "uint8": One byte. Binary format in little-endian representation. + */ + deserializeU8(): Uint8 { + return new DataView(this.read(1)).getUint8(0); + } + + /** + * Deserializes a uint16 number. + * + * BCS layout for "uint16": Two bytes. Binary format in little-endian representation. + * @example + * ```ts + * const deserializer = new Deserializer(new Uint8Array([0x34, 0x12])); + * assert(deserializer.deserializeU16() === 4660); + * ``` + */ + deserializeU16(): Uint16 { + return new DataView(this.read(2)).getUint16(0, true); + } + + /** + * Deserializes a uint32 number. + * + * BCS layout for "uint32": Four bytes. Binary format in little-endian representation. + * @example + * ```ts + * const deserializer = new Deserializer(new Uint8Array([0x78, 0x56, 0x34, 0x12])); + * assert(deserializer.deserializeU32() === 305419896); + * ``` + */ + deserializeU32(): Uint32 { + return new DataView(this.read(4)).getUint32(0, true); + } + + /** + * Deserializes a uint64 number. + * + * BCS layout for "uint64": Eight bytes. Binary format in little-endian representation. + * @example + * ```ts + * const deserializer = new Deserializer(new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12])); + * assert(deserializer.deserializeU64() === 1311768467750121216); + * ``` + */ + deserializeU64(): Uint64 { + const low = this.deserializeU32(); + const high = this.deserializeU32(); + + // combine the two 32-bit values and return (little endian) + return BigInt((BigInt(high) << BigInt(32)) | BigInt(low)); + } + + /** + * Deserializes a uint128 number. + * + * BCS layout for "uint128": Sixteen bytes. Binary format in little-endian representation. + */ + deserializeU128(): Uint128 { + const low = this.deserializeU64(); + const high = this.deserializeU64(); + + // combine the two 64-bit values and return (little endian) + return BigInt((high << BigInt(64)) | low); + } + + /** + * Deserializes a uint256 number. + * + * BCS layout for "uint256": Thirty-two bytes. Binary format in little-endian representation. + */ + deserializeU256(): Uint256 { + const low = this.deserializeU128(); + const high = this.deserializeU128(); + + // combine the two 128-bit values and return (little endian) + return BigInt((high << BigInt(128)) | low); + } + + /** + * Deserializes a uleb128 encoded uint32 number. + * + * BCS use uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values + */ + deserializeUleb128AsU32(): Uint32 { + let value: bigint = BigInt(0); + let shift = 0; + + while (value < MAX_U32_NUMBER) { + const byte = this.deserializeU8(); + value |= BigInt(byte & 0x7f) << BigInt(shift); + + if ((byte & 0x80) === 0) { + break; + } + shift += 7; + } + + if (value > MAX_U32_NUMBER) { + throw new Error("Overflow while parsing uleb128-encoded uint32 value"); + } + + return Number(value); + } +} diff --git a/ecosystem/typescript/sdk_v2/src/bcs/helper.ts b/ecosystem/typescript/sdk_v2/src/bcs/helper.ts new file mode 100644 index 0000000000000..37f774e76f42c --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/bcs/helper.ts @@ -0,0 +1,112 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +import { Deserializer } from "./deserializer"; +import { Serializer } from "./serializer"; +import { Bytes, AnyNumber, Uint8, Uint16, Uint32 } from "./types"; + +interface Serializable { + serialize(serializer: Serializer): void; +} + +/** + * Serializes a vector values that are "Serializable". + */ +export function serializeVector(value: Array, serializer: Serializer): void { + serializer.serializeU32AsUleb128(value.length); + value.forEach((item: T) => { + item.serialize(serializer); + }); +} + +/** + * Serializes a vector with specified item serialization function. + * Very dynamic function and bypasses static typechecking. + */ +export function serializeVectorWithFunc(value: any[], func: string): Bytes { + const serializer = new Serializer(); + serializer.serializeU32AsUleb128(value.length); + const f = (serializer as any)[func]; + value.forEach((item) => { + f.call(serializer, item); + }); + return serializer.getBytes(); +} + +/** + * Deserializes a vector of values. + */ +export function deserializeVector(deserializer: Deserializer, cls: any): any[] { + const length = deserializer.deserializeUleb128AsU32(); + const list: Array = []; + for (let i = 0; i < length; i += 1) { + list.push(cls.deserialize(deserializer)); + } + return list; +} + +export function bcsToBytes(value: T): Bytes { + const serializer = new Serializer(); + value.serialize(serializer); + return serializer.getBytes(); +} + +export function bcsSerializeUint64(value: AnyNumber): Bytes { + const serializer = new Serializer(); + serializer.serializeU64(value); + return serializer.getBytes(); +} + +export function bcsSerializeU8(value: Uint8): Bytes { + const serializer = new Serializer(); + serializer.serializeU8(value); + return serializer.getBytes(); +} + +export function bcsSerializeU16(value: Uint16): Bytes { + const serializer = new Serializer(); + serializer.serializeU16(value); + return serializer.getBytes(); +} + +export function bcsSerializeU32(value: Uint32): Bytes { + const serializer = new Serializer(); + serializer.serializeU32(value); + return serializer.getBytes(); +} + +export function bcsSerializeU128(value: AnyNumber): Bytes { + const serializer = new Serializer(); + serializer.serializeU128(value); + return serializer.getBytes(); +} + +export function bcsSerializeU256(value: AnyNumber): Bytes { + const serializer = new Serializer(); + serializer.serializeU256(value); + return serializer.getBytes(); +} + +export function bcsSerializeBool(value: boolean): Bytes { + const serializer = new Serializer(); + serializer.serializeBool(value); + return serializer.getBytes(); +} + +export function bcsSerializeStr(value: string): Bytes { + const serializer = new Serializer(); + serializer.serializeStr(value); + return serializer.getBytes(); +} + +export function bcsSerializeBytes(value: Bytes): Bytes { + const serializer = new Serializer(); + serializer.serializeBytes(value); + return serializer.getBytes(); +} + +export function bcsSerializeFixedBytes(value: Bytes): Bytes { + const serializer = new Serializer(); + serializer.serializeFixedBytes(value); + return serializer.getBytes(); +} diff --git a/ecosystem/typescript/sdk_v2/src/bcs/identifier.ts b/ecosystem/typescript/sdk_v2/src/bcs/identifier.ts new file mode 100644 index 0000000000000..3ffc18b75b21c --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/bcs/identifier.ts @@ -0,0 +1,18 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +import { Deserializer } from "./deserializer"; +import { Serializer } from "./serializer"; + +export class Identifier { + constructor(public value: string) {} + + public serialize(serializer: Serializer): void { + serializer.serializeStr(this.value); + } + + static deserialize(deserializer: Deserializer): Identifier { + const value = deserializer.deserializeStr(); + return new Identifier(value); + } +} diff --git a/ecosystem/typescript/sdk_v2/src/bcs/index.ts b/ecosystem/typescript/sdk_v2/src/bcs/index.ts new file mode 100644 index 0000000000000..18327efe923c9 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/bcs/index.ts @@ -0,0 +1,8 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +export * from "./serializer"; +export * from "./deserializer"; +export * from "./identifier"; +export * from "./helper"; +export * from "./types"; diff --git a/ecosystem/typescript/sdk_v2/src/bcs/serializer.ts b/ecosystem/typescript/sdk_v2/src/bcs/serializer.ts new file mode 100644 index 0000000000000..7183e95b7d132 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/bcs/serializer.ts @@ -0,0 +1,240 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +/* eslint-disable no-bitwise */ +import { + MAX_U128_BIG_INT, + MAX_U16_NUMBER, + MAX_U32_NUMBER, + MAX_U64_BIG_INT, + MAX_U8_NUMBER, + MAX_U256_BIG_INT, +} from "./consts"; +import { Bytes, Uint8, Uint16, Uint32, AnyNumber } from "./types"; + +export class Serializer { + private buffer: ArrayBuffer; + + private offset: number; + + constructor() { + this.buffer = new ArrayBuffer(64); + this.offset = 0; + } + + private ensureBufferWillHandleSize(bytes: number) { + while (this.buffer.byteLength < this.offset + bytes) { + const newBuffer = new ArrayBuffer(this.buffer.byteLength * 2); + new Uint8Array(newBuffer).set(new Uint8Array(this.buffer)); + this.buffer = newBuffer; + } + } + + protected serialize(values: Bytes) { + this.ensureBufferWillHandleSize(values.length); + new Uint8Array(this.buffer, this.offset).set(values); + this.offset += values.length; + } + + private serializeWithFunction( + fn: (byteOffset: number, value: number, littleEndian?: boolean) => void, + bytesLength: number, + value: number, + ) { + this.ensureBufferWillHandleSize(bytesLength); + const dv = new DataView(this.buffer, this.offset); + fn.apply(dv, [0, value, true]); + this.offset += bytesLength; + } + + /** + * Serializes a string. UTF8 string is supported. Serializes the string's bytes length "l" first, + * and then serializes "l" bytes of the string content. + * + * BCS layout for "string": string_length | string_content. string_length is the bytes length of + * the string that is uleb128 encoded. string_length is a u32 integer. + * + * @example + * ```ts + * const serializer = new Serializer(); + * serializer.serializeStr("çå∞≠¢õß∂ƒ∫"); + * assert(serializer.getBytes() === new Uint8Array([24, 0xc3, 0xa7, 0xc3, 0xa5, 0xe2, 0x88, 0x9e, + * 0xe2, 0x89, 0xa0, 0xc2, 0xa2, 0xc3, 0xb5, 0xc3, 0x9f, 0xe2, 0x88, 0x82, 0xc6, 0x92, 0xe2, 0x88, 0xab])); + * ``` + */ + serializeStr(value: string): void { + const textEncoder = new TextEncoder(); + this.serializeBytes(textEncoder.encode(value)); + } + + /** + * Serializes an array of bytes. + * + * BCS layout for "bytes": bytes_length | bytes. bytes_length is the length of the bytes array that is + * uleb128 encoded. bytes_length is a u32 integer. + */ + serializeBytes(value: Bytes): void { + this.serializeU32AsUleb128(value.length); + this.serialize(value); + } + + /** + * Serializes an array of bytes with known length. Therefore length doesn't need to be + * serialized to help deserialization. When deserializing, the number of + * bytes to deserialize needs to be passed in. + */ + serializeFixedBytes(value: Bytes): void { + this.serialize(value); + } + + /** + * Serializes a boolean value. + * + * BCS layout for "boolean": One byte. "0x01" for True and "0x00" for False. + */ + serializeBool(value: boolean): void { + if (typeof value !== "boolean") { + throw new Error("Value needs to be a boolean"); + } + const byteValue = value ? 1 : 0; + this.serialize(new Uint8Array([byteValue])); + } + + /** + * Serializes a uint8 number. + * + * BCS layout for "uint8": One byte. Binary format in little-endian representation. + */ + @checkNumberRange(0, MAX_U8_NUMBER) + serializeU8(value: Uint8): void { + this.serialize(new Uint8Array([value])); + } + + /** + * Serializes a uint16 number. + * + * BCS layout for "uint16": Two bytes. Binary format in little-endian representation. + * @example + * ```ts + * const serializer = new Serializer(); + * serializer.serializeU16(4660); + * assert(serializer.getBytes() === new Uint8Array([0x34, 0x12])); + * ``` + */ + @checkNumberRange(0, MAX_U16_NUMBER) + serializeU16(value: Uint16): void { + this.serializeWithFunction(DataView.prototype.setUint16, 2, value); + } + + /** + * Serializes a uint32 number. + * + * BCS layout for "uint32": Four bytes. Binary format in little-endian representation. + * @example + * ```ts + * const serializer = new Serializer(); + * serializer.serializeU32(305419896); + * assert(serializer.getBytes() === new Uint8Array([0x78, 0x56, 0x34, 0x12])); + * ``` + */ + @checkNumberRange(0, MAX_U32_NUMBER) + serializeU32(value: Uint32): void { + this.serializeWithFunction(DataView.prototype.setUint32, 4, value); + } + + /** + * Serializes a uint64 number. + * + * BCS layout for "uint64": Eight bytes. Binary format in little-endian representation. + * @example + * ```ts + * const serializer = new Serializer(); + * serializer.serializeU64(1311768467750121216); + * assert(serializer.getBytes() === new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12])); + * ``` + */ + @checkNumberRange(BigInt(0), MAX_U64_BIG_INT) + serializeU64(value: AnyNumber): void { + const low = BigInt(value.toString()) & BigInt(MAX_U32_NUMBER); + const high = BigInt(value.toString()) >> BigInt(32); + + // write little endian number + this.serializeU32(Number(low)); + this.serializeU32(Number(high)); + } + + /** + * Serializes a uint128 number. + * + * BCS layout for "uint128": Sixteen bytes. Binary format in little-endian representation. + */ + @checkNumberRange(BigInt(0), MAX_U128_BIG_INT) + serializeU128(value: AnyNumber): void { + const low = BigInt(value.toString()) & MAX_U64_BIG_INT; + const high = BigInt(value.toString()) >> BigInt(64); + + // write little endian number + this.serializeU64(low); + this.serializeU64(high); + } + + /** + * Serializes a uint256 number. + * + * BCS layout for "uint256": Sixteen bytes. Binary format in little-endian representation. + */ + @checkNumberRange(BigInt(0), MAX_U256_BIG_INT) + serializeU256(value: AnyNumber): void { + const low = BigInt(value.toString()) & MAX_U128_BIG_INT; + const high = BigInt(value.toString()) >> BigInt(128); + + // write little endian number + this.serializeU128(low); + this.serializeU128(high); + } + + /** + * Serializes a uint32 number with uleb128. + * + * BCS use uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values + */ + @checkNumberRange(0, MAX_U32_NUMBER) + serializeU32AsUleb128(val: Uint32): void { + let value = val; + const valueArray = []; + while (value >>> 7 !== 0) { + valueArray.push((value & 0x7f) | 0x80); + value >>>= 7; + } + valueArray.push(value); + this.serialize(new Uint8Array(valueArray)); + } + + /** + * Returns the buffered bytes + */ + getBytes(): Bytes { + return new Uint8Array(this.buffer).slice(0, this.offset); + } +} + +/** + * Creates a decorator to make sure the arg value of the decorated function is within a range. + * @param minValue The arg value of decorated function must >= minValue + * @param maxValue The arg value of decorated function must <= maxValue + * @param message Error message + */ +function checkNumberRange(minValue: T, maxValue: T, message?: string) { + return (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => { + const childFunction = descriptor.value; + // eslint-disable-next-line no-param-reassign + descriptor.value = function deco(value: AnyNumber) { + const valueBigInt = BigInt(value.toString()); + if (valueBigInt > BigInt(maxValue.toString()) || valueBigInt < BigInt(minValue.toString())) { + throw new Error(message || "Value is out of range"); + } + childFunction.apply(this, [value]); + }; + return descriptor; + }; +} diff --git a/ecosystem/typescript/sdk_v2/src/bcs/types.ts b/ecosystem/typescript/sdk_v2/src/bcs/types.ts new file mode 100644 index 0000000000000..f834aa9762d6b --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/bcs/types.ts @@ -0,0 +1,13 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +export type Seq = T[]; + +export type Uint8 = number; +export type Uint16 = number; +export type Uint32 = number; +export type Uint64 = bigint; +export type Uint128 = bigint; +export type Uint256 = bigint; +export type AnyNumber = bigint | number; +export type Bytes = Uint8Array; diff --git a/ecosystem/typescript/sdk_v2/src/client/core.ts b/ecosystem/typescript/sdk_v2/src/client/core.ts new file mode 100644 index 0000000000000..c8940ea2fcd32 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/client/core.ts @@ -0,0 +1,74 @@ +import aptosClient from "@aptos-labs/aptos-client"; +import { AptosApiError, AptosRequest, AptosResponse, ClientConfig } from "./types"; +import { VERSION } from "../version"; + +/** + * Meaningful errors map + */ +const errors: Record = { + 400: "Bad Request", + 401: "Unauthorized", + 403: "Forbidden", + 404: "Not Found", + 429: "Too Many Requests", + 500: "Internal Server Error", + 502: "Bad Gateway", + 503: "Service Unavailable", +}; + +/** + * Given a url and method, sends the request with axios and + * returns the response. + */ +async function request( + url: string, + method: "GET" | "POST", + body?: Req, + contentType?: string, + params?: any, + overrides?: ClientConfig, +): Promise { + const headers: Record = { + ...overrides?.HEADERS, + "x-aptos-client": `aptos-ts-sdk/${VERSION}`, + "content-type": contentType ?? "application/json", + }; + + if (overrides?.TOKEN) { + headers.Authorization = `Bearer ${overrides?.TOKEN}`; + } + + /** + * make a call using the @aptos-labs/aptos-client package + * {@link https://www.npmjs.com/package/@aptos-labs/aptos-client} + */ + const response = await aptosClient({ url, method, body, params, headers, overrides }); + return response; +} + +/** + * The main function to use when doing an API request. + * + * @param options AptosRequest + * @returns the response or AptosApiError + */ +export async function aptosRequest(options: AptosRequest): Promise> { + const { url, endpoint, method, body, contentType, params, overrides } = options; + const fullEndpoint = `${url}/${endpoint ?? ""}`; + const response = await request(fullEndpoint, method, body, contentType, params, overrides); + + const result: AptosResponse = { + status: response.status, + statusText: response.statusText!, + data: response.data, + headers: response.headers, + config: response.config, + url: fullEndpoint, + }; + + if (result.status >= 200 && result.status < 300) { + return result; + } + const errorMessage = errors[result.status]; + throw new AptosApiError(options, result, errorMessage ?? "Generic Error"); +} diff --git a/ecosystem/typescript/sdk_v2/src/client/get.ts b/ecosystem/typescript/sdk_v2/src/client/get.ts new file mode 100644 index 0000000000000..060f906ce9722 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/client/get.ts @@ -0,0 +1,15 @@ +import { AptosRequest, AptosResponse } from "./types"; +import { aptosRequest } from "./core"; + +export type GetRequestOptions = Omit; + +/** + * Main function to do a Get request + * + * @param options GetRequestOptions + * @returns + */ +export async function get(options: GetRequestOptions): Promise> { + const response: AptosResponse = await aptosRequest({ ...options, method: "GET" }); + return response; +} diff --git a/ecosystem/typescript/sdk_v2/src/client/index.ts b/ecosystem/typescript/sdk_v2/src/client/index.ts new file mode 100644 index 0000000000000..6fa6a6a8d28ce --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/client/index.ts @@ -0,0 +1,3 @@ +export * from "./core"; +export * from "./get"; +export * from "./post"; diff --git a/ecosystem/typescript/sdk_v2/src/client/post.ts b/ecosystem/typescript/sdk_v2/src/client/post.ts new file mode 100644 index 0000000000000..1a96fb4719dc4 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/client/post.ts @@ -0,0 +1,15 @@ +import { aptosRequest } from "./core"; +import { AptosRequest, AptosResponse } from "./types"; + +export type PostRequestOptions = Omit; + +/** + * Main function to do a Post request + * + * @param options PostRequestOptions + * @returns + */ +export async function post(options: PostRequestOptions): Promise> { + const response: AptosResponse = await aptosRequest({ ...options, method: "POST" }); + return response; +} diff --git a/ecosystem/typescript/sdk_v2/src/client/types.ts b/ecosystem/typescript/sdk_v2/src/client/types.ts new file mode 100644 index 0000000000000..9886e5e1fc89f --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/client/types.ts @@ -0,0 +1,97 @@ +import { AnyNumber } from "../bcs"; + +/** + * A configuration object we can pass with the request to the server. + * + * @param TOKEN - an auth token to send with the request + * @param HEADERS - extra headers we want to send with the request + * @param WITH_CREDENTIALS - whether to carry cookies. By default, it is set to true and cookies will be sent + */ +export type ClientConfig = { + TOKEN?: string; + HEADERS?: Record; + WITH_CREDENTIALS?: boolean; +}; + +/** + * The API request type + * + * @param url - the url to make the request to, i.e https://fullnode.aptoslabs.devnet.com/v1 + * @param method - the request method "GET" | "POST" + * @param endpoint (optional) - the endpoint to make the request to, i.e transactions + * @param body (optional) - the body of the request + * @param contentType (optional) - the content type to set the `content-type` header to, + * by default is set to `application/json` + * @param params (optional) - query params to add to the request + * @param originMethod (optional) - the local method the request came from + * @param overrides (optional) - a `ClientConfig` object type to override request data + */ +export type AptosRequest = { + url: string; + method: "GET" | "POST"; + endpoint?: string; + body?: any; + contentType?: string; + params?: Record; + originMethod?: string; + overrides?: ClientConfig; +}; + +/** + * The API response type + * + * @param status - the response status. i.e 200 + * @param statusText - the response message + * @param data the response data + * @param url the url the request was made to + * @param headers the response headers + * @param config (optional) - the request object + * @param request (optional) - the request object + */ +export interface AptosResponse { + status: number; + statusText: string; + data: Res; + url: string; + headers: any; + config?: any; + request?: Req; +} + +/** + * The type returned from an API error + * + * @param name - the error name "AptosApiError" + * @param url the url the request was made to + * @param status - the response status. i.e 400 + * @param statusText - the response message + * @param data the response data + * @param request - the AptosRequest + */ +export class AptosApiError extends Error { + readonly url: string; + + readonly status: number; + + readonly statusText: string; + + readonly data: any; + + readonly request: AptosRequest; + + constructor(request: AptosRequest, response: AptosResponse, message: string) { + super(message); + + this.name = "AptosApiError"; + this.url = response.url; + this.status = response.status; + this.statusText = response.statusText; + this.data = response.data; + this.request = request; + } +} + +export interface PaginationArgs { + start?: AnyNumber; + limit?: number; +} diff --git a/ecosystem/typescript/sdk_v2/src/crypto/authentication_key.ts b/ecosystem/typescript/sdk_v2/src/crypto/authentication_key.ts new file mode 100644 index 0000000000000..fe0ed95004f4c --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/crypto/authentication_key.ts @@ -0,0 +1,73 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +import { sha3_256 as sha3Hash } from "@noble/hashes/sha3"; +import { Ed25519PublicKey } from "./ed25519"; +import { Bytes } from "../bcs"; +import { HexString } from "../utils"; +import { MultiEd25519PublicKey } from "./multi_ed25519"; + +/** + * Each account stores an authentication key. Authentication key enables account owners to rotate + * their private key(s) associated with the account without changing the address that hosts their account. + * @see {@link * https://aptos.dev/concepts/accounts | Account Basics} + * + * Account addresses can be derived from AuthenticationKey + */ +export class AuthenticationKey { + static readonly LENGTH: number = 32; + + static readonly MULTI_ED25519_SCHEME: number = 1; + + static readonly ED25519_SCHEME: number = 0; + + static readonly DERIVE_RESOURCE_ACCOUNT_SCHEME: number = 255; + + readonly bytes: Bytes; + + constructor(bytes: Bytes) { + if (bytes.length !== AuthenticationKey.LENGTH) { + throw new Error("Expected a byte array of length 32"); + } + this.bytes = bytes; + } + + /** + * Converts a K-of-N MultiEd25519PublicKey to AuthenticationKey with: + * `auth_key = sha3-256(p_1 | … | p_n | K | 0x01)`. `K` represents the K-of-N required for + * authenticating the transaction. `0x01` is the 1-byte scheme for multisig. + */ + static fromMultiEd25519PublicKey(publicKey: MultiEd25519PublicKey): AuthenticationKey { + const pubKeyBytes = publicKey.toBytes(); + + const bytes = new Uint8Array(pubKeyBytes.length + 1); + bytes.set(pubKeyBytes); + bytes.set([AuthenticationKey.MULTI_ED25519_SCHEME], pubKeyBytes.length); + + const hash = sha3Hash.create(); + hash.update(bytes); + + return new AuthenticationKey(hash.digest()); + } + + static fromEd25519PublicKey(publicKey: Ed25519PublicKey): AuthenticationKey { + const pubKeyBytes = publicKey.value; + + const bytes = new Uint8Array(pubKeyBytes.length + 1); + bytes.set(pubKeyBytes); + bytes.set([AuthenticationKey.ED25519_SCHEME], pubKeyBytes.length); + + const hash = sha3Hash.create(); + hash.update(bytes); + + return new AuthenticationKey(hash.digest()); + } + + /** + * Derives an account address from AuthenticationKey. Since current AccountAddress is 32 bytes, + * AuthenticationKey bytes are directly translated to AccountAddress. + */ + derivedAddress(): HexString { + return HexString.fromUint8Array(this.bytes); + } +} diff --git a/ecosystem/typescript/sdk_v2/src/crypto/authenticator.ts b/ecosystem/typescript/sdk_v2/src/crypto/authenticator.ts new file mode 100644 index 0000000000000..3792097ab4593 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/crypto/authenticator.ts @@ -0,0 +1,153 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +/* eslint-disable @typescript-eslint/naming-convention */ +import { AccountAddress } from "../account/account_address"; +import { Serializer, Deserializer, deserializeVector, serializeVector } from "../bcs"; +import { Ed25519PublicKey, Ed25519Signature } from "./ed25519"; +import { MultiEd25519PublicKey, MultiEd25519Signature } from "./multi_ed25519"; + +export abstract class TransactionAuthenticator { + abstract serialize(serializer: Serializer): void; + + static deserialize(deserializer: Deserializer): TransactionAuthenticator { + const index = deserializer.deserializeUleb128AsU32(); + switch (index) { + case 0: + return TransactionAuthenticatorEd25519.load(deserializer); + case 1: + return TransactionAuthenticatorMultiEd25519.load(deserializer); + case 2: + return TransactionAuthenticatorMultiAgent.load(deserializer); + default: + throw new Error(`Unknown variant index for TransactionAuthenticator: ${index}`); + } + } +} + +export class TransactionAuthenticatorEd25519 extends TransactionAuthenticator { + /** + * An authenticator for single signature. + * + * @param public_key Client's public key. + * @param signature Signature of a raw transaction. + * @see {@link https://aptos.dev/guides/creating-a-signed-transaction/ | Creating a Signed Transaction} + * for details about generating a signature. + */ + constructor(public readonly public_key: Ed25519PublicKey, public readonly signature: Ed25519Signature) { + super(); + } + + serialize(serializer: Serializer): void { + serializer.serializeU32AsUleb128(0); + this.public_key.serialize(serializer); + this.signature.serialize(serializer); + } + + static load(deserializer: Deserializer): TransactionAuthenticatorEd25519 { + const public_key = Ed25519PublicKey.deserialize(deserializer); + const signature = Ed25519Signature.deserialize(deserializer); + return new TransactionAuthenticatorEd25519(public_key, signature); + } +} + +export class TransactionAuthenticatorMultiEd25519 extends TransactionAuthenticator { + /** + * An authenticator for multiple signatures. + * + * @param public_key + * @param signature + * + */ + constructor(public readonly public_key: MultiEd25519PublicKey, public readonly signature: MultiEd25519Signature) { + super(); + } + + serialize(serializer: Serializer): void { + serializer.serializeU32AsUleb128(1); + this.public_key.serialize(serializer); + this.signature.serialize(serializer); + } + + static load(deserializer: Deserializer): TransactionAuthenticatorMultiEd25519 { + const public_key = MultiEd25519PublicKey.deserialize(deserializer); + const signature = MultiEd25519Signature.deserialize(deserializer); + return new TransactionAuthenticatorMultiEd25519(public_key, signature); + } +} + +export class TransactionAuthenticatorMultiAgent extends TransactionAuthenticator { + constructor( + public readonly sender: AccountAuthenticator, + public readonly secondary_signer_addresses: Array, + public readonly secondary_signers: Array, + ) { + super(); + } + + serialize(serializer: Serializer): void { + serializer.serializeU32AsUleb128(2); + this.sender.serialize(serializer); + serializeVector(this.secondary_signer_addresses, serializer); + serializeVector(this.secondary_signers, serializer); + } + + static load(deserializer: Deserializer): TransactionAuthenticatorMultiAgent { + const sender = AccountAuthenticator.deserialize(deserializer); + const secondary_signer_addresses = deserializeVector(deserializer, AccountAddress); + const secondary_signers = deserializeVector(deserializer, AccountAuthenticator); + return new TransactionAuthenticatorMultiAgent(sender, secondary_signer_addresses, secondary_signers); + } +} + +export abstract class AccountAuthenticator { + abstract serialize(serializer: Serializer): void; + + static deserialize(deserializer: Deserializer): AccountAuthenticator { + const index = deserializer.deserializeUleb128AsU32(); + switch (index) { + case 0: + return AccountAuthenticatorEd25519.load(deserializer); + case 1: + return AccountAuthenticatorMultiEd25519.load(deserializer); + default: + throw new Error(`Unknown variant index for AccountAuthenticator: ${index}`); + } + } +} + +export class AccountAuthenticatorEd25519 extends AccountAuthenticator { + constructor(public readonly public_key: Ed25519PublicKey, public readonly signature: Ed25519Signature) { + super(); + } + + serialize(serializer: Serializer): void { + serializer.serializeU32AsUleb128(0); + this.public_key.serialize(serializer); + this.signature.serialize(serializer); + } + + static load(deserializer: Deserializer): AccountAuthenticatorEd25519 { + const public_key = Ed25519PublicKey.deserialize(deserializer); + const signature = Ed25519Signature.deserialize(deserializer); + return new AccountAuthenticatorEd25519(public_key, signature); + } +} + +export class AccountAuthenticatorMultiEd25519 extends AccountAuthenticator { + constructor(public readonly public_key: MultiEd25519PublicKey, public readonly signature: MultiEd25519Signature) { + super(); + } + + serialize(serializer: Serializer): void { + serializer.serializeU32AsUleb128(1); + this.public_key.serialize(serializer); + this.signature.serialize(serializer); + } + + static load(deserializer: Deserializer): AccountAuthenticatorMultiEd25519 { + const public_key = MultiEd25519PublicKey.deserialize(deserializer); + const signature = MultiEd25519Signature.deserialize(deserializer); + return new AccountAuthenticatorMultiEd25519(public_key, signature); + } +} diff --git a/ecosystem/typescript/sdk_v2/src/crypto/ed25519.ts b/ecosystem/typescript/sdk_v2/src/crypto/ed25519.ts new file mode 100644 index 0000000000000..1385e289efc1a --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/crypto/ed25519.ts @@ -0,0 +1,49 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +import { Bytes, Deserializer, Serializer } from "../bcs"; + +export class Ed25519PublicKey { + static readonly LENGTH: number = 32; + + readonly value: Bytes; + + constructor(value: Bytes) { + if (value.length !== Ed25519PublicKey.LENGTH) { + throw new Error(`Ed25519PublicKey length should be ${Ed25519PublicKey.LENGTH}`); + } + this.value = value; + } + + toBytes(): Bytes { + return this.value; + } + + serialize(serializer: Serializer): void { + serializer.serializeBytes(this.value); + } + + static deserialize(deserializer: Deserializer): Ed25519PublicKey { + const value = deserializer.deserializeBytes(); + return new Ed25519PublicKey(value); + } +} + +export class Ed25519Signature { + static readonly LENGTH = 64; + + constructor(public readonly value: Bytes) { + if (value.length !== Ed25519Signature.LENGTH) { + throw new Error(`Ed25519Signature length should be ${Ed25519Signature.LENGTH}`); + } + } + + serialize(serializer: Serializer): void { + serializer.serializeBytes(this.value); + } + + static deserialize(deserializer: Deserializer): Ed25519Signature { + const value = deserializer.deserializeBytes(); + return new Ed25519Signature(value); + } +} diff --git a/ecosystem/typescript/sdk_v2/src/crypto/index.ts b/ecosystem/typescript/sdk_v2/src/crypto/index.ts new file mode 100644 index 0000000000000..707d04a8fe2ed --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/crypto/index.ts @@ -0,0 +1,4 @@ +export * from "./ed25519"; +export * from "./multi_ed25519"; +export * from "./authentication_key"; +export * from "./authenticator"; diff --git a/ecosystem/typescript/sdk_v2/src/crypto/multi_ed25519.ts b/ecosystem/typescript/sdk_v2/src/crypto/multi_ed25519.ts new file mode 100644 index 0000000000000..0fa0bf2a6ba63 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/crypto/multi_ed25519.ts @@ -0,0 +1,158 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +/* eslint-disable no-bitwise */ +import { Bytes, Deserializer, Serializer, Uint8 } from "../bcs"; +import { Ed25519PublicKey, Ed25519Signature } from "./ed25519"; + +/** + * MultiEd25519 currently supports at most 32 signatures. + */ +const MAX_SIGNATURES_SUPPORTED = 32; + +export class MultiEd25519PublicKey { + /** + * Public key for a K-of-N multisig transaction. A K-of-N multisig transaction means that for such a + * transaction to be executed, at least K out of the N authorized signers have signed the transaction + * and passed the check conducted by the chain. + * + * @see {@link + * https://aptos.dev/guides/creating-a-signed-transaction#multisignature-transactions | Creating a Signed Transaction} + * + * @param public_keys A list of public keys + * @param threshold At least "threshold" signatures must be valid + */ + constructor(public readonly public_keys: Array, public readonly threshold: Uint8) { + if (threshold > MAX_SIGNATURES_SUPPORTED) { + throw new Error(`"threshold" cannot be larger than ${MAX_SIGNATURES_SUPPORTED}`); + } + } + + /** + * Converts a MultiEd25519PublicKey into bytes with: bytes = p1_bytes | ... | pn_bytes | threshold + */ + toBytes(): Bytes { + const bytes = new Uint8Array(this.public_keys.length * Ed25519PublicKey.LENGTH + 1); + this.public_keys.forEach((k: Ed25519PublicKey, i: number) => { + bytes.set(k.value, i * Ed25519PublicKey.LENGTH); + }); + + bytes[this.public_keys.length * Ed25519PublicKey.LENGTH] = this.threshold; + + return bytes; + } + + serialize(serializer: Serializer): void { + serializer.serializeBytes(this.toBytes()); + } + + static deserialize(deserializer: Deserializer): MultiEd25519PublicKey { + const bytes = deserializer.deserializeBytes(); + const threshold = bytes[bytes.length - 1]; + + const keys: Array = []; + + for (let i = 0; i < bytes.length - 1; i += Ed25519PublicKey.LENGTH) { + const begin = i; + keys.push(new Ed25519PublicKey(bytes.subarray(begin, begin + Ed25519PublicKey.LENGTH))); + } + return new MultiEd25519PublicKey(keys, threshold); + } +} + +export class MultiEd25519Signature { + static BITMAP_LEN: Uint8 = 4; + + /** + * Signature for a K-of-N multisig transaction. + * + * @see {@link + * https://aptos.dev/guides/creating-a-signed-transaction#multisignature-transactions | Creating a Signed Transaction} + * + * @param signatures A list of ed25519 signatures + * @param bitmap 4 bytes, at most 32 signatures are supported. If Nth bit value is `1`, the Nth + * signature should be provided in `signatures`. Bits are read from left to right + */ + constructor(public readonly signatures: Array, public readonly bitmap: Uint8Array) { + if (bitmap.length !== MultiEd25519Signature.BITMAP_LEN) { + throw new Error(`"bitmap" length should be ${MultiEd25519Signature.BITMAP_LEN}`); + } + } + + /** + * Converts a MultiEd25519Signature into bytes with `bytes = s1_bytes | ... | sn_bytes | bitmap` + */ + toBytes(): Bytes { + const bytes = new Uint8Array(this.signatures.length * Ed25519Signature.LENGTH + MultiEd25519Signature.BITMAP_LEN); + this.signatures.forEach((k: Ed25519Signature, i: number) => { + bytes.set(k.value, i * Ed25519Signature.LENGTH); + }); + + bytes.set(this.bitmap, this.signatures.length * Ed25519Signature.LENGTH); + + return bytes; + } + + /** + * Helper method to create a bitmap out of the specified bit positions + * @param bits The bitmap positions that should be set. A position starts at index 0. + * Valid position should range between 0 and 31. + * @example + * Here's an example of valid `bits` + * ``` + * [0, 2, 31] + * ``` + * `[0, 2, 31]` means the 1st, 3rd and 32nd bits should be set in the bitmap. + * The result bitmap should be 0b1010000000000000000000000000001 + * + * @returns bitmap that is 32bit long + */ + static createBitmap(bits: Array): Uint8Array { + // Bits are read from left to right. e.g. 0b10000000 represents the first bit is set in one byte. + // The decimal value of 0b10000000 is 128. + const firstBitInByte = 128; + const bitmap = new Uint8Array([0, 0, 0, 0]); + + // Check if duplicates exist in bits + const dupCheckSet = new Set(); + + bits.forEach((bit: number) => { + if (bit >= MAX_SIGNATURES_SUPPORTED) { + throw new Error(`Invalid bit value ${bit}.`); + } + + if (dupCheckSet.has(bit)) { + throw new Error("Duplicated bits detected."); + } + + dupCheckSet.add(bit); + + const byteOffset = Math.floor(bit / 8); + + let byte = bitmap[byteOffset]; + + byte |= firstBitInByte >> bit % 8; + + bitmap[byteOffset] = byte; + }); + + return bitmap; + } + + serialize(serializer: Serializer): void { + serializer.serializeBytes(this.toBytes()); + } + + static deserialize(deserializer: Deserializer): MultiEd25519Signature { + const bytes = deserializer.deserializeBytes(); + const bitmap = bytes.subarray(bytes.length - 4); + + const sigs: Array = []; + + for (let i = 0; i < bytes.length - bitmap.length; i += Ed25519Signature.LENGTH) { + const begin = i; + sigs.push(new Ed25519Signature(bytes.subarray(begin, begin + Ed25519Signature.LENGTH))); + } + return new MultiEd25519Signature(sigs, bitmap); + } +} diff --git a/ecosystem/typescript/sdk_v2/src/index.ts b/ecosystem/typescript/sdk_v2/src/index.ts new file mode 100644 index 0000000000000..02085c3678f84 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/index.ts @@ -0,0 +1,9 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +export * from "./account"; +export * from "./api"; +export * from "./bcs"; +export * from "./client"; +export * from "./crypto"; +export * from "./utils"; diff --git a/ecosystem/typescript/sdk_v2/src/internal/account.ts b/ecosystem/typescript/sdk_v2/src/internal/account.ts new file mode 100644 index 0000000000000..4b38d61dd6785 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/internal/account.ts @@ -0,0 +1,106 @@ +import { AptosConfig } from "../api/aptos_config"; +import { AnyNumber } from "../bcs"; +import { get } from "../client"; +import { PaginationArgs } from "../client/types"; +import { Gen } from "../types"; +import { MaybeHexString, HexString, paginateWithCursor } from "../utils"; + +export async function getData(aptosConfig: AptosConfig, accountAddress: MaybeHexString): Promise { + const { data } = await get<{}, Gen.AccountData>({ + url: aptosConfig.network, + endpoint: `accounts/${HexString.ensure(accountAddress).hex()}`, + originMethod: "getData", + overrides: { ...aptosConfig.clientConfig }, + }); + return data; +} + +export async function getModules( + aptosConfig: AptosConfig, + accountAddress: MaybeHexString, + query?: { ledgerVersion?: AnyNumber }, +): Promise { + const response = await paginateWithCursor<{}, Gen.MoveModuleBytecode[]>({ + url: aptosConfig.network, + endpoint: `accounts/${HexString.ensure(accountAddress).hex()}/modules`, + params: { ledger_version: query?.ledgerVersion, limit: 1000 }, + originMethod: "getModules", + overrides: { ...aptosConfig.clientConfig }, + }); + return response; +} + +/** + * Queries module associated with given account by module name + * + * Note: In order to get all account resources, this function may call the API + * multiple times as it paginates. + * + * @param accountAddress Hex-encoded 32 byte Aptos account address + * @param moduleName The name of the module + * @param query.ledgerVersion Specifies ledger version of transactions. By default latest version will be used + * @returns Specified module. + * Module is represented by MoveModule interface. It contains module `bytecode` and `abi`, + * which JSON representation of a module + */ +export async function getModule( + aptosConfig: AptosConfig, + accountAddress: MaybeHexString, + moduleName: string, + query?: { ledgerVersion?: AnyNumber }, +): Promise { + const { data } = await get<{}, Gen.MoveModuleBytecode>({ + url: aptosConfig.network, + endpoint: `accounts/${HexString.ensure(accountAddress).hex()}/module/${moduleName}`, + originMethod: "getModule", + params: { ledger_version: query?.ledgerVersion }, + overrides: { ...aptosConfig.clientConfig }, + }); + return data; +} + +export async function getTransactions( + aptosConfig: AptosConfig, + accountAddress: MaybeHexString, + query?: PaginationArgs, +): Promise { + const { data } = await get<{}, Gen.Transaction[]>({ + url: aptosConfig.network, + endpoint: `accounts/${HexString.ensure(accountAddress).hex()}/transactions`, + originMethod: "getTransactions", + params: { start: query?.start, limit: query?.limit }, + overrides: { ...aptosConfig.clientConfig }, + }); + return data; +} + +export async function getResources( + aptosConfig: AptosConfig, + accountAddress: MaybeHexString, + query?: { ledgerVersion?: AnyNumber }, +): Promise { + const out = await paginateWithCursor<{}, Gen.MoveResource[]>({ + url: aptosConfig.network, + endpoint: `accounts/${accountAddress}/resources`, + params: { ledger_version: query?.ledgerVersion, limit: 9999 }, + originMethod: "getResources", + overrides: { ...aptosConfig.clientConfig }, + }); + return out; +} + +export async function getResource( + aptosConfig: AptosConfig, + accountAddress: MaybeHexString, + resourceType: Gen.MoveStructTag, + query?: { ledgerVersion?: AnyNumber }, +): Promise { + const { data } = await get<{}, Gen.MoveResource>({ + url: aptosConfig.network, + endpoint: `accounts/${HexString.ensure(accountAddress).hex()}/resource/${resourceType}`, + originMethod: "getResource", + params: { ledger_version: query?.ledgerVersion }, + overrides: { ...aptosConfig.clientConfig }, + }); + return data; +} diff --git a/ecosystem/typescript/sdk_v2/src/internal/general.ts b/ecosystem/typescript/sdk_v2/src/internal/general.ts new file mode 100644 index 0000000000000..4da9fb41a5ad3 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/internal/general.ts @@ -0,0 +1,68 @@ +import { AptosConfig } from "../api/aptos_config"; +import { get, post } from "../client"; +import { Gen } from "../types"; + +// TODO memoize +export async function getChainId(aptosConfig: AptosConfig): Promise { + const { data } = await get<{}, Gen.IndexResponse>({ + url: aptosConfig.network, + originMethod: "getChainId", + overrides: { ...aptosConfig.clientConfig }, + }); + return data.chain_id; +} + +export async function getLedgerInfo(aptosConfig: AptosConfig): Promise { + const { data } = await get<{}, Gen.IndexResponse>({ + url: aptosConfig.network, + originMethod: "getLedgerInfo", + overrides: { ...aptosConfig.clientConfig }, + }); + return data; +} + +export async function view( + aptosConfig: AptosConfig, + payload: Gen.ViewRequest, + ledger_version?: string, +): Promise { + const { data } = await post({ + url: aptosConfig.network, + body: payload, + endpoint: "view", + originMethod: "view", + params: { ledger_version }, + overrides: { ...aptosConfig.clientConfig }, + }); + return data; +} + +export async function getBlockByHeight( + aptosConfig: AptosConfig, + blockHeight: number, + withTransactions?: boolean, +): Promise { + const { data } = await get<{}, Gen.Block>({ + url: aptosConfig.network, + endpoint: `blocks/by_height/${blockHeight}`, + originMethod: "getBlockByHeight", + params: { with_transactions: withTransactions }, + overrides: { ...aptosConfig.clientConfig }, + }); + return data; +} + +export async function getBlockByVersion( + aptosConfig: AptosConfig, + version: number, + withTransactions?: boolean, +): Promise { + const { data } = await get<{}, Gen.Block>({ + url: aptosConfig.network, + endpoint: `blocks/by_version/${version}`, + originMethod: "getBlockByVersion", + params: { with_transactions: withTransactions }, + overrides: { ...aptosConfig.clientConfig }, + }); + return data; +} diff --git a/ecosystem/typescript/sdk_v2/src/internal/transaction.ts b/ecosystem/typescript/sdk_v2/src/internal/transaction.ts new file mode 100644 index 0000000000000..24bd76210432d --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/internal/transaction.ts @@ -0,0 +1,13 @@ +import { AptosConfig } from "../api/aptos_config"; +import { get } from "../client"; +import { Gen } from "../types"; + +export async function estimateGasPrice(aptosConfig: AptosConfig): Promise { + const { data } = await get<{}, Gen.GasEstimation>({ + url: aptosConfig.network, + endpoint: "estimate_gas_price", + originMethod: "estimateGasPrice", + overrides: { ...aptosConfig.clientConfig }, + }); + return data; +} diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/index.ts b/ecosystem/typescript/sdk_v2/src/types/generated/index.ts new file mode 100644 index 0000000000000..e7311c673a7c9 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/index.ts @@ -0,0 +1,101 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type { AccountData } from './models/AccountData'; +export type { AccountSignature } from './models/AccountSignature'; +export type { AccountSignature_Ed25519Signature } from './models/AccountSignature_Ed25519Signature'; +export type { AccountSignature_MultiEd25519Signature } from './models/AccountSignature_MultiEd25519Signature'; +export type { Address } from './models/Address'; +export type { AptosError } from './models/AptosError'; +export { AptosErrorCode } from './models/AptosErrorCode'; +export type { Block } from './models/Block'; +export type { BlockMetadataTransaction } from './models/BlockMetadataTransaction'; +export type { DecodedTableData } from './models/DecodedTableData'; +export type { DeletedTableData } from './models/DeletedTableData'; +export type { DeleteModule } from './models/DeleteModule'; +export type { DeleteResource } from './models/DeleteResource'; +export type { DeleteTableItem } from './models/DeleteTableItem'; +export type { DirectWriteSet } from './models/DirectWriteSet'; +export type { Ed25519Signature } from './models/Ed25519Signature'; +export type { EncodeSubmissionRequest } from './models/EncodeSubmissionRequest'; +export type { EntryFunctionId } from './models/EntryFunctionId'; +export type { EntryFunctionPayload } from './models/EntryFunctionPayload'; +export type { Event } from './models/Event'; +export type { EventGuid } from './models/EventGuid'; +export type { GasEstimation } from './models/GasEstimation'; +export type { GenesisPayload } from './models/GenesisPayload'; +export type { GenesisPayload_WriteSetPayload } from './models/GenesisPayload_WriteSetPayload'; +export type { GenesisTransaction } from './models/GenesisTransaction'; +export type { HashValue } from './models/HashValue'; +export type { HealthCheckSuccess } from './models/HealthCheckSuccess'; +export type { HexEncodedBytes } from './models/HexEncodedBytes'; +export type { IdentifierWrapper } from './models/IdentifierWrapper'; +export type { IndexResponse } from './models/IndexResponse'; +export type { ModuleBundlePayload } from './models/ModuleBundlePayload'; +export type { MoveAbility } from './models/MoveAbility'; +export type { MoveFunction } from './models/MoveFunction'; +export type { MoveFunctionGenericTypeParam } from './models/MoveFunctionGenericTypeParam'; +export { MoveFunctionVisibility } from './models/MoveFunctionVisibility'; +export type { MoveModule } from './models/MoveModule'; +export type { MoveModuleBytecode } from './models/MoveModuleBytecode'; +export type { MoveModuleId } from './models/MoveModuleId'; +export type { MoveResource } from './models/MoveResource'; +export type { MoveScriptBytecode } from './models/MoveScriptBytecode'; +export type { MoveStruct } from './models/MoveStruct'; +export type { MoveStructField } from './models/MoveStructField'; +export type { MoveStructGenericTypeParam } from './models/MoveStructGenericTypeParam'; +export type { MoveStructTag } from './models/MoveStructTag'; +export type { MoveStructValue } from './models/MoveStructValue'; +export type { MoveType } from './models/MoveType'; +export type { MoveValue } from './models/MoveValue'; +export type { MultiAgentSignature } from './models/MultiAgentSignature'; +export type { MultiEd25519Signature } from './models/MultiEd25519Signature'; +export type { MultisigPayload } from './models/MultisigPayload'; +export type { MultisigTransactionPayload } from './models/MultisigTransactionPayload'; +export type { PendingTransaction } from './models/PendingTransaction'; +export type { RawTableItemRequest } from './models/RawTableItemRequest'; +export { RoleType } from './models/RoleType'; +export type { ScriptPayload } from './models/ScriptPayload'; +export type { ScriptWriteSet } from './models/ScriptWriteSet'; +export type { StateCheckpointTransaction } from './models/StateCheckpointTransaction'; +export type { StateKeyWrapper } from './models/StateKeyWrapper'; +export type { SubmitTransactionRequest } from './models/SubmitTransactionRequest'; +export type { TableItemRequest } from './models/TableItemRequest'; +export type { Transaction } from './models/Transaction'; +export type { Transaction_BlockMetadataTransaction } from './models/Transaction_BlockMetadataTransaction'; +export type { Transaction_GenesisTransaction } from './models/Transaction_GenesisTransaction'; +export type { Transaction_PendingTransaction } from './models/Transaction_PendingTransaction'; +export type { Transaction_StateCheckpointTransaction } from './models/Transaction_StateCheckpointTransaction'; +export type { Transaction_UserTransaction } from './models/Transaction_UserTransaction'; +export type { TransactionPayload } from './models/TransactionPayload'; +export type { TransactionPayload_EntryFunctionPayload } from './models/TransactionPayload_EntryFunctionPayload'; +export type { TransactionPayload_ModuleBundlePayload } from './models/TransactionPayload_ModuleBundlePayload'; +export type { TransactionPayload_MultisigPayload } from './models/TransactionPayload_MultisigPayload'; +export type { TransactionPayload_ScriptPayload } from './models/TransactionPayload_ScriptPayload'; +export type { TransactionsBatchSingleSubmissionFailure } from './models/TransactionsBatchSingleSubmissionFailure'; +export type { TransactionsBatchSubmissionResult } from './models/TransactionsBatchSubmissionResult'; +export type { TransactionSignature } from './models/TransactionSignature'; +export type { TransactionSignature_Ed25519Signature } from './models/TransactionSignature_Ed25519Signature'; +export type { TransactionSignature_MultiAgentSignature } from './models/TransactionSignature_MultiAgentSignature'; +export type { TransactionSignature_MultiEd25519Signature } from './models/TransactionSignature_MultiEd25519Signature'; +export type { U128 } from './models/U128'; +export type { U256 } from './models/U256'; +export type { U64 } from './models/U64'; +export type { UserTransaction } from './models/UserTransaction'; +export type { VersionedEvent } from './models/VersionedEvent'; +export type { ViewRequest } from './models/ViewRequest'; +export type { WriteModule } from './models/WriteModule'; +export type { WriteResource } from './models/WriteResource'; +export type { WriteSet } from './models/WriteSet'; +export type { WriteSet_DirectWriteSet } from './models/WriteSet_DirectWriteSet'; +export type { WriteSet_ScriptWriteSet } from './models/WriteSet_ScriptWriteSet'; +export type { WriteSetChange } from './models/WriteSetChange'; +export type { WriteSetChange_DeleteModule } from './models/WriteSetChange_DeleteModule'; +export type { WriteSetChange_DeleteResource } from './models/WriteSetChange_DeleteResource'; +export type { WriteSetChange_DeleteTableItem } from './models/WriteSetChange_DeleteTableItem'; +export type { WriteSetChange_WriteModule } from './models/WriteSetChange_WriteModule'; +export type { WriteSetChange_WriteResource } from './models/WriteSetChange_WriteResource'; +export type { WriteSetChange_WriteTableItem } from './models/WriteSetChange_WriteTableItem'; +export type { WriteSetPayload } from './models/WriteSetPayload'; +export type { WriteTableItem } from './models/WriteTableItem'; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/AccountData.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/AccountData.ts new file mode 100644 index 0000000000000..8df40aa857e6d --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/AccountData.ts @@ -0,0 +1,17 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HexEncodedBytes } from './HexEncodedBytes'; +import type { U64 } from './U64'; + +/** + * Account data + * + * A simplified version of the onchain Account resource + */ +export type AccountData = { + sequence_number: U64; + authentication_key: HexEncodedBytes; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/AccountSignature.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/AccountSignature.ts new file mode 100644 index 0000000000000..576d1507de68d --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/AccountSignature.ts @@ -0,0 +1,17 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { AccountSignature_Ed25519Signature } from './AccountSignature_Ed25519Signature'; +import type { AccountSignature_MultiEd25519Signature } from './AccountSignature_MultiEd25519Signature'; + +/** + * Account signature scheme + * + * The account signature scheme allows you to have two types of accounts: + * + * 1. A single Ed25519 key account, one private key + * 2. A k-of-n multi-Ed25519 key account, multiple private keys, such that k-of-n must sign a transaction. + */ +export type AccountSignature = (AccountSignature_Ed25519Signature | AccountSignature_MultiEd25519Signature); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/AccountSignature_Ed25519Signature.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/AccountSignature_Ed25519Signature.ts new file mode 100644 index 0000000000000..3d91da519364e --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/AccountSignature_Ed25519Signature.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Ed25519Signature } from './Ed25519Signature'; + +export type AccountSignature_Ed25519Signature = ({ + type: string; +} & Ed25519Signature); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/AccountSignature_MultiEd25519Signature.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/AccountSignature_MultiEd25519Signature.ts new file mode 100644 index 0000000000000..11acab2ebd410 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/AccountSignature_MultiEd25519Signature.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MultiEd25519Signature } from './MultiEd25519Signature'; + +export type AccountSignature_MultiEd25519Signature = ({ + type: string; +} & MultiEd25519Signature); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/Address.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/Address.ts new file mode 100644 index 0000000000000..03c32f6b45d1e --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/Address.ts @@ -0,0 +1,14 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * A hex encoded 32 byte Aptos account address. + * + * This is represented in a string as a 64 character hex string, sometimes + * shortened by stripping leading 0s, and adding a 0x. + * + * For example, address 0x0000000000000000000000000000000000000000000000000000000000000001 is represented as 0x1. + * + */ +export type Address = string; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/AptosError.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/AptosError.ts new file mode 100644 index 0000000000000..ed24d55242bef --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/AptosError.ts @@ -0,0 +1,22 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { AptosErrorCode } from './AptosErrorCode'; + +/** + * This is the generic struct we use for all API errors, it contains a string + * message and an Aptos API specific error code. + */ +export type AptosError = { + /** + * A message describing the error + */ + message: string; + error_code: AptosErrorCode; + /** + * A code providing VM error details when submitting transactions to the VM + */ + vm_error_code?: number; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/AptosErrorCode.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/AptosErrorCode.ts new file mode 100644 index 0000000000000..a20bac5d55260 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/AptosErrorCode.ts @@ -0,0 +1,31 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * These codes provide more granular error information beyond just the HTTP + * status code of the response. + */ +export enum AptosErrorCode { + ACCOUNT_NOT_FOUND = 'account_not_found', + RESOURCE_NOT_FOUND = 'resource_not_found', + MODULE_NOT_FOUND = 'module_not_found', + STRUCT_FIELD_NOT_FOUND = 'struct_field_not_found', + VERSION_NOT_FOUND = 'version_not_found', + TRANSACTION_NOT_FOUND = 'transaction_not_found', + TABLE_ITEM_NOT_FOUND = 'table_item_not_found', + BLOCK_NOT_FOUND = 'block_not_found', + STATE_VALUE_NOT_FOUND = 'state_value_not_found', + VERSION_PRUNED = 'version_pruned', + BLOCK_PRUNED = 'block_pruned', + INVALID_INPUT = 'invalid_input', + INVALID_TRANSACTION_UPDATE = 'invalid_transaction_update', + SEQUENCE_NUMBER_TOO_OLD = 'sequence_number_too_old', + VM_ERROR = 'vm_error', + HEALTH_CHECK_FAILED = 'health_check_failed', + MEMPOOL_IS_FULL = 'mempool_is_full', + INTERNAL_ERROR = 'internal_error', + WEB_FRAMEWORK_ERROR = 'web_framework_error', + BCS_NOT_SUPPORTED = 'bcs_not_supported', + API_DISABLED = 'api_disabled', +} diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/Block.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/Block.ts new file mode 100644 index 0000000000000..e6c2a57e31af2 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/Block.ts @@ -0,0 +1,26 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HashValue } from './HashValue'; +import type { Transaction } from './Transaction'; +import type { U64 } from './U64'; + +/** + * A Block with or without transactions + * + * This contains the information about a transactions along with + * associated transactions if requested + */ +export type Block = { + block_height: U64; + block_hash: HashValue; + block_timestamp: U64; + first_version: U64; + last_version: U64; + /** + * The transactions in the block in sequential order + */ + transactions?: Array; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/BlockMetadataTransaction.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/BlockMetadataTransaction.ts new file mode 100644 index 0000000000000..9ec5828deedd9 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/BlockMetadataTransaction.ts @@ -0,0 +1,55 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { Event } from './Event'; +import type { HashValue } from './HashValue'; +import type { U64 } from './U64'; +import type { WriteSetChange } from './WriteSetChange'; + +/** + * A block metadata transaction + * + * This signifies the beginning of a block, and contains information + * about the specific block + */ +export type BlockMetadataTransaction = { + version: U64; + hash: HashValue; + state_change_hash: HashValue; + event_root_hash: HashValue; + state_checkpoint_hash?: HashValue; + gas_used: U64; + /** + * Whether the transaction was successful + */ + success: boolean; + /** + * The VM status of the transaction, can tell useful information in a failure + */ + vm_status: string; + accumulator_root_hash: HashValue; + /** + * Final state of resources changed by the transaction + */ + changes: Array; + id: HashValue; + epoch: U64; + round: U64; + /** + * The events emitted at the block creation + */ + events: Array; + /** + * Previous block votes + */ + previous_block_votes_bitvec: Array; + proposer: Address; + /** + * The indices of the proposers who failed to propose + */ + failed_proposer_indices: Array; + timestamp: U64; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/DecodedTableData.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/DecodedTableData.ts new file mode 100644 index 0000000000000..83571f4fe5287 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/DecodedTableData.ts @@ -0,0 +1,26 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Decoded table data + */ +export type DecodedTableData = { + /** + * Key of table in JSON + */ + key: any; + /** + * Type of key + */ + key_type: string; + /** + * Value of table in JSON + */ + value: any; + /** + * Type of value + */ + value_type: string; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/DeleteModule.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/DeleteModule.ts new file mode 100644 index 0000000000000..44d49ce0ca66a --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/DeleteModule.ts @@ -0,0 +1,19 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { MoveModuleId } from './MoveModuleId'; + +/** + * Delete a module + */ +export type DeleteModule = { + address: Address; + /** + * State key hash + */ + state_key_hash: string; + module: MoveModuleId; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/DeleteResource.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/DeleteResource.ts new file mode 100644 index 0000000000000..ff863a9491086 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/DeleteResource.ts @@ -0,0 +1,19 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { MoveStructTag } from './MoveStructTag'; + +/** + * Delete a resource + */ +export type DeleteResource = { + address: Address; + /** + * State key hash + */ + state_key_hash: string; + resource: MoveStructTag; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/DeleteTableItem.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/DeleteTableItem.ts new file mode 100644 index 0000000000000..c2655d4f5be06 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/DeleteTableItem.ts @@ -0,0 +1,17 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DeletedTableData } from './DeletedTableData'; +import type { HexEncodedBytes } from './HexEncodedBytes'; + +/** + * Delete a table item + */ +export type DeleteTableItem = { + state_key_hash: string; + handle: HexEncodedBytes; + key: HexEncodedBytes; + data?: DeletedTableData; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/DeletedTableData.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/DeletedTableData.ts new file mode 100644 index 0000000000000..ccf4fd6e9b3cb --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/DeletedTableData.ts @@ -0,0 +1,18 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Deleted table data + */ +export type DeletedTableData = { + /** + * Deleted key + */ + key: any; + /** + * Deleted key type + */ + key_type: string; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/DirectWriteSet.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/DirectWriteSet.ts new file mode 100644 index 0000000000000..1c09731f04fe6 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/DirectWriteSet.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Event } from './Event'; +import type { WriteSetChange } from './WriteSetChange'; + +export type DirectWriteSet = { + changes: Array; + events: Array; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/Ed25519Signature.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/Ed25519Signature.ts new file mode 100644 index 0000000000000..9d277a9e89052 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/Ed25519Signature.ts @@ -0,0 +1,13 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HexEncodedBytes } from "./HexEncodedBytes"; + +/** + * A single Ed25519 signature + */ +export type Ed25519Signature = { + public_key: HexEncodedBytes; + signature: HexEncodedBytes; +}; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/EncodeSubmissionRequest.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/EncodeSubmissionRequest.ts new file mode 100644 index 0000000000000..52e6f903e6f00 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/EncodeSubmissionRequest.ts @@ -0,0 +1,24 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { TransactionPayload } from './TransactionPayload'; +import type { U64 } from './U64'; + +/** + * Request to encode a submission + */ +export type EncodeSubmissionRequest = { + sender: Address; + sequence_number: U64; + max_gas_amount: U64; + gas_unit_price: U64; + expiration_timestamp_secs: U64; + payload: TransactionPayload; + /** + * Secondary signer accounts of the request for Multi-agent + */ + secondary_signers?: Array
; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/EntryFunctionId.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/EntryFunctionId.ts new file mode 100644 index 0000000000000..f38310d0c2a1c --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/EntryFunctionId.ts @@ -0,0 +1,13 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Entry function id is string representation of a entry function defined on-chain. + * + * Format: `{address}::{module name}::{function name}` + * + * Both `module name` and `function name` are case-sensitive. + * + */ +export type EntryFunctionId = string; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/EntryFunctionPayload.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/EntryFunctionPayload.ts new file mode 100644 index 0000000000000..78a3ee67d866d --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/EntryFunctionPayload.ts @@ -0,0 +1,22 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EntryFunctionId } from './EntryFunctionId'; +import type { MoveType } from './MoveType'; + +/** + * Payload which runs a single entry function + */ +export type EntryFunctionPayload = { + function: EntryFunctionId; + /** + * Type arguments of the function + */ + type_arguments: Array; + /** + * Arguments of the function + */ + arguments: Array; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/Event.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/Event.ts new file mode 100644 index 0000000000000..a160a00cc0dde --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/Event.ts @@ -0,0 +1,21 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EventGuid } from './EventGuid'; +import type { MoveType } from './MoveType'; +import type { U64 } from './U64'; + +/** + * An event from a transaction + */ +export type Event = { + guid: EventGuid; + sequence_number: U64; + type: MoveType; + /** + * The JSON representation of the event + */ + data: any; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/EventGuid.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/EventGuid.ts new file mode 100644 index 0000000000000..928ad847f5797 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/EventGuid.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { U64 } from './U64'; + +export type EventGuid = { + creation_number: U64; + account_address: Address; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/GasEstimation.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/GasEstimation.ts new file mode 100644 index 0000000000000..f8ebd699311c9 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/GasEstimation.ts @@ -0,0 +1,22 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Struct holding the outputs of the estimate gas API + */ +export type GasEstimation = { + /** + * The deprioritized estimate for the gas unit price + */ + deprioritized_gas_estimate?: number; + /** + * The current estimate for the gas unit price + */ + gas_estimate: number; + /** + * The prioritized estimate for the gas unit price + */ + prioritized_gas_estimate?: number; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/GenesisPayload.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/GenesisPayload.ts new file mode 100644 index 0000000000000..66d653a68f279 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/GenesisPayload.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { GenesisPayload_WriteSetPayload } from './GenesisPayload_WriteSetPayload'; + +/** + * The writeset payload of the Genesis transaction + */ +export type GenesisPayload = GenesisPayload_WriteSetPayload; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/GenesisPayload_WriteSetPayload.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/GenesisPayload_WriteSetPayload.ts new file mode 100644 index 0000000000000..a61275063a40a --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/GenesisPayload_WriteSetPayload.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { WriteSetPayload } from './WriteSetPayload'; + +export type GenesisPayload_WriteSetPayload = ({ + type: string; +} & WriteSetPayload); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/GenesisTransaction.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/GenesisTransaction.ts new file mode 100644 index 0000000000000..563a8be8fce78 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/GenesisTransaction.ts @@ -0,0 +1,42 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Event } from './Event'; +import type { GenesisPayload } from './GenesisPayload'; +import type { HashValue } from './HashValue'; +import type { U64 } from './U64'; +import type { WriteSetChange } from './WriteSetChange'; + +/** + * The genesis transaction + * + * This only occurs at the genesis transaction (version 0) + */ +export type GenesisTransaction = { + version: U64; + hash: HashValue; + state_change_hash: HashValue; + event_root_hash: HashValue; + state_checkpoint_hash?: HashValue; + gas_used: U64; + /** + * Whether the transaction was successful + */ + success: boolean; + /** + * The VM status of the transaction, can tell useful information in a failure + */ + vm_status: string; + accumulator_root_hash: HashValue; + /** + * Final state of resources changed by the transaction + */ + changes: Array; + payload: GenesisPayload; + /** + * Events emitted during genesis + */ + events: Array; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/HashValue.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/HashValue.ts new file mode 100644 index 0000000000000..a296dd84c2a4b --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/HashValue.ts @@ -0,0 +1,5 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type HashValue = string; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/HealthCheckSuccess.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/HealthCheckSuccess.ts new file mode 100644 index 0000000000000..ff98f0ed77d30 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/HealthCheckSuccess.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Representation of a successful healthcheck + */ +export type HealthCheckSuccess = { + message: string; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/HexEncodedBytes.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/HexEncodedBytes.ts new file mode 100644 index 0000000000000..d4a21baf0ce47 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/HexEncodedBytes.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * All bytes (Vec) data is represented as hex-encoded string prefixed with `0x` and fulfilled with + * two hex digits per byte. + * + * Unlike the `Address` type, HexEncodedBytes will not trim any zeros. + * + */ +export type HexEncodedBytes = string; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/IdentifierWrapper.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/IdentifierWrapper.ts new file mode 100644 index 0000000000000..8bf5d9a71895a --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/IdentifierWrapper.ts @@ -0,0 +1,5 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type IdentifierWrapper = string; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/IndexResponse.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/IndexResponse.ts new file mode 100644 index 0000000000000..1ca2519b1a62d --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/IndexResponse.ts @@ -0,0 +1,30 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { RoleType } from './RoleType'; +import type { U64 } from './U64'; + +/** + * The struct holding all data returned to the client by the + * index endpoint (i.e., GET "/"). Only for responding in JSON + */ +export type IndexResponse = { + /** + * Chain ID of the current chain + */ + chain_id: number; + epoch: U64; + ledger_version: U64; + oldest_ledger_version: U64; + ledger_timestamp: U64; + node_role: RoleType; + oldest_block_height: U64; + block_height: U64; + /** + * Git hash of the build of the API endpoint. Can be used to determine the exact + * software version used by the API endpoint. + */ + git_hash?: string; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/ModuleBundlePayload.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/ModuleBundlePayload.ts new file mode 100644 index 0000000000000..be34a1f42ecbd --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/ModuleBundlePayload.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MoveModuleBytecode } from './MoveModuleBytecode'; + +export type ModuleBundlePayload = { + modules: Array; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveAbility.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveAbility.ts new file mode 100644 index 0000000000000..311c5db9003a8 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveAbility.ts @@ -0,0 +1,5 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type MoveAbility = string; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveFunction.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveFunction.ts new file mode 100644 index 0000000000000..4ce3ad729c26c --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveFunction.ts @@ -0,0 +1,37 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { IdentifierWrapper } from './IdentifierWrapper'; +import type { MoveFunctionGenericTypeParam } from './MoveFunctionGenericTypeParam'; +import type { MoveFunctionVisibility } from './MoveFunctionVisibility'; +import type { MoveType } from './MoveType'; + +/** + * Move function + */ +export type MoveFunction = { + name: IdentifierWrapper; + visibility: MoveFunctionVisibility; + /** + * Whether the function can be called as an entry function directly in a transaction + */ + is_entry: boolean; + /** + * Whether the function is a view function or not + */ + is_view: boolean; + /** + * Generic type params associated with the Move function + */ + generic_type_params: Array; + /** + * Parameters associated with the move function + */ + params: Array; + /** + * Return type of the function + */ + return: Array; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveFunctionGenericTypeParam.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveFunctionGenericTypeParam.ts new file mode 100644 index 0000000000000..c0776fe5cab0c --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveFunctionGenericTypeParam.ts @@ -0,0 +1,16 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MoveAbility } from './MoveAbility'; + +/** + * Move function generic type param + */ +export type MoveFunctionGenericTypeParam = { + /** + * Move abilities tied to the generic type param and associated with the function that uses it + */ + constraints: Array; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveFunctionVisibility.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveFunctionVisibility.ts new file mode 100644 index 0000000000000..a1684d5c84713 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveFunctionVisibility.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Move function visibility + */ +export enum MoveFunctionVisibility { + PRIVATE = 'private', + PUBLIC = 'public', + FRIEND = 'friend', +} diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveModule.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveModule.ts new file mode 100644 index 0000000000000..f2d127ff28614 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveModule.ts @@ -0,0 +1,30 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { IdentifierWrapper } from './IdentifierWrapper'; +import type { MoveFunction } from './MoveFunction'; +import type { MoveModuleId } from './MoveModuleId'; +import type { MoveStruct } from './MoveStruct'; + +/** + * A Move module + */ +export type MoveModule = { + address: Address; + name: IdentifierWrapper; + /** + * Friends of the module + */ + friends: Array; + /** + * Public functions of the module + */ + exposed_functions: Array; + /** + * Structs of the module + */ + structs: Array; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveModuleBytecode.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveModuleBytecode.ts new file mode 100644 index 0000000000000..9348d105310a5 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveModuleBytecode.ts @@ -0,0 +1,15 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HexEncodedBytes } from './HexEncodedBytes'; +import type { MoveModule } from './MoveModule'; + +/** + * Move module bytecode along with it's ABI + */ +export type MoveModuleBytecode = { + bytecode: HexEncodedBytes; + abi?: MoveModule; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveModuleId.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveModuleId.ts new file mode 100644 index 0000000000000..5ad74349b690b --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveModuleId.ts @@ -0,0 +1,15 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Move module id is a string representation of Move module. + * + * Format: `{address}::{module name}` + * + * `address` should be hex-encoded 32 byte account address that is prefixed with `0x`. + * + * Module name is case-sensitive. + * + */ +export type MoveModuleId = string; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveResource.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveResource.ts new file mode 100644 index 0000000000000..544bfa47be053 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveResource.ts @@ -0,0 +1,15 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MoveStructTag } from './MoveStructTag'; +import type { MoveStructValue } from './MoveStructValue'; + +/** + * A parsed Move resource + */ +export type MoveResource = { + type: MoveStructTag; + data: MoveStructValue; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveScriptBytecode.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveScriptBytecode.ts new file mode 100644 index 0000000000000..109a6cf6bfcf0 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveScriptBytecode.ts @@ -0,0 +1,15 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HexEncodedBytes } from './HexEncodedBytes'; +import type { MoveFunction } from './MoveFunction'; + +/** + * Move script bytecode + */ +export type MoveScriptBytecode = { + bytecode: HexEncodedBytes; + abi?: MoveFunction; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStruct.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStruct.ts new file mode 100644 index 0000000000000..74dd1d8766e6f --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStruct.ts @@ -0,0 +1,32 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { IdentifierWrapper } from './IdentifierWrapper'; +import type { MoveAbility } from './MoveAbility'; +import type { MoveStructField } from './MoveStructField'; +import type { MoveStructGenericTypeParam } from './MoveStructGenericTypeParam'; + +/** + * A move struct + */ +export type MoveStruct = { + name: IdentifierWrapper; + /** + * Whether the struct is a native struct of Move + */ + is_native: boolean; + /** + * Abilities associated with the struct + */ + abilities: Array; + /** + * Generic types associated with the struct + */ + generic_type_params: Array; + /** + * Fields associated with the struct + */ + fields: Array; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructField.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructField.ts new file mode 100644 index 0000000000000..3f20b0bfbb72b --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructField.ts @@ -0,0 +1,15 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { IdentifierWrapper } from './IdentifierWrapper'; +import type { MoveType } from './MoveType'; + +/** + * Move struct field + */ +export type MoveStructField = { + name: IdentifierWrapper; + type: MoveType; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructGenericTypeParam.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructGenericTypeParam.ts new file mode 100644 index 0000000000000..5ff3317db916d --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructGenericTypeParam.ts @@ -0,0 +1,16 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MoveAbility } from './MoveAbility'; + +/** + * Move generic type param + */ +export type MoveStructGenericTypeParam = { + /** + * Move abilities tied to the generic type param and associated with the type that uses it + */ + constraints: Array; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructTag.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructTag.ts new file mode 100644 index 0000000000000..254235ddd4b0a --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructTag.ts @@ -0,0 +1,24 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * String representation of a MoveStructTag (on-chain Move struct type). This exists so you + * can specify MoveStructTags as path / query parameters, e.g. for get_events_by_event_handle. + * + * It is a combination of: + * 1. `move_module_address`, `module_name` and `struct_name`, all joined by `::` + * 2. `struct generic type parameters` joined by `, ` + * + * Examples: + * * `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>` + * * `0x1::account::Account` + * + * Note: + * 1. Empty chars should be ignored when comparing 2 struct tag ids. + * 2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding). + * + * See [doc](https://aptos.dev/concepts/accounts) for more details. + * + */ +export type MoveStructTag = string; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructValue.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructValue.ts new file mode 100644 index 0000000000000..11d4da45739bc --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveStructValue.ts @@ -0,0 +1,49 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * This is a JSON representation of some data within an account resource. More specifically, + * it is a map of strings to arbitrary JSON values / objects, where the keys are top level + * fields within the given resource. + * + * To clarify, you might query for 0x1::account::Account and see the example data. + * + * Move `bool` type value is serialized into `boolean`. + * + * Move `u8`, `u16` and `u32` type value is serialized into `integer`. + * + * Move `u64`, `u128` and `u256` type value is serialized into `string`. + * + * Move `address` type value (32 byte Aptos account address) is serialized into a HexEncodedBytes string. + * For example: + * - `0x1` + * - `0x1668f6be25668c1a17cd8caf6b8d2f25` + * + * Move `vector` type value is serialized into `array`, except `vector` which is serialized into a + * HexEncodedBytes string with `0x` prefix. + * For example: + * - `vector{255, 255}` => `["255", "255"]` + * - `vector{255, 255}` => `0xffff` + * + * Move `struct` type value is serialized into `object` that looks like this (except some Move stdlib types, see the following section): + * ```json + * { + * field1_name: field1_value, + * field2_name: field2_value, + * ...... + * } + * ``` + * + * For example: + * `{ "created": "0xa550c18", "role_id": "0" }` + * + * **Special serialization for Move stdlib types**: + * - [0x1::string::String](https://github.com/aptos-labs/aptos-core/blob/main/language/move-stdlib/docs/ascii.md) + * is serialized into `string`. For example, struct value `0x1::string::String{bytes: b"Hello World!"}` + * is serialized as `"Hello World!"` in JSON. + * + */ + export type MoveStructValue = { + }; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveType.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveType.ts new file mode 100644 index 0000000000000..226183770b27c --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveType.ts @@ -0,0 +1,34 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * String representation of an on-chain Move type tag that is exposed in transaction payload. + * Values: + * - bool + * - u8 + * - u16 + * - u32 + * - u64 + * - u128 + * - u256 + * - address + * - signer + * - vector: `vector<{non-reference MoveTypeId}>` + * - struct: `{address}::{module_name}::{struct_name}::<{generic types}>` + * + * Vector type value examples: + * - `vector` + * - `vector>` + * - `vector<0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>>` + * + * Struct type value examples: + * - `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin> + * - `0x1::account::Account` + * + * Note: + * 1. Empty chars should be ignored when comparing 2 struct tag ids. + * 2. When used in an URL path, should be encoded by url-encoding (AKA percent-encoding). + * + */ +export type MoveType = string; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveValue.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveValue.ts new file mode 100644 index 0000000000000..899490be8b4da --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MoveValue.ts @@ -0,0 +1,16 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { HexEncodedBytes } from './HexEncodedBytes'; +import type { MoveStructValue } from './MoveStructValue'; +import type { U128 } from './U128'; +import type { U256 } from './U256'; +import type { U64 } from './U64'; + +/** + * An enum of the possible Move value types + */ +export type MoveValue = (number | U64 | U128 | U256 | boolean | Address | Array | HexEncodedBytes | MoveStructValue | string); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MultiAgentSignature.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MultiAgentSignature.ts new file mode 100644 index 0000000000000..f07b81734f79e --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MultiAgentSignature.ts @@ -0,0 +1,24 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { AccountSignature } from './AccountSignature'; +import type { Address } from './Address'; + +/** + * Multi agent signature for multi agent transactions + * + * This allows you to have transactions across multiple accounts + */ +export type MultiAgentSignature = { + sender: AccountSignature; + /** + * The other involved parties' addresses + */ + secondary_signer_addresses: Array
; + /** + * The associated signatures, in the same order as the secondary addresses + */ + secondary_signers: Array; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MultiEd25519Signature.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MultiEd25519Signature.ts new file mode 100644 index 0000000000000..29809a29c6c05 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MultiEd25519Signature.ts @@ -0,0 +1,27 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HexEncodedBytes } from './HexEncodedBytes'; + +/** + * A Ed25519 multi-sig signature + * + * This allows k-of-n signing for a transaction + */ +export type MultiEd25519Signature = { + /** + * The public keys for the Ed25519 signature + */ + public_keys: Array; + /** + * Signature associated with the public keys in the same order + */ + signatures: Array; + /** + * The number of signatures required for a successful transaction + */ + threshold: number; + bitmap: HexEncodedBytes; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MultisigPayload.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MultisigPayload.ts new file mode 100644 index 0000000000000..9100a74b3359f --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MultisigPayload.ts @@ -0,0 +1,16 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { MultisigTransactionPayload } from './MultisigTransactionPayload'; + +/** + * A multisig transaction that allows an owner of a multisig account to execute a pre-approved + * transaction as the multisig account. + */ +export type MultisigPayload = { + multisig_address: Address; + transaction_payload?: MultisigTransactionPayload; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/MultisigTransactionPayload.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/MultisigTransactionPayload.ts new file mode 100644 index 0000000000000..d3191b538308b --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/MultisigTransactionPayload.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EntryFunctionPayload } from './EntryFunctionPayload'; + +export type MultisigTransactionPayload = EntryFunctionPayload; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/PendingTransaction.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/PendingTransaction.ts new file mode 100644 index 0000000000000..2b4ad87fd6b8d --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/PendingTransaction.ts @@ -0,0 +1,24 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { HashValue } from './HashValue'; +import type { TransactionPayload } from './TransactionPayload'; +import type { TransactionSignature } from './TransactionSignature'; +import type { U64 } from './U64'; + +/** + * A transaction waiting in mempool + */ +export type PendingTransaction = { + hash: HashValue; + sender: Address; + sequence_number: U64; + max_gas_amount: U64; + gas_unit_price: U64; + expiration_timestamp_secs: U64; + payload: TransactionPayload; + signature?: TransactionSignature; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/RawTableItemRequest.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/RawTableItemRequest.ts new file mode 100644 index 0000000000000..e8fc0f8eccd1d --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/RawTableItemRequest.ts @@ -0,0 +1,13 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HexEncodedBytes } from './HexEncodedBytes'; + +/** + * Table Item request for the GetTableItemRaw API + */ +export type RawTableItemRequest = { + key: HexEncodedBytes; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/RoleType.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/RoleType.ts new file mode 100644 index 0000000000000..f0b5c207d63bf --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/RoleType.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export enum RoleType { + VALIDATOR = 'validator', + FULL_NODE = 'full_node', +} diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/ScriptPayload.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/ScriptPayload.ts new file mode 100644 index 0000000000000..52cb0a0574352 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/ScriptPayload.ts @@ -0,0 +1,22 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MoveScriptBytecode } from './MoveScriptBytecode'; +import type { MoveType } from './MoveType'; + +/** + * Payload which runs a script that can run multiple functions + */ +export type ScriptPayload = { + code: MoveScriptBytecode; + /** + * Type arguments of the function + */ + type_arguments: Array; + /** + * Arguments of the function + */ + arguments: Array; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/ScriptWriteSet.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/ScriptWriteSet.ts new file mode 100644 index 0000000000000..469b780799c7a --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/ScriptWriteSet.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { ScriptPayload } from './ScriptPayload'; + +export type ScriptWriteSet = { + execute_as: Address; + script: ScriptPayload; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/StateCheckpointTransaction.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/StateCheckpointTransaction.ts new file mode 100644 index 0000000000000..bfe5b5dbcd246 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/StateCheckpointTransaction.ts @@ -0,0 +1,34 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { HashValue } from './HashValue'; +import type { U64 } from './U64'; +import type { WriteSetChange } from './WriteSetChange'; + +/** + * A state checkpoint transaction + */ +export type StateCheckpointTransaction = { + version: U64; + hash: HashValue; + state_change_hash: HashValue; + event_root_hash: HashValue; + state_checkpoint_hash?: HashValue; + gas_used: U64; + /** + * Whether the transaction was successful + */ + success: boolean; + /** + * The VM status of the transaction, can tell useful information in a failure + */ + vm_status: string; + accumulator_root_hash: HashValue; + /** + * Final state of resources changed by the transaction + */ + changes: Array; + timestamp: U64; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/StateKeyWrapper.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/StateKeyWrapper.ts new file mode 100644 index 0000000000000..d3939a43e6a77 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/StateKeyWrapper.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Representation of a StateKey as a hex string. This is used for cursor based pagination. + * + */ +export type StateKeyWrapper = string; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/SubmitTransactionRequest.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/SubmitTransactionRequest.ts new file mode 100644 index 0000000000000..b850d3f548e2d --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/SubmitTransactionRequest.ts @@ -0,0 +1,24 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { TransactionPayload } from './TransactionPayload'; +import type { TransactionSignature } from './TransactionSignature'; +import type { U64 } from './U64'; + +/** + * A request to submit a transaction + * + * This requires a transaction and a signature of it + */ +export type SubmitTransactionRequest = { + sender: Address; + sequence_number: U64; + max_gas_amount: U64; + gas_unit_price: U64; + expiration_timestamp_secs: U64; + payload: TransactionPayload; + signature: TransactionSignature; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/TableItemRequest.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/TableItemRequest.ts new file mode 100644 index 0000000000000..18b44286d5165 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/TableItemRequest.ts @@ -0,0 +1,18 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MoveType } from './MoveType'; + +/** + * Table Item request for the GetTableItem API + */ +export type TableItemRequest = { + key_type: MoveType; + value_type: MoveType; + /** + * The value of the table item's key + */ + key: any; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction.ts new file mode 100644 index 0000000000000..0d6bd99e8daa9 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction.ts @@ -0,0 +1,15 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Transaction_BlockMetadataTransaction } from './Transaction_BlockMetadataTransaction'; +import type { Transaction_GenesisTransaction } from './Transaction_GenesisTransaction'; +import type { Transaction_PendingTransaction } from './Transaction_PendingTransaction'; +import type { Transaction_StateCheckpointTransaction } from './Transaction_StateCheckpointTransaction'; +import type { Transaction_UserTransaction } from './Transaction_UserTransaction'; + +/** + * Enum of the different types of transactions in Aptos + */ +export type Transaction = (Transaction_PendingTransaction | Transaction_UserTransaction | Transaction_GenesisTransaction | Transaction_BlockMetadataTransaction | Transaction_StateCheckpointTransaction); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload.ts new file mode 100644 index 0000000000000..0115a29749beb --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload.ts @@ -0,0 +1,14 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TransactionPayload_EntryFunctionPayload } from './TransactionPayload_EntryFunctionPayload'; +import type { TransactionPayload_ModuleBundlePayload } from './TransactionPayload_ModuleBundlePayload'; +import type { TransactionPayload_MultisigPayload } from './TransactionPayload_MultisigPayload'; +import type { TransactionPayload_ScriptPayload } from './TransactionPayload_ScriptPayload'; + +/** + * An enum of the possible transaction payloads + */ +export type TransactionPayload = (TransactionPayload_EntryFunctionPayload | TransactionPayload_ScriptPayload | TransactionPayload_ModuleBundlePayload | TransactionPayload_MultisigPayload); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_EntryFunctionPayload.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_EntryFunctionPayload.ts new file mode 100644 index 0000000000000..d44e5d89a654a --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_EntryFunctionPayload.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EntryFunctionPayload } from './EntryFunctionPayload'; + +export type TransactionPayload_EntryFunctionPayload = ({ + type: string; +} & EntryFunctionPayload); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_ModuleBundlePayload.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_ModuleBundlePayload.ts new file mode 100644 index 0000000000000..0193cb9d97dc5 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_ModuleBundlePayload.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ModuleBundlePayload } from './ModuleBundlePayload'; + +export type TransactionPayload_ModuleBundlePayload = ({ + type: string; +} & ModuleBundlePayload); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_MultisigPayload.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_MultisigPayload.ts new file mode 100644 index 0000000000000..01023dd71e6e9 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_MultisigPayload.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MultisigPayload } from './MultisigPayload'; + +export type TransactionPayload_MultisigPayload = ({ + type: string; +} & MultisigPayload); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_ScriptPayload.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_ScriptPayload.ts new file mode 100644 index 0000000000000..9e7feb973092b --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionPayload_ScriptPayload.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ScriptPayload } from './ScriptPayload'; + +export type TransactionPayload_ScriptPayload = ({ + type: string; +} & ScriptPayload); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature.ts new file mode 100644 index 0000000000000..b3861fbdb2ba8 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature.ts @@ -0,0 +1,13 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TransactionSignature_Ed25519Signature } from './TransactionSignature_Ed25519Signature'; +import type { TransactionSignature_MultiAgentSignature } from './TransactionSignature_MultiAgentSignature'; +import type { TransactionSignature_MultiEd25519Signature } from './TransactionSignature_MultiEd25519Signature'; + +/** + * An enum representing the different transaction signatures available + */ +export type TransactionSignature = (TransactionSignature_Ed25519Signature | TransactionSignature_MultiEd25519Signature | TransactionSignature_MultiAgentSignature); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature_Ed25519Signature.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature_Ed25519Signature.ts new file mode 100644 index 0000000000000..0667d1e8bb140 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature_Ed25519Signature.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Ed25519Signature } from './Ed25519Signature'; + +export type TransactionSignature_Ed25519Signature = ({ + type: string; +} & Ed25519Signature); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature_MultiAgentSignature.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature_MultiAgentSignature.ts new file mode 100644 index 0000000000000..e74d911d9fb63 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature_MultiAgentSignature.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MultiAgentSignature } from './MultiAgentSignature'; + +export type TransactionSignature_MultiAgentSignature = ({ + type: string; +} & MultiAgentSignature); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature_MultiEd25519Signature.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature_MultiEd25519Signature.ts new file mode 100644 index 0000000000000..1f6dc58ada495 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionSignature_MultiEd25519Signature.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { MultiEd25519Signature } from './MultiEd25519Signature'; + +export type TransactionSignature_MultiEd25519Signature = ({ + type: string; +} & MultiEd25519Signature); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_BlockMetadataTransaction.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_BlockMetadataTransaction.ts new file mode 100644 index 0000000000000..82067d7479ccf --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_BlockMetadataTransaction.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { BlockMetadataTransaction } from './BlockMetadataTransaction'; + +export type Transaction_BlockMetadataTransaction = ({ + type: string; +} & BlockMetadataTransaction); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_GenesisTransaction.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_GenesisTransaction.ts new file mode 100644 index 0000000000000..3bb44fd02883b --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_GenesisTransaction.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { GenesisTransaction } from './GenesisTransaction'; + +export type Transaction_GenesisTransaction = ({ + type: string; +} & GenesisTransaction); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_PendingTransaction.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_PendingTransaction.ts new file mode 100644 index 0000000000000..c593c76424f81 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_PendingTransaction.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PendingTransaction } from './PendingTransaction'; + +export type Transaction_PendingTransaction = ({ + type: string; +} & PendingTransaction); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_StateCheckpointTransaction.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_StateCheckpointTransaction.ts new file mode 100644 index 0000000000000..90eeda7001b0f --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_StateCheckpointTransaction.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { StateCheckpointTransaction } from './StateCheckpointTransaction'; + +export type Transaction_StateCheckpointTransaction = ({ + type: string; +} & StateCheckpointTransaction); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_UserTransaction.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_UserTransaction.ts new file mode 100644 index 0000000000000..8feeed7c2233c --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/Transaction_UserTransaction.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { UserTransaction } from './UserTransaction'; + +export type Transaction_UserTransaction = ({ + type: string; +} & UserTransaction); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionsBatchSingleSubmissionFailure.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionsBatchSingleSubmissionFailure.ts new file mode 100644 index 0000000000000..98f81af611b51 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionsBatchSingleSubmissionFailure.ts @@ -0,0 +1,17 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { AptosError } from './AptosError'; + +/** + * Information telling which batch submission transactions failed + */ +export type TransactionsBatchSingleSubmissionFailure = { + error: AptosError; + /** + * The index of which transaction failed, same as submission order + */ + transaction_index: number; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionsBatchSubmissionResult.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionsBatchSubmissionResult.ts new file mode 100644 index 0000000000000..43c5d62f8dfba --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/TransactionsBatchSubmissionResult.ts @@ -0,0 +1,18 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TransactionsBatchSingleSubmissionFailure } from './TransactionsBatchSingleSubmissionFailure'; + +/** + * Batch transaction submission result + * + * Tells which transactions failed + */ +export type TransactionsBatchSubmissionResult = { + /** + * Summary of the failed transactions + */ + transaction_failures: Array; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/U128.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/U128.ts new file mode 100644 index 0000000000000..d391d4afb9c24 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/U128.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * A string containing a 128-bit unsigned integer. + * + * We represent u128 values as a string to ensure compatibility with languages such + * as JavaScript that do not parse u128s in JSON natively. + * + */ +export type U128 = string; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/U256.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/U256.ts new file mode 100644 index 0000000000000..092d56d8eb4be --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/U256.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * A string containing a 256-bit unsigned integer. + * + * We represent u256 values as a string to ensure compatibility with languages such + * as JavaScript that do not parse u256s in JSON natively. + * + */ +export type U256 = string; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/U64.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/U64.ts new file mode 100644 index 0000000000000..f8f542c609edb --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/U64.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * A string containing a 64-bit unsigned integer. + * + * We represent u64 values as a string to ensure compatibility with languages such + * as JavaScript that do not parse u64s in JSON natively. + * + */ +export type U64 = string; diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/UserTransaction.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/UserTransaction.ts new file mode 100644 index 0000000000000..4aa4e67a37ce3 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/UserTransaction.ts @@ -0,0 +1,49 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { Event } from './Event'; +import type { HashValue } from './HashValue'; +import type { TransactionPayload } from './TransactionPayload'; +import type { TransactionSignature } from './TransactionSignature'; +import type { U64 } from './U64'; +import type { WriteSetChange } from './WriteSetChange'; + +/** + * A transaction submitted by a user to change the state of the blockchain + */ +export type UserTransaction = { + version: U64; + hash: HashValue; + state_change_hash: HashValue; + event_root_hash: HashValue; + state_checkpoint_hash?: HashValue; + gas_used: U64; + /** + * Whether the transaction was successful + */ + success: boolean; + /** + * The VM status of the transaction, can tell useful information in a failure + */ + vm_status: string; + accumulator_root_hash: HashValue; + /** + * Final state of resources changed by the transaction + */ + changes: Array; + sender: Address; + sequence_number: U64; + max_gas_amount: U64; + gas_unit_price: U64; + expiration_timestamp_secs: U64; + payload: TransactionPayload; + signature?: TransactionSignature; + /** + * Events generated by the transaction + */ + events: Array; + timestamp: U64; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/VersionedEvent.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/VersionedEvent.ts new file mode 100644 index 0000000000000..c9934c820268f --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/VersionedEvent.ts @@ -0,0 +1,22 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EventGuid } from './EventGuid'; +import type { MoveType } from './MoveType'; +import type { U64 } from './U64'; + +/** + * An event from a transaction with a version + */ +export type VersionedEvent = { + version: U64; + guid: EventGuid; + sequence_number: U64; + type: MoveType; + /** + * The JSON representation of the event + */ + data: any; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/ViewRequest.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/ViewRequest.ts new file mode 100644 index 0000000000000..5fa124b8ef5fa --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/ViewRequest.ts @@ -0,0 +1,22 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EntryFunctionId } from './EntryFunctionId'; +import type { MoveType } from './MoveType'; + +/** + * View request for the Move View Function API + */ +export type ViewRequest = { + function: EntryFunctionId; + /** + * Type arguments of the function + */ + type_arguments: Array; + /** + * Arguments of the function + */ + arguments: Array; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteModule.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteModule.ts new file mode 100644 index 0000000000000..b032cc9136124 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteModule.ts @@ -0,0 +1,19 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { MoveModuleBytecode } from './MoveModuleBytecode'; + +/** + * Write a new module or update an existing one + */ +export type WriteModule = { + address: Address; + /** + * State key hash + */ + state_key_hash: string; + data: MoveModuleBytecode; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteResource.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteResource.ts new file mode 100644 index 0000000000000..2bccf200e8ff8 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteResource.ts @@ -0,0 +1,19 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { MoveResource } from './MoveResource'; + +/** + * Write a resource or update an existing one + */ +export type WriteResource = { + address: Address; + /** + * State key hash + */ + state_key_hash: string; + data: MoveResource; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSet.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSet.ts new file mode 100644 index 0000000000000..ea06d3e6355aa --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSet.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { WriteSet_DirectWriteSet } from './WriteSet_DirectWriteSet'; +import type { WriteSet_ScriptWriteSet } from './WriteSet_ScriptWriteSet'; + +/** + * The associated writeset with a payload + */ +export type WriteSet = (WriteSet_ScriptWriteSet | WriteSet_DirectWriteSet); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange.ts new file mode 100644 index 0000000000000..dfcc2cb630beb --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange.ts @@ -0,0 +1,16 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { WriteSetChange_DeleteModule } from './WriteSetChange_DeleteModule'; +import type { WriteSetChange_DeleteResource } from './WriteSetChange_DeleteResource'; +import type { WriteSetChange_DeleteTableItem } from './WriteSetChange_DeleteTableItem'; +import type { WriteSetChange_WriteModule } from './WriteSetChange_WriteModule'; +import type { WriteSetChange_WriteResource } from './WriteSetChange_WriteResource'; +import type { WriteSetChange_WriteTableItem } from './WriteSetChange_WriteTableItem'; + +/** + * A final state change of a transaction on a resource or module + */ +export type WriteSetChange = (WriteSetChange_DeleteModule | WriteSetChange_DeleteResource | WriteSetChange_DeleteTableItem | WriteSetChange_WriteModule | WriteSetChange_WriteResource | WriteSetChange_WriteTableItem); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_DeleteModule.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_DeleteModule.ts new file mode 100644 index 0000000000000..3c4252969f572 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_DeleteModule.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DeleteModule } from './DeleteModule'; + +export type WriteSetChange_DeleteModule = ({ + type: string; +} & DeleteModule); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_DeleteResource.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_DeleteResource.ts new file mode 100644 index 0000000000000..bfb9924b661a3 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_DeleteResource.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DeleteResource } from './DeleteResource'; + +export type WriteSetChange_DeleteResource = ({ + type: string; +} & DeleteResource); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_DeleteTableItem.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_DeleteTableItem.ts new file mode 100644 index 0000000000000..d82340222522d --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_DeleteTableItem.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DeleteTableItem } from './DeleteTableItem'; + +export type WriteSetChange_DeleteTableItem = ({ + type: string; +} & DeleteTableItem); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_WriteModule.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_WriteModule.ts new file mode 100644 index 0000000000000..924d279b8c26f --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_WriteModule.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { WriteModule } from './WriteModule'; + +export type WriteSetChange_WriteModule = ({ + type: string; +} & WriteModule); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_WriteResource.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_WriteResource.ts new file mode 100644 index 0000000000000..e7d4f6be56188 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_WriteResource.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { WriteResource } from './WriteResource'; + +export type WriteSetChange_WriteResource = ({ + type: string; +} & WriteResource); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_WriteTableItem.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_WriteTableItem.ts new file mode 100644 index 0000000000000..087c9765a7e62 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetChange_WriteTableItem.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { WriteTableItem } from './WriteTableItem'; + +export type WriteSetChange_WriteTableItem = ({ + type: string; +} & WriteTableItem); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetPayload.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetPayload.ts new file mode 100644 index 0000000000000..c15ea62f22d9c --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSetPayload.ts @@ -0,0 +1,13 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { WriteSet } from './WriteSet'; + +/** + * A writeset payload, used only for genesis + */ +export type WriteSetPayload = { + write_set: WriteSet; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSet_DirectWriteSet.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSet_DirectWriteSet.ts new file mode 100644 index 0000000000000..552e98d4833a5 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSet_DirectWriteSet.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DirectWriteSet } from './DirectWriteSet'; + +export type WriteSet_DirectWriteSet = ({ + type: string; +} & DirectWriteSet); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSet_ScriptWriteSet.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSet_ScriptWriteSet.ts new file mode 100644 index 0000000000000..e7304a8a8431d --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteSet_ScriptWriteSet.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ScriptWriteSet } from './ScriptWriteSet'; + +export type WriteSet_ScriptWriteSet = ({ + type: string; +} & ScriptWriteSet); + diff --git a/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteTableItem.ts b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteTableItem.ts new file mode 100644 index 0000000000000..6fbaa2b02a3b2 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/generated/models/WriteTableItem.ts @@ -0,0 +1,18 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { DecodedTableData } from './DecodedTableData'; +import type { HexEncodedBytes } from './HexEncodedBytes'; + +/** + * Change set to write a table item + */ +export type WriteTableItem = { + state_key_hash: string; + handle: HexEncodedBytes; + key: HexEncodedBytes; + value: HexEncodedBytes; + data?: DecodedTableData; +}; + diff --git a/ecosystem/typescript/sdk_v2/src/types/index.ts b/ecosystem/typescript/sdk_v2/src/types/index.ts new file mode 100644 index 0000000000000..6f6e111967820 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/types/index.ts @@ -0,0 +1 @@ +export * as Gen from "./generated"; diff --git a/ecosystem/typescript/sdk_v2/src/utils/api-endpoints.ts b/ecosystem/typescript/sdk_v2/src/utils/api-endpoints.ts new file mode 100644 index 0000000000000..3b317b3c98fb5 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/utils/api-endpoints.ts @@ -0,0 +1,28 @@ +export const NetworkToIndexerAPI: Record = { + mainnet: "https://indexer.mainnet.aptoslabs.com/v1/graphql", + testnet: "https://indexer-testnet.staging.gcp.aptosdev.com/v1/graphql", + devnet: "https://indexer-devnet.staging.gcp.aptosdev.com/v1/graphql", +}; + +export const NetworkToNodeAPI: Record = { + mainnet: "https://fullnode.mainnet.aptoslabs.com/v1", + testnet: "https://fullnode.testnet.aptoslabs.com/v1", + devnet: "https://fullnode.devnet.aptoslabs.com/v1", +}; + +export const NodeAPIToNetwork: Record = { + "https://fullnode.mainnet.aptoslabs.com/v1": "mainnet", + "https://fullnode.testnet.aptoslabs.com/v1": "testnet", + "https://fullnode.devnet.aptoslabs.com/v1": "devnet", +}; + +export enum Network { + MAINNET = "mainnet", + TESTNET = "testnet", + DEVNET = "devnet", +} + +export interface CustomEndpoints { + fullnodeUrl: string; + indexerUrl?: string; +} diff --git a/ecosystem/typescript/sdk_v2/src/utils/const.ts b/ecosystem/typescript/sdk_v2/src/utils/const.ts new file mode 100644 index 0000000000000..e6dfc747a9cf7 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/utils/const.ts @@ -0,0 +1,13 @@ +import { Network } from "./api-endpoints"; + +export const NODE_URL = process.env.APTOS_NODE_URL!; +export const APTOS_FAUCET_URL = process.env.APTOS_FAUCET_URL!; + +export const DEFAULT_NETWORK = Network.TESTNET; +export const DEFAULT_FAUCET = Network.TESTNET; + +export const DEFAULT_MAX_GAS_AMOUNT = 200000; +// Transaction expire timestamp +export const DEFAULT_TXN_EXP_SEC_FROM_NOW = 20; +// How long does SDK wait for txhn to finish +export const DEFAULT_TXN_TIMEOUT_SEC = 20; diff --git a/ecosystem/typescript/sdk_v2/src/utils/hd-key.ts b/ecosystem/typescript/sdk_v2/src/utils/hd-key.ts new file mode 100644 index 0000000000000..32ffd932472a0 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/utils/hd-key.ts @@ -0,0 +1,79 @@ +import nacl from "tweetnacl"; +import { hmac } from "@noble/hashes/hmac"; +import { sha512 } from "@noble/hashes/sha512"; +import { hexToBytes } from "@noble/hashes/utils"; + +type Hex = string; +type Path = string; + +type Keys = { + key: Uint8Array; + chainCode: Uint8Array; +}; + +const pathRegex = /^m(\/[0-9]+')+$/; + +const replaceDerive = (val: string): string => val.replace("'", ""); + +const HMAC_KEY = "ed25519 seed"; +const HARDENED_OFFSET = 0x80000000; + +export const getMasterKeyFromSeed = (seed: Hex): Keys => { + const h = hmac.create(sha512, HMAC_KEY); + const I = h.update(hexToBytes(seed)).digest(); + const IL = I.slice(0, 32); + const IR = I.slice(32); + return { + key: IL, + chainCode: IR, + }; +}; + +export const CKDPriv = ({ key, chainCode }: Keys, index: number): Keys => { + const buffer = new ArrayBuffer(4); + new DataView(buffer).setUint32(0, index); + const indexBytes = new Uint8Array(buffer); + const zero = new Uint8Array([0]); + const data = new Uint8Array([...zero, ...key, ...indexBytes]); + + const I = hmac.create(sha512, chainCode).update(data).digest(); + const IL = I.slice(0, 32); + const IR = I.slice(32); + return { + key: IL, + chainCode: IR, + }; +}; + +export const getPublicKey = (privateKey: Uint8Array, withZeroByte = true): Uint8Array => { + const keyPair = nacl.sign.keyPair.fromSeed(privateKey); + const signPk = keyPair.secretKey.subarray(32); + const zero = new Uint8Array([0]); + return withZeroByte ? new Uint8Array([...zero, ...signPk]) : signPk; +}; + +export const isValidPath = (path: string): boolean => { + if (!pathRegex.test(path)) { + return false; + } + return !path + .split("/") + .slice(1) + .map(replaceDerive) + .some(Number.isNaN as any); +}; + +export const derivePath = (path: Path, seed: Hex, offset = HARDENED_OFFSET): Keys => { + if (!isValidPath(path)) { + throw new Error("Invalid derivation path"); + } + + const { key, chainCode } = getMasterKeyFromSeed(seed); + const segments = path + .split("/") + .slice(1) + .map(replaceDerive) + .map((el) => parseInt(el, 10)); + + return segments.reduce((parentKeys, segment) => CKDPriv(parentKeys, segment + offset), { key, chainCode }); +}; diff --git a/ecosystem/typescript/sdk_v2/src/utils/helpers.ts b/ecosystem/typescript/sdk_v2/src/utils/helpers.ts new file mode 100644 index 0000000000000..351b6e1aaf2d6 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/utils/helpers.ts @@ -0,0 +1,43 @@ +import { AptosApiError } from "../client/types"; + +export async function sleep(timeMs: number): Promise { + return new Promise((resolve) => { + setTimeout(resolve, timeMs); + }); +} + +export class ApiError extends Error { + constructor( + public readonly status: number, + public readonly message: string, + public readonly errorCode?: string, + public readonly vmErrorCode?: string, + ) { + super(message); + } +} + +export function parseApiError(target: unknown, propertyKey: string, descriptor: PropertyDescriptor) { + const childFunction = descriptor.value; + // eslint-disable-next-line no-param-reassign + descriptor.value = async function wrapper(...args: any[]) { + try { + // We need to explicitly await here so that the function is called and + // potentially throws an error. If we just return without awaiting, the + // promise is returned directly and the catch block cannot trigger. + const res = await childFunction.apply(this, [...args]); + return res; + } catch (e) { + if (e instanceof AptosApiError) { + throw new ApiError( + e.status, + JSON.stringify({ message: e.message, ...e.data }), + e.data?.error_code, + e.data?.vm_error_code, + ); + } + throw e; + } + }; + return descriptor; +} diff --git a/ecosystem/typescript/sdk_v2/src/utils/hex_string.ts b/ecosystem/typescript/sdk_v2/src/utils/hex_string.ts new file mode 100644 index 0000000000000..f44eda9cd3bb8 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/utils/hex_string.ts @@ -0,0 +1,122 @@ +// Copyright © Aptos Foundation +// SPDX-License-Identifier: Apache-2.0 + +import { bytesToHex, hexToBytes } from "@noble/hashes/utils"; +import { HexEncodedBytes } from "../types/generated"; + +// eslint-disable-next-line no-use-before-define +export type MaybeHexString = HexString | string | HexEncodedBytes; + +/** + * A util class for working with hex strings. + * Hex strings are strings that are prefixed with `0x` + */ +export class HexString { + /// We want to make sure this hexString has the `0x` hex prefix + private readonly hexString: string; + + /** + * Creates new hex string from Buffer + * @param buffer A buffer to convert + * @returns New HexString + */ + static fromBuffer(buffer: Uint8Array): HexString { + return HexString.fromUint8Array(buffer); + } + + /** + * Creates new hex string from Uint8Array + * @param arr Uint8Array to convert + * @returns New HexString + */ + static fromUint8Array(arr: Uint8Array): HexString { + return new HexString(bytesToHex(arr)); + } + + /** + * Ensures `hexString` is instance of `HexString` class + * @param hexString String to check + * @returns New HexString if `hexString` is regular string or `hexString` if it is HexString instance + * @example + * ``` + * const regularString = "string"; + * const hexString = new HexString("string"); // "0xstring" + * HexString.ensure(regularString); // "0xstring" + * HexString.ensure(hexString); // "0xstring" + * ``` + */ + static ensure(hexString: MaybeHexString): HexString { + if (typeof hexString === "string") { + return new HexString(hexString); + } + return hexString; + } + + /** + * Creates new HexString instance from regular string. If specified string already starts with "0x" prefix, + * it will not add another one + * @param hexString String to convert + * @example + * ``` + * const string = "string"; + * new HexString(string); // "0xstring" + * ``` + */ + constructor(hexString: string | HexEncodedBytes) { + if (hexString.startsWith("0x")) { + this.hexString = hexString; + } else { + this.hexString = `0x${hexString}`; + } + } + + /** + * Getter for inner hexString + * @returns Inner hex string + */ + hex(): string { + return this.hexString; + } + + /** + * Getter for inner hexString without prefix + * @returns Inner hex string without prefix + * @example + * ``` + * const hexString = new HexString("string"); // "0xstring" + * hexString.noPrefix(); // "string" + * ``` + */ + noPrefix(): string { + return this.hexString.slice(2); + } + + /** + * Overrides default `toString` method + * @returns Inner hex string + */ + toString(): string { + return this.hex(); + } + + /** + * Trimmes extra zeroes in the begining of a string + * @returns Inner hexString without leading zeroes + * @example + * ``` + * new HexString("0x000000string").toShortString(); // result = "0xstring" + * ``` + */ + toShortString(): string { + const trimmed = this.hexString.replace(/^0x0*/, ""); + return `0x${trimmed}`; + } + + /** + * Converts hex string to a Uint8Array + * @returns Uint8Array from inner hexString without prefix + */ + toUint8Array(): Uint8Array { + return Uint8Array.from(hexToBytes(this.noPrefix())); + } +} diff --git a/ecosystem/typescript/sdk_v2/src/utils/index.ts b/ecosystem/typescript/sdk_v2/src/utils/index.ts new file mode 100644 index 0000000000000..4551c622b3305 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/utils/index.ts @@ -0,0 +1,7 @@ +export * from "./api-endpoints"; +export * from "./const"; +export * from "./memoize-decorator"; +export * from "./hd-key"; +export * from "./helpers"; +export * from "./pagination_helpers"; +export * from "./hex_string"; diff --git a/ecosystem/typescript/sdk_v2/src/utils/memoize-decorator.ts b/ecosystem/typescript/sdk_v2/src/utils/memoize-decorator.ts new file mode 100644 index 0000000000000..291c87819b772 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/utils/memoize-decorator.ts @@ -0,0 +1,151 @@ +/** + * Credits to https://github.com/darrylhodgins/typescript-memoize + */ + +/* eslint-disable no-param-reassign */ +/* eslint-disable no-restricted-syntax */ + +interface MemoizeArgs { + // ttl in milliseconds for cached items. After `ttlMs`, cached items are evicted automatically. If no `ttlMs` + // is provided, cached items won't get auto-evicted. + ttlMs?: number; + // produces the cache key based on `args`. + hashFunction?: boolean | ((...args: any[]) => any); + // cached items can be taged with `tags`. `tags` can be used to evict cached items + tags?: string[]; +} + +export function Memoize(args?: MemoizeArgs | MemoizeArgs["hashFunction"]) { + let hashFunction: MemoizeArgs["hashFunction"]; + let ttlMs: MemoizeArgs["ttlMs"]; + let tags: MemoizeArgs["tags"]; + + if (typeof args === "object") { + hashFunction = args.hashFunction; + ttlMs = args.ttlMs; + tags = args.tags; + } else { + hashFunction = args; + } + + return (target: Object, propertyKey: string, descriptor: TypedPropertyDescriptor) => { + if (descriptor.value != null) { + descriptor.value = getNewFunction(descriptor.value, hashFunction, ttlMs, tags); + } else if (descriptor.get != null) { + descriptor.get = getNewFunction(descriptor.get, hashFunction, ttlMs, tags); + } else { + throw new Error("Only put a Memoize() decorator on a method or get accessor."); + } + }; +} + +export function MemoizeExpiring(ttlMs: number, hashFunction?: MemoizeArgs["hashFunction"]) { + return Memoize({ + ttlMs, + hashFunction, + }); +} + +const clearCacheTagsMap: Map[]> = new Map(); + +export function clear(tags: string[]): number { + const cleared: Set> = new Set(); + for (const tag of tags) { + const maps = clearCacheTagsMap.get(tag); + if (maps) { + for (const mp of maps) { + if (!cleared.has(mp)) { + mp.clear(); + cleared.add(mp); + } + } + } + } + return cleared.size; +} + +function getNewFunction( + originalMethod: () => void, + hashFunction?: MemoizeArgs["hashFunction"], + ttlMs: number = 0, + tags?: MemoizeArgs["tags"], +) { + const propMapName = Symbol("__memoized_map__"); + + // The function returned here gets called instead of originalMethod. + // eslint-disable-next-line func-names + return function (...args: any[]) { + let returnedValue: any; + + // @ts-ignore + const that: any = this; + + // Get or create map + // eslint-disable-next-line no-prototype-builtins + if (!that.hasOwnProperty(propMapName)) { + Object.defineProperty(that, propMapName, { + configurable: false, + enumerable: false, + writable: false, + value: new Map(), + }); + } + const myMap: Map = that[propMapName]; + + if (Array.isArray(tags)) { + for (const tag of tags) { + if (clearCacheTagsMap.has(tag)) { + clearCacheTagsMap.get(tag)!.push(myMap); + } else { + clearCacheTagsMap.set(tag, [myMap]); + } + } + } + + if (hashFunction || args.length > 0 || ttlMs > 0) { + let hashKey: any; + + // If true is passed as first parameter, will automatically use every argument, passed to string + if (hashFunction === true) { + hashKey = args.map((a) => a.toString()).join("!"); + } else if (hashFunction) { + hashKey = hashFunction.apply(that, args); + } else { + // eslint-disable-next-line prefer-destructuring + hashKey = args[0]; + } + + const timestampKey = `${hashKey}__timestamp`; + let isExpired: boolean = false; + if (ttlMs > 0) { + if (!myMap.has(timestampKey)) { + // "Expired" since it was never called before + isExpired = true; + } else { + const timestamp = myMap.get(timestampKey); + isExpired = Date.now() - timestamp > ttlMs; + } + } + + if (myMap.has(hashKey) && !isExpired) { + returnedValue = myMap.get(hashKey); + } else { + returnedValue = originalMethod.apply(that, args as any); + myMap.set(hashKey, returnedValue); + if (ttlMs > 0) { + myMap.set(timestampKey, Date.now()); + } + } + } else { + const hashKey = that; + if (myMap.has(hashKey)) { + returnedValue = myMap.get(hashKey); + } else { + returnedValue = originalMethod.apply(that, args as any); + myMap.set(hashKey, returnedValue); + } + } + + return returnedValue; + }; +} diff --git a/ecosystem/typescript/sdk_v2/src/utils/pagination_helpers.ts b/ecosystem/typescript/sdk_v2/src/utils/pagination_helpers.ts new file mode 100644 index 0000000000000..af795556d834f --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/utils/pagination_helpers.ts @@ -0,0 +1,44 @@ +import { get } from "../client"; +import { ClientConfig } from "../client/types"; + +/// This function is a helper for paginating using a function wrapping an API +export async function paginateWithCursor, Res extends any[]>(options: { + url: string; + endpoint?: string; + body?: any; + params?: Req; + originMethod?: string; + overrides?: ClientConfig; +}): Promise { + const out = []; + let cursor: string | undefined; + const requestParams = options.params as Req & { start?: string }; + // eslint-disable-next-line no-constant-condition + while (true) { + requestParams.start = cursor; + // eslint-disable-next-line no-await-in-loop + const response = await get({ + url: options.url, + endpoint: options.endpoint, + params: requestParams, + originMethod: options.originMethod, + overrides: options.overrides, + }); + // eslint-disable-next-line no-underscore-dangle + /** + * the cursor is a "state key" from the API prespective. Client + * should not need to "care" what it represents but just use it + * to query the next chunck of data. + */ + cursor = response.headers["x-aptos-cursor"]; + // Now that we have the cursor (if any), we remove the headers before + // adding these to the output of this function. + // eslint-disable-next-line no-underscore-dangle + delete (response as any).headers; + out.push(...response.data); + if (cursor === null || cursor === undefined) { + break; + } + } + return out as any; +} diff --git a/ecosystem/typescript/sdk_v2/src/version.ts b/ecosystem/typescript/sdk_v2/src/version.ts new file mode 100644 index 0000000000000..3f0486f8960ce --- /dev/null +++ b/ecosystem/typescript/sdk_v2/src/version.ts @@ -0,0 +1,2 @@ +// hardcoded for now, we would want to have it injected dynamically +export const VERSION = "2.0.0"; diff --git a/ecosystem/typescript/sdk_v2/tsconfig.json b/ecosystem/typescript/sdk_v2/tsconfig.json new file mode 100644 index 0000000000000..25461ead9d21a --- /dev/null +++ b/ecosystem/typescript/sdk_v2/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "allowJs": true, + "declaration": true, + "declarationDir": "types", + "declarationMap": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "node", + "noImplicitAny": true, + "outDir": "./dist", + "sourceMap": true, + "strict": true, + "target": "es6" + }, + "include": ["src", "tests"] +} + +/** + "forceConsistentCasingInFileNames": true, + "downlevelIteration": true, + "importHelpers": true, + "noFallthroughCasesInSwitch": true, + "noImplicitReturns": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "stripInternal": true, + "typeRoots": ["node_modules/@types"] +**/ diff --git a/ecosystem/typescript/sdk_v2/tsup.config.js b/ecosystem/typescript/sdk_v2/tsup.config.js new file mode 100644 index 0000000000000..b02abb2743157 --- /dev/null +++ b/ecosystem/typescript/sdk_v2/tsup.config.js @@ -0,0 +1,8 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts"], + splitting: false, + sourcemap: true, + target: "es2018", +});