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", +});